Meta CAPI and Post-iOS 14 Tracking Setup for D2C Brands in India
A practical setup guide for Meta's Conversions API on Indian D2C stores: what to switch on, the COD and checkout traps, and how to check whether your agency got it right.
Why the pixel alone misses purchases
On Meta the ad is the targeting. The algorithm learns who to show your ads to from the purchases you send back. If those signals are missing or broken, it learns from the wrong people and your cost per purchase goes up, even when the ads themselves are fine.
The browser pixel loses signal in several ways. iPhone users can opt out of tracking. Some browsers and ad blockers stop pixel scripts from loading. People who tap an ad inside the Instagram app often check out in the in-app browser and then leave. In India there is one more problem: many stores send buyers to a third-party one-click checkout, and the pixel on that page often fires late, fires twice or does not fire at all.
The Conversions API, or CAPI, sends the same events from your server straight to Meta. It does not depend on the buyer's browser, so it fills many of these gaps.
What CAPI fixes and what it does not
CAPI runs alongside the pixel. It does not replace it. Meta matches the two copies of each event and keeps one.
- CAPI will not make Meta's reported numbers match your store's orders exactly. Nothing will.
- CAPI cannot help if the events you send are wrong. Bad data sent twice is still bad data.
| Browser pixel | Conversions API | |
|---|---|---|
| Where it fires | In the shopper's browser | From your store's server |
| Blocked by ad blockers and browser limits | Yes | No |
| Sees on-site behaviour like scrolls and views | Yes, well | Only what you send |
| Can send hashed email and phone | Only if captured on the page | Yes, from the order record |
| Can send events after checkout, like COD confirmation | No | Yes |
| Fixes iOS opt-outs fully | No | No, but it recovers more matches |
The setup on your store, step by step
For most hosted ecommerce stores, the platform's native Meta integration is the right starting point. Custom server code is only worth it when you have a headless store or a checkout the native integration cannot see.
- Connect the store through your store platform's official Meta sales channel or app, using the Business Manager that owns your ad account and dataset.
- Turn customer data sharing up to the highest setting. This switches on CAPI next to the pixel.
- Remove any old pixel code pasted into the theme, and switch off duplicate pixel apps. Two pixels firing the same Purchase is the most common mess we find.
- Open Events Manager and check that each key event (ViewContent, AddToCart, InitiateCheckout, Purchase) shows both Browser and Server as sources.
- Confirm deduplication: the browser and server copies of each event must share the same event_id. Events Manager flags it when they do not.
- Use the Test Events tool and place real test orders: one prepaid, one COD, one on mobile from inside the Instagram app.
- Check that each Purchase carries the order value and currency, and that the value matches the order total you want to optimise for.
The India-specific traps
Most setup guides are written for markets where everyone pays by card on the store's own checkout. Indian D2C stores rarely work like that.
- One-click checkout apps. If your checkout runs on a third-party app, decide which system sends Purchase. Either the store integration or the checkout app should send it, with a shared event_id. When both send it without dedup, Meta counts double and your ROAS looks better than it is.
- COD orders. A COD order is a promise, not revenue. Send Purchase when the order is placed so Meta gets the signal fast. If you call or message to confirm COD orders, send a separate server event for confirmed orders so you can watch quality, and only consider optimising for it once it has steady volume.
- Returns and RTO. Meta never removes a Purchase when an order is cancelled or returned to origin. In categories with high RTO, Meta's reported revenue will always sit above delivered revenue. Track delivered revenue alongside it.
- Phone-first customers. Many Indian buyers give a phone number but no real email. Send the phone number in full international format, with 91 in front and no spaces or leading zero, so it can match. Native integrations hash it before sending.
- WhatsApp and Instagram DM orders. Orders closed in chat never touch the pixel. If they are a real share of sales, they need to be sent to Meta from your order system, or Meta will undervalue the ads that started them.
- Consent. Hashing is not consent. India's Digital Personal Data Protection Act is coming into force in stages. Make sure your privacy notice says you share data with ad platforms, and get legal advice on consent for your store.
Event Match Quality: what to send
Event Match Quality is Meta's score out of 10 for how well it can tie your events to real Meta accounts. Purchase is the event that matters most, so check its score first. A low score usually means missing customer details, not a broken integration.
- Hashed email and phone on every Purchase.
- First name, last name, city, state and pin code from the shipping address.
- The fbp and fbc browser IDs, which carry the ad click through to the server event.
- Client IP address and user agent.
- An external ID, such as your customer ID, sent the same way every time.
Reading results after the 2026 attribution changes
Meta changed how it counts conversions twice this year, and many brands blamed their tracking for drops that were really reporting changes.
In January 2026 Meta removed the 7-day view and 28-day view windows from its reporting API, so reports and dashboards built on them stopped showing that data. From March 2026, click-through attribution counts only link clicks. Likes, saves, comments and shares moved into a separate 1-day engage-through window. The default setting is now 7-day click, 1-day engage-through and 1-day view.
Two older rules are also gone. You no longer rank eight events for iOS measurement, and you no longer need to verify your domain to set up events. If someone tells you to do either, their knowledge is out of date.
The practical answer is to stop expecting one source of truth. Compare Meta-reported purchases with your store's orders from the same days, watch whether the gap stays stable, and judge spend against total store revenue too. If the gap suddenly widens, check tracking. If it stays steady, the setup is working. More on splitting credit between platforms in Meta Ads vs Google Ads for D2C brands.
How to vet an agency on CAPI and tracking
Tracking is one of the few things you can check before you sign. Ask these questions on the first call. A good team answers them without having to look anything up. For the wider checklist, see how to choose a performance marketing agency.
| Ask | Good answer | Red flag |
|---|---|---|
| How do you check deduplication? | Shows Browser and Server on each event and explains event_id | "CAPI is on, so it is fine" |
| Which system sends Purchase with our checkout app? | Names one source and explains how they avoid double counting | Has not asked what checkout you use |
| How do you handle COD and RTO? | Separates placed, confirmed and delivered orders in reporting | Reports only Meta ROAS |
| What is our Purchase match quality and how will you raise it? | Lists the customer fields missing today | Promises a score |
| Why does Meta not match our store orders? | Explains attribution windows and modelled conversions | Promises the numbers will match |
| Who owns the pixel and dataset? | You do, in your Business Manager | Created in the agency's account |
A monthly tracking health check
Run this every month and after every checkout, theme or app change. Most tracking breaks quietly after a change someone made for an unrelated reason. For what else to expect from a Meta partner, read what a Meta ads agency for ecommerce should do.
- Purchase events in Events Manager are within a stable range of your store's orders.
- Both Browser and Server sources show on key events, with no dedup warnings.
- Purchase match quality has not dropped since the last check.
- No new apps or theme changes have added a second pixel.
- Test one prepaid and one COD order after any checkout or theme change.
- Delivered revenue is reported next to Meta-reported revenue, so RTO does not hide in ROAS.
How Monastic Media helps
One in-house team in Surat scripts, shoots and edits the ads videos and runs the Meta and Google campaigns they go into, so the people who see the numbers make the next ad. See our performance marketing
Read next
Questions
Is my store platform's built-in Meta integration enough for CAPI, or do I need server-side tagging?+
For most hosted stores the native integration with data sharing at the highest setting is enough. Custom server-side setups make sense for headless stores, custom checkouts or orders that close outside the store.
Why does Meta show more purchases than my store dashboard?+
Usually it is double counting. A theme pixel, an app pixel or a checkout app is sending Purchase without a shared event_id. Fix deduplication first, then compare again.
Should I optimise Meta campaigns for COD-confirmed orders instead of Purchase?+
Only once confirmed orders come in steady daily volume. Optimising on too few events slows learning, so many brands keep Purchase as the goal and track confirmed and delivered orders on the side.
Do I still need to set up Aggregated Event Measurement for iOS?+
No. Meta removed the eight-event ranking and the configuration tab, and domain verification is no longer needed for event setup.
Will CAPI bring back all the conversions lost after iOS 14?+
No. It recovers many events the browser misses and improves matching, but users who opted out are still partly modelled. Expect better signal, not perfect numbers.
Who should own the pixel and dataset when working with an agency?+
Your brand should, inside your own Business Manager, with the agency given partner access. That way your data and learning stay with you if you change agencies.

“MM helped us scale from 0 to ₹2.6 CR/month in just 6 months with clear communication and industry expertise!”Rakesh Naidu GM @ Naaptol
Ready to grow with one team?
Book a call. If we can help you hit your goals, we will tell you how; if we cannot, we will tell you that too.
