Meerkats AI
← All posts
Tracking2 Jun 20269 min read

Meta CAPI for Shopify: the tracking setup that survives iOS, ad blockers and gateway redirects

The browser pixel now misses 20–40% of your conversions — in India, payment-gateway redirects make it worse. What the Conversions API actually is, the setup options, and how to verify it's working.

In short
  • Browser pixels die to iOS ATT, ad blockers, Safari/Firefox tracking prevention — and in India, to the checkout redirect through Razorpay/PayU-style gateways.
  • CAPI sends conversions server-to-server, deduplicated against the pixel via a shared event_id. Better match quality → better bidding → measurably lower CPA.
  • CAPI fixes signal loss, not attribution inflation. Meta hears about more of your real orders — it still claims credit its own way. Reconciliation remains your job.

Somewhere between a fifth and two-fifths of your real conversions never reach Meta's pixel. Each miss hurts twice: reporting undercounts (you kill working ads), and the bidding algorithm learns from a biased sample (it optimises toward users whose browsers happen to be trackable). The Conversions API is the fix — and it's now table stakes, not an optimisation.

How the signal actually dies

KillerMechanismWho it hits
iOS ATT (2021→)Opt-outs strip identifiers; Meta models the gapAll iOS traffic
Safari ITP / Firefox ETPCookies capped or partitioned; pixel loses continuity~15–25% of Indian D2C traffic, more for premium audiences
Ad blockersPixel script never loads5–15%, skews to high-income users
Payment-gateway redirectsCheckout hops to Razorpay/PayU/bank OTP page and back; the purchase event fires on a page the pixel never sees — or never firesChronically underrated in India — hits COD-verification and UPI flows too

What CAPI is (one paragraph, no mystique)

Instead of the customer's browser telling Meta "purchase happened," your server does — an HTTP call from your backend (or Shopify's) carrying the event plus hashed identifiers (email, phone). No browser, so nothing to block, expire or lose in a redirect. The order confirmed in your system is the event Meta hears about, including COD orders confirmed after the browser session ended.

The rule that makes or breaks it: deduplication

Dedupsame event_id sent by pixel AND server → Meta keeps one; different/missing ids → you just doubled your conversions

Run pixel and CAPI together (redundancy is the design), but every event needs one shared event_id. Broken dedup silently inflates results and mis-trains bidding — the failure mode where "CAPI made our ROAS better" actually means "we started counting everything twice."

Setup options for a Shopify brand

OptionEffortWhat you getWatch out
Shopify's native Meta integration (Max level)HoursPixel + CAPI + dedup handled for standard eventsCustom events limited; verify it's set to server-side max, not pixel-only
Tag-manager server container (sGTM)Days–weeksFull control, one server pipe feeding Meta + Google + othersNeeds someone to own the container; misconfig = silent double-counting
Specialist tools (Elevar-class)DaysServer-side + persisted UTMs/click IDs into order attributes — the attribution join for freeSubscription cost; audit what they enrich

How to verify it's actually working

  • Events Manager → your pixel → Overview: purchase events should show "Browser · Server" with a healthy dedup rate — server-only or browser-only rows are the tell that one leg is down.
  • Event Match Quality (EMQ): aim 6+ on purchases. In phone-first India, hashed phone numbers move EMQ more than email — send both.
  • The reconciliation check: Meta-reported purchases for a week vs Shopify orders for the same week. CAPI done right narrows the count gap (signal recovered); the revenue-credit gap will remain — that's attribution, not plumbing.
What CAPI will not do
It won't make platform ROAS honest. Meta now hears about more of your real orders — it still applies 7-day-click/1-day-view credit, still claims returning customers, still overlaps with Google. Expect reported conversions to rise after a correct CAPI rollout (recovered signal), then hold the platform to the same reconciliation standard as before. Better plumbing, same courtroom.

Questions people ask

Will CAPI lower my CPA?
Indirectly and modestly: better match quality gives the bidder a truer sample to learn from. Case studies claiming 20–30% CPA drops usually bundle other changes; expect measurable-but-humble, biggest where signal loss was worst (iOS-heavy, premium audiences).
Do I still need the browser pixel?
Yes — redundancy plus browser-context signals (source page, device) that servers lack. The pair with dedup outperforms either alone.
Does this help with COD orders?
Meaningfully — you can fire the purchase server-side on confirmation (or even post-verification), so orders the browser never completed still train bidding. Some brands go further and only send verified orders, teaching Meta to avoid RTO-prone traffic.
What about Google?
Same concept: Enhanced Conversions / server-side uploads with hashed identifiers. If you're building the server container anyway, feed both platforms from the one pipe.
Is any of this a privacy problem?
Identifiers are SHA-256 hashed before sending, and consent obligations under the DPDP Act apply to the data collection itself regardless of transport. CAPI changes the delivery path, not your consent duties — keep the banner and policy honest.

Your business is unique. Your AI should work that way.

Meerkats is the unified context layer for your AI systems. Connect your ad platforms, marketplaces and store, and build your first workflow on top.