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

  1. Open Meta Events Manager and go to the Test Events tab.

  2. Place a real test order on your store.

  3. Confirm the purchase arrives, and check whether it shows as Browser, Server, or both.

  4. If both, confirm the deduplication indicator is present. If it is not, your event IDs are not matching.

  5. Check the customer parameters received and how many were usable.

  6. 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.

Need accurate tracking?

Its Free

500+ Happy Clients ⭐️

Keep Reading

See exactly where you’re wasting ad spend and how better tracking can double your sales.

See exactly where you’re wasting ad spend and how better tracking can double your sales.

Tracking in 3 Hours

Tracking in 3 Hours

I Manage Everything

I Manage Everything

24/7 Expert Support

24/7 Expert Support

TESTIMONIALS

Trusted by 500+ satisfied clients

Discover how we’ve driven growth and innovation.

500+ Tracking

500+ Tracking

Adélaïde De Vos

3,922 followers

I had the pleasure to work with Abdul and I can say that he exceeded my expectations. He was professional, patient, and clear in his explanations and committed to client satisfaction. If you're looking for someone who is not only highly skilled but also reliable and committed to client satisfaction, I highly recommend Kayium!

Dean Watson

1,030 followers

Kayium setup our tracking for Google Ads and Meta Ads, which helped us get 20%+ more conversions on the same ad spend. He didn’t just handle the technical setup,he also took the time to explain why it works and how it improves results. If you’re looking for someone skilled, reliable, and committed to delivering real results, I highly recommend him!

David Friend

CEO: Profitable Sites

Kayium set up accurate tracking that helped us scale ads fast and boost conversions by over 25%. He gave us clear insight into which ads drive revenue.

Lalita Sundari

7,924 followers

I've worked with Kayium; his strategic mindset and expertise in GTM, GA4, Pixel & Server Side Tracking, are invaluable! I highly recommend Kayium!