How to set up Meta Conversions API on Shopify
Two ways to set up Meta's Conversions API on Shopify: the Facebook & Instagram channel or an app. How to check it works and avoid counting purchases twice.
There are two ways to set up Meta’s Conversions API on Shopify. You can turn on the Enhanced or Maximum data sharing level in Shopify’s free Facebook & Instagram channel, or you can install an app that sends your store’s events to Meta from its own server. Either way, finish by checking that Events Manager shows server events and that only one tool is sending purchases.
The Conversions API (CAPI) lets Meta receive events like Purchase from a server instead of the shopper’s browser. On Shopify you don’t need code or an access token for it. The Facebook & Instagram channel uses CAPI at the Enhanced and Maximum data sharing levels; Standard is browser only. A tracking app is the other route. Whichever you pick, make it the only source of Purchase events for your pixel, then check that Events Manager shows “Server” as the connection method. Two sources usually means double-counted sales.
Before you start
Have these ready:
- Admin access to your Shopify store.
- Access to the Meta pixel you advertise with. If the pixel belongs to a Business Manager, your Facebook account needs permission on it there.
- A list of everything that already sends events to that pixel. Look in Shopify under
Settings → Customer events, and search your theme code for
fbq(. You’ll need this list at the end, so don’t skip it.
Option 1: Shopify’s Facebook & Instagram channel
This is free and built by Meta and Shopify. If you already sell through the channel, it’s the quickest route.
- In Shopify admin, go to Sales channels → Facebook & Instagram. Install the channel from the Shopify App Store first if you don’t see it.
- Open Settings, then Data sharing settings.
- In Customer data sharing, turn data sharing on.
- Under Choose level, pick Enhanced or Maximum. Both use the Conversions API alongside the browser pixel. Standard is browser only, so it won’t give you CAPI.
- If no pixel is connected, click Connect next to the pixel you advertise with.
Shopify’s help center describes the levels in detail, and the menu labels do move around now and then. One thing to know: at Enhanced and Maximum, Shopify shares customer details such as name, email, phone number and location with Meta to match shoppers to Facebook accounts. Update your privacy policy to say so.
Option 2: a tracking app
Apps that send events server-side live in the Shopify App Store. The app handles the pixel for you, and setup tends to look like this:
- Install the app from the Shopify App Store.
- Log in with Facebook when it asks, so it can see your ad accounts and pixels.
- Choose which pixel should receive your conversions.
- Visit your store, add something to the cart, and check that the app shows events arriving.
Apps differ in what they send, what they show you and what they cost, so read the listing before you install. On a store with checkout extensibility, a good one shouldn’t ask you to paste anything into your theme.
Turn off the other sources
Plenty of guides bury this step. Skip it, and your sales end up counted twice.
Meta merges a browser event and a server event into one only when they carry the same
event name and the same event_id. Two different tools almost never share IDs. So if the
Facebook & Instagram channel and an app both send Purchase to the same pixel, every sale
can be counted twice, and your ROAS looks better than it is.
Go back to the list you made at the start and keep exactly one source of purchases:
- Using the channel? Remove old theme snippets and uninstall or disconnect other tracking apps that send to the same pixel.
- Using an app? In the Facebook & Instagram channel, turn customer data sharing off, and remove old theme snippets too. You can keep the channel installed for your catalog and shops.
If your purchases already look doubled, our guide to why Meta shows a different number of purchases than Shopify walks through finding the extra source.
Check that it’s working
Give it a day of normal traffic, then open Meta Events Manager:
- Select your pixel and look at the Overview tab.
- Find the Purchase event and look at its connection method. You want to see Server there (alongside Browser if your setup also uses the pixel).
- Compare a week of Purchase events with a week of Shopify orders, in the same timezone. They won’t match exactly, but a number close to double your orders means two sources are still running.
- Check the Diagnostics tab for warnings about duplicates or missing parameters.
What can still go wrong
-
Shoppers who decline marketing cookies don’t get tracked. If your store asks for consent, Shopify blocks marketing tracking for anyone who says no, and a server-side setup should respect that too. Expect a gap in regions with consent banners.
-
CAPI doesn’t recover every sale. Some setups only send a Purchase that the shopper’s browser reported first. If the shopper closes the tab before the order confirmation loads, those setups never learn about that sale. Check how yours works.
-
Old orders don’t get sent. Meta rejects events older than 7 days, and setups only start sending from the day you turn them on.
-
The connection can expire. If you change your Facebook password or someone removes your access in Business Manager, events stop until you reconnect.
Setting it up with SuperPixel
SuperPixel is the Shopify app I build for this. It installs from the Shopify App Store and adds its own pixel through Shopify’s customer events, so there’s no theme code to edit.
A setup checklist in the app takes you through four steps: install the pixel, connect an ad account, choose which pixel receives conversions, and confirm events are arriving. You connect Meta by logging in with Facebook, and SuperPixel finds the ad accounts and pixels you can access, including ones owned by a Business Manager.
It sends page views, product views, add-to-carts, checkouts started and purchases to the Conversions API from its own server, so an ad blocker that blocks Meta’s browser script doesn’t stop them. Each order becomes one Purchase, even when a shopper returns from a payment provider or reloads the thank-you page. The Live Events page shows which pixels each event went to and, when one wasn’t sent, the reason: the shopper declined marketing, the pixel is turned off, the connection expired, or Meta rejected it.
Know the limits before you pick it. SuperPixel doesn’t send email, phone or other customer details to Meta, so the channel’s Enhanced and Maximum levels share more for matching. Orders its pixel never reported aren’t sent. Turning off the Facebook & Instagram channel or other apps is still your job; the app won’t do it for you. Meta is the only ad platform it sends to. Pricing is $29 a month, or $232 a year, billed through Shopify, with a 14-day free trial.
FAQ
Do I need a developer to set up the Conversions API on Shopify?
No. Both the Facebook & Instagram channel and the apps in the Shopify App Store handle the connection for you. You don’t need to generate an access token or edit theme code.
Should I use Enhanced or Maximum in the Facebook & Instagram channel?
Both turn on the Conversions API and share the same customer details. Shopify describes Maximum as also using Meta’s latest advertising technology, and many setup guides suggest it. Whichever you choose, make sure your privacy policy covers the data it shares.
Can I use the Facebook & Instagram channel and a tracking app together?
You can keep both installed, but only one should send events to a given pixel. If both send Purchase, Meta will usually count each sale twice, because their event IDs don’t match.
Will the Conversions API make Meta’s numbers match Shopify exactly?
No. Events from shoppers who decline marketing tracking aren’t sent, Ads Manager only counts sales it attributes to your ads, and timezones can shift orders between days. You’re aiming for Events Manager to be close to your Shopify orders, not identical.
How long until server events show up in Events Manager?
Often within the hour after a shopper visits your store. Check the next day, after real traffic, before deciding something is broken.
Try it on your store
If you’d rather see what’s being sent than guess, you can try SuperPixel free for 14 days. And if you get stuck setting up either option, email me at [email protected]. I’m happy to take a look.