iOS 14.5 changed the landscape for Meta advertising permanently. Apple's App Tracking Transparency framework, combined with Safari's Intelligent Tracking Prevention, means that browser-side Meta Pixel events are now missing 30–60% of actual conversions for Indian D2C stores with any significant iOS traffic. For brands in categories like fashion, beauty, and premium electronics — where iOS device penetration among buyers skews high — the under-reporting is at the severe end of that range.

The Meta Conversions API (CAPI) is the server-side solution: instead of relying entirely on the browser pixel to fire an event when a purchase happens, CAPI sends the same event directly from your server to Meta's API, bypassing browser restrictions entirely. The result is dramatically improved attribution accuracy, better campaign optimisation, and ROAS figures that reflect what is actually happening rather than the 40–60% of conversions that survive browser-level tracking.

This guide covers the complete setup for both Shopify and WooCommerce stores in India, including the India-specific considerations that generic CAPI tutorials miss.

Before You Start: What You Need

  • A Meta Business Manager account with your ad account and pixel linked
  • Admin access to your Shopify store or WooCommerce/WordPress installation
  • Your Meta Pixel ID (found in Events Manager → Data Sources)
  • A Meta System User access token (generated in Business Settings → System Users)
  • For WooCommerce: FTP or cPanel access to your server (for plugin installation)
Why CAPI matters for Indian stores specifically:
iOS device share among Indian online buyers (premium D2C): 28–45%
Conversion under-reporting on browser pixel alone (iOS users): 30–60%
Expected ROAS improvement after CAPI implementation: 15–35%
Expected improvement in Meta's algorithm optimisation: significant (more signal = better audience targeting)
Source: Meta Business Help Centre + AdsSarthi account analysis 2025

Part 1: Shopify CAPI Setup — Step by Step

Shopify has native Meta integration that makes CAPI setup straightforward. The entire process takes approximately 15 minutes if you have your credentials ready.

1
Open Shopify Admin → Sales Channels → Facebook & Instagram. If you haven't already connected your Meta Business account, click "Start Setup" and follow the authentication flow. You'll need to log in with the Facebook account that has admin access to your Business Manager.
2
Navigate to Settings → Data sharing. You'll see three options: Standard, Enhanced, and Maximum. Select Maximum. This enables both the browser pixel and the Conversions API simultaneously, sending matched customer information (hashed email, phone, name) alongside conversion events for the highest possible match quality.
3
Select your Meta Pixel. If you have multiple pixels in your Business Manager, ensure you select the pixel that is linked to your active ad account. Connecting to the wrong pixel is a common mistake that results in events flowing to an unlinked pixel with no campaign optimisation benefit.
4
Enable customer data sharing. Shopify will ask for permission to share hashed customer data (email, phone number, first name, last name, city, state, country, zip code) with Meta for matching purposes. This data is hashed (SHA-256) before transmission — Meta never receives raw PII. Enable this for maximum event match quality.
5
Verify in Meta Events Manager. Go to Meta Events Manager → your pixel → Test Events. Place a test order on your Shopify store (you can use a ₹1 test product with a discount code). You should see both a browser pixel Purchase event AND a server-side Purchase event appear in the test panel. If you see only one, your CAPI is not correctly configured.
6
Check deduplication. In Events Manager → your pixel → Overview, look at the "Deduplicated Unique Events" metric. After a few days of live traffic, this should show that Meta is successfully deduplicating browser and server events (i.e., not counting the same purchase twice). If your purchase event count doubles immediately after CAPI setup without a genuine increase in sales, deduplication is failing.

India-Specific Shopify CAPI Note: Phone Number Matching

Indian stores have an advantage in CAPI event matching that is often underutilised: almost every Indian customer provides their mobile number at checkout (because delivery confirmation and COD calls require it). Meta's CAPI can use hashed phone numbers as a matching signal, and Indian phone numbers match Meta profiles at a very high rate because Indian users overwhelmingly registered their Meta accounts with the same mobile number they use for e-commerce.

Ensure your Shopify checkout requires phone number collection and that the Meta integration is passing the phone field as part of customer data sharing. In Shopify Settings → Checkout, set phone number to "Required" rather than "Optional" for maximum CAPI match quality.

Part 2: WooCommerce CAPI Setup — Step by Step

WooCommerce does not have a native Meta Conversions API integration. You have two implementation options: a plugin-based approach (easier, suitable for most stores) or a server-side custom implementation (more control, recommended for higher-volume stores).

Option A: Plugin-Based CAPI Setup

1
Install the official Meta for WooCommerce plugin. In WordPress Admin → Plugins → Add New, search for "Meta for WooCommerce" (published by Meta). Install and activate. This is Meta's official plugin and handles both browser pixel and CAPI events with built-in deduplication.
2
Connect your Meta Business account. In WooCommerce → Settings → Meta, click "Get Started" and authenticate with your Meta Business account. Select your Business Manager, Ad Account and Pixel. Ensure you select the correct pixel — the one linked to your active Indian ad account.
3
Generate a CAPI Access Token. In Meta Business Settings → System Users, create a system user with "Advertiser" role. Assign your pixel to this system user, then generate an access token with "ads_management" and "ads_read" permissions. Copy this token — you will need it in the next step.
4
Enter the Access Token in the plugin. Back in WooCommerce → Settings → Meta → Conversions API, paste your access token. The plugin will validate the connection and confirm which pixel events will be sent server-side.
5
Configure event deduplication. This is the critical step that most WooCommerce CAPI tutorials skip. The plugin uses an event_id parameter to match browser events with server events so Meta can deduplicate them. Ensure "Enable Automatic Event Deduplication" is checked in the plugin settings. Without this, every purchase will be reported twice — once by the browser pixel and once by CAPI — and your reported ROAS will be inflated by 20–40%.
6
Test with Meta's Test Events tool. In Meta Events Manager → Test Events, enter your website URL and browse through a test purchase. You should see both browser pixel events (labelled "Browser") and server events (labelled "Server") appearing with the same event_id — confirming deduplication is working correctly.

Option B: Custom Server-Side Implementation (Advanced)

For WooCommerce stores processing 100+ orders per day, a custom server-side implementation using Meta's Conversions API PHP SDK or REST API gives more control over event timing, data completeness and error handling. This approach requires developer resources but is more robust than the plugin for high-volume stores.

The key implementation points for Indian stores:

  • Send the Purchase event from the WooCommerce woocommerce_payment_complete hook (fires after confirmed payment), not from woocommerce_thankyou (which fires on page load and may be missed if a buyer closes their browser before the thank-you page loads)
  • For COD orders, send an InitiateCheckout event at order placement and a Purchase event only when the order status changes to "Delivered" in your WooCommerce order management — this avoids counting COD orders that are never accepted on delivery as completed purchases
  • Include the fbp (Facebook browser ID) cookie value in your server-side events to improve event match quality — this requires reading the _fbp cookie on the server side

Diagnosing Common CAPI Problems for Indian Stores

Problem: Purchase event count doubled after CAPI setup
Cause: Deduplication not enabled or event_id mismatch
Fix: Check that both browser pixel and CAPI events are passing the same event_id value. In Shopify, this is handled automatically. In WooCommerce plugin, ensure "Automatic Event Deduplication" is enabled. In custom implementations, generate a unique event_id for each event and pass it in both the browser pixel and the server event.
Problem: Low event match quality score in Events Manager
Cause: Missing or incorrectly formatted customer data in CAPI events
Fix: For Indian stores, the most impactful data points are hashed phone (format: +91XXXXXXXXXX before hashing) and hashed email. Ensure your CAPI implementation is passing both. Indian phone numbers must include the country code (+91) before hashing to match Meta profiles correctly — omitting +91 is the most common Indian CAPI matching failure.

Once CAPI is correctly configured, the downstream impact on your Meta campaign performance is significant. Meta's algorithm receives more complete purchase signal, which improves audience targeting accuracy and reduces cost per result over time. For a full picture of your attribution accuracy — including how CAPI interacts with your Google Ads tracking — see our guide on calculating true ROAS for Indian D2C brands. And to understand how CAPI-quality audiences improve lookalike performance, see our post on Meta lookalike audiences for Indian markets.

AdsSarthi's attribution layer builds on top of CAPI data to provide RTO-adjusted true ROAS reporting — the next step after fixing your tracking foundation. Get a free tracking audit to identify attribution gaps in your current setup.