Meta expects Shopify stores to send purchases through the Conversions API (CAPI) as well as the browser pixel. There are three ways to do it on Shopify, and they are not equal. Here is how they compare, and how to choose.
Why the Conversions API matters
The Meta pixel runs in the visitor’s browser, so it misses part of your orders: ad blockers, Safari’s tracking prevention, in-app browsers and slow connections all get in the way. The Conversions API sends the same events from a server, where those problems don’t apply.
Meta then merges both streams. The result is more purchases attributed to your ads, better optimization, and usually a higher Event Match Quality score, because the server can send hashed customer details the browser doesn’t have.
Option 1: the Facebook & Instagram app
Shopify’s own Facebook & Instagram sales channel sends server events when its data-sharing setting is at Enhanced or Maximum. At Standard, it only uses the browser pixel. I go deeper in Facebook & Instagram app vs server-side GTM.
- Pros: free, set up in minutes, maintained by Shopify, deduplication handled for you.
- Cons: little control over what is sent, no custom values such as profit, harder to debug, and it only feeds Meta.
It is a good starting point for a store that advertises mainly on Meta and has no tracking specialist.
Option 2: a tracking app
Apps such as Elevar, Stape’s Shopify app or Analyzify generate a data layer from Shopify events and send it server-side to Meta and other platforms.
- Pros: more control than the native app, several destinations, support from the vendor.
- Cons: a monthly subscription that often grows with your order volume, and your setup depends on the app’s roadmap.
Option 3: server-side Google Tag Manager
A custom pixel sends Shopify events to your own server-side GTM container, which forwards them to Meta CAPI, GA4, Google Ads, TikTok and others.
- Pros: full control over every parameter, one stream for every platform, consistent IDs everywhere, you own the setup.
- Cons: needs a proper setup and documentation, plus monthly hosting.
Side by side
| Facebook & Instagram app | Tracking app | Server-side GTM | |
|---|---|---|---|
| Setup effort | Minutes | Hours | Days to weeks |
| Running cost | Free | Monthly subscription | Hosting only |
| Control over data | Low | Medium | Full |
| Other platforms | Meta only | Several | All, from one stream |
| Custom values (profit, new customer) | No | Sometimes | Yes |
Deduplication: the part most setups get wrong
When the pixel and the Conversions API send the same purchase, Meta keeps one only if both events have:
- the same
event_name(Purchase), - the same
event_id, - and arrive close enough in time.
The classic mistake is to mix sources: the browser pixel from the native app and the server events from GTM, or the reverse. The IDs don’t match, Meta counts every order twice, and ROAS looks great until you compare with Shopify. More in duplicate purchase events on Shopify.
Event Match Quality: send more than the order
Meta matches server events to people using customer information. The more you send, hashed, the better the match:
- email and phone number,
- first name, last name, city, postal code and country,
- the
fbpandfbccookies, so the event is linked to the browser and the ad click, - IP address and user agent,
- a stable external ID such as the Shopify customer ID.
Only send this data when the visitor has given consent where it is required.
Which option should you choose?
- Meta is your only paid channel and budgets are modest: start with the native app at full data sharing.
- You want a packaged tool and don’t mind a subscription: a tracking app.
- You advertise on several platforms and want one source of truth you own: server-side GTM.
Whichever you pick, use one source for Meta, not two. If you’d like it set up and checked against your Shopify orders, the Professional package of my Shopify tracking offer includes Meta CAPI, server-side GTM and Google Ads enhanced conversions. Book a free call to talk it through.