How to Send Shopify Purchases to Meta Conversions API
Shopify's native Meta integration is limited in ways that matter. Here is how to send purchases through CAPI with proper matching and deduplication.

Shopify has a native Meta integration and it takes about four clicks. For a lot of stores that is genuinely fine.
It becomes a problem when you start spending real money, because it gives you almost no control over what gets sent, and what gets sent is what determines whether Meta can find your customers.
What CAPI actually fixes
The browser Pixel is the weak link. Ad blockers stop it, Safari limits it, and consent choices restrict it. A meaningful chunk of your purchases never reach Meta at all.
The Conversions API sends the event from a server instead, so it arrives regardless of what the browser did. It also lets you attach richer customer data, which is what drives matching.
Both together is the goal. Pixel for speed and browser signals, CAPI for reliability, deduplicated so nothing counts twice.
Three ways to do it on Shopify
Shopify’s native integration. Easiest. Sends CAPI events automatically. Limited control over parameters and no visibility into what was sent.
A Custom Pixel plus a server endpoint. More work, full control over the payload.
Server side GTM. The most flexible, and the right answer if you also run Google Ads and want one pipeline feeding both.
If you already run server side GTM for Google, route Meta through it too. Two pipelines doing the same job is twice the maintenance and twice the chances of drift.
Deduplication, the part that breaks
If the Pixel and CAPI both report the same purchase and Meta cannot tell they are the same event, your numbers double.
The fix is that both must send:
The same event name, exactly.
The same event ID, a unique value per purchase. The Shopify order ID is the obvious choice.
Meta sees two events with matching IDs and keeps one. Miss the event ID and it keeps both, quietly.
The full mechanics, including how to verify it, are in
the Meta CAPI and server side GTM guide.
Image: Meta Events Manager showing a purchase event received from both Browser and Server, with the deduplication indicator visible.
Send the customer data
This is where most stores leave value on the table. Shopify has the customer’s email, phone, name, city, and postal code at checkout. Sending more of them raises your match quality directly.
Send email and phone at minimum. Add first name, last name, city, state, postal code, and country when you have them. Include the Shopify customer ID as an external ID, which almost nobody does and which helps.
Normalize before hashing. Lowercase everything, trim spaces, strip punctuation from phone numbers, and include the country code. Badly formatted data hashes into something Meta cannot match, and you will not get an error telling you so.
If your match quality is stuck low,
this covers what actually moves it.
Do not forget the click ID
Meta’s click identifier arrives on the landing page URL and then disappears if nobody stores it. By checkout, it is usually gone.
Capture it on the first page view, persist it with the session, and include it with the purchase. It is one of the strongest matching signals available and it costs nothing to keep.
Testing
Open Meta Events Manager and go to the Test Events tab.
Place a real test order on your store.
Confirm the purchase arrives, and check whether it shows as Browser, Server, or both.
If both, confirm the deduplication indicator is present. If it is not, your event IDs are not matching.
Check the customer parameters received and how many were usable.
Compare a week of Shopify orders against Meta purchases.
A note on that last step. Meta will report more purchases than Shopify has orders, because of attribution windows and modeling. What you are looking for is a stable relationship, not a match.
Need this built properly?
If you are running Pixel and CAPI together and are not certain deduplication is working, that is worth checking before you scale spend. I set up and repair tracking for ecommerce stores and lead generation businesses, so the numbers in your ad accounts match the money in your bank account.
Have a look at what I do, or book a call and we can go through your setup together.



















