Conversions API for Shopify, Without the Hype

The Facebook Conversions API is a way for your store’s server to tell Meta that someone bought something, directly, instead of relying only on the Meta Pixel — the piece of code in the shopper’s browser that ad blockers and privacy settings can stop.

That is the whole definition, and every page ranking for this search gives some version of it. What none of them tell a Shopify founder is the useful part: you very likely have it already, turning it on will not make Meta’s numbers agree with Shopify’s, and there is a ten‑minute check that tells you whether yours is doing its job. Those are the three things this post covers.

What is the Facebook Conversions API?

The Conversions API is Meta’s server‑to‑server connection for sending events — a purchase, an add to cart, a checkout started — from your systems to Meta. Meta’s Conversions API best practices are written around running it alongside the Pixel rather than instead of it. The Pixel sees what happens in the browser; the server connection makes sure the events that matter most still arrive when the browser does not cooperate.

Meta uses those events for two jobs. One is reporting: how many purchases your ads get credit for. The other, which matters more, is optimization: the delivery system learns who buys from the purchases it can see, and a campaign that is missing a share of its purchases is learning from an incomplete picture of your customer.

Why a founder should care: Meta does not only report on your sales, it targets from them. Missing purchase events do not just make the dashboard look worse, they make the next campaign aim worse.

Do I already have it on Shopify?

Probably, yes. Shopify’s Facebook & Instagram app sends Conversions API events itself once your customer data‑sharing level is set to Enhanced or Maximum. Shopify’s Facebook data sharing page sets out the three levels: Standard is the Pixel only; Enhanced adds the Conversions API and shares customer details such as email and phone so Meta can match the buyer; Maximum does the same with Meta’s newer features switched on.

To check, open the Facebook & Instagram channel in your Shopify admin, find the data sharing settings, and read the level. If it says Standard, you do not have the Conversions API and moving up a level is the cheapest improvement available to your Meta account. If it says Enhanced or Maximum, you have it, and nobody needs to sell it to you again.

Shopify’s page also puts the privacy obligation on the merchant: you are expected to follow Meta’s data use rules and keep your privacy policy current. I cover how consent interacts with server‑side events in server‑side tracking on Shopify.

What does it actually fix?

The Conversions API fixes lost events and weak matching, and those are the only two things it fixes. Lost events are purchases the Pixel never reported because a blocker or a browser setting stopped it. Weak matching is when Meta receives the purchase but cannot tie it to a person who saw an ad, so it cannot give the ad credit or learn from the buyer.

Matching is where most of the value sits. Meta links an event to a person using customer information parameters — hashed email, phone, name, location and browser identifiers. A server event carrying the buyer’s email from the order is much easier to match than an anonymous browser hit. Meta grades this per event as Event Match Quality, a score you can read in Events Manager.

ProblemDoes the Conversions API fix it?What does
Purchases lost to ad blockers and browser privacyYes—
Purchases Meta cannot tie to an ad viewerMostly, via customer data—
Meta’s sales not matching Shopify’sNoUnderstanding attribution windows
A campaign that is not profitableNoOffer, creative and targeting
Shoppers who declined trackingNo, and it should notConsent settings

Why doesn’t Meta’s sales number match Shopify’s?

Meta’s purchase number will not match Shopify’s even with a perfect Conversions API setup, because the two systems count different things. Shopify counts every order once. Meta counts the purchases it credits to an ad under your attribution setting — by default a purchase within seven days of a click or one day of a view — and it can credit an order that another channel, or nothing at all, would have produced anyway.

So a gap is normal, in either direction. What should worry you is a gap that suddenly changes size when nothing else in the account did; that usually means an event stopped firing or started firing twice. If you are judging whether Meta is profitable, compare what you spend against new customers in Shopify rather than against Meta’s own column, which is the logic I set out in working out customer acquisition cost for a store.

Is it counting my sales twice?

It should not be, as long as each purchase carries the same event ID from the browser and the server. Meta’s deduplication documentation matches the Pixel’s event ID and name against the server’s, and discards the duplicate when both arrive within 48 hours of the first. Shopify’s own app handles this for you.

Double counting usually happens when a store runs two integrations at once: Shopify’s app plus a third‑party tracking app, or a Pixel pasted into the theme years ago that nobody removed. Each sends its own purchase with its own ID, Meta cannot tell they are the same order, and reported purchases jump overnight. If Meta suddenly reports more purchases than Shopify has orders, look for a second installation before anything else.

One integration per store. If you have installed a Conversions API app on top of Shopify’s Facebook & Instagram channel, you almost certainly have two sources of purchase events, and one of them needs to go.

How do I know if it’s working?

Open Events Manager, select your store’s dataset, and look at the Purchase event: it should show events arriving from both the browser and the server, and a match quality score. That is the ten‑minute check, in four steps:

  1. Connection method. In the Overview tab, the Purchase event should list both browser and server as sources. Server only, or browser only, means half the setup is missing.
  2. Match quality. Open the Purchase event and read its Event Match Quality. A low score means Meta is receiving the order without enough customer detail to tie it to a person; on Shopify, the usual fix is raising the data‑sharing level.
  3. Duplicates. Compare a week of Meta purchases in Events Manager with a week of Shopify orders. Meta’s count of received events should be close to your order count. Far more than your orders means double counting.
  4. Diagnostics. The Diagnostics tab lists problems Meta has spotted with your events. Read it; it is usually specific.

Note the difference between step three and the section above: events received should track your orders closely, while purchases attributed to ads will not, and should not.

A paid Conversions API app is worth it when Shopify’s own integration cannot see the event you need to send. That means a sale that closes somewhere other than the Shopify checkout: a subscription renewal billed by another system, a phone or wholesale order entered later, or a lead that becomes a customer in a CRM. The CRM‑focused pages ranking for this search are built for exactly those cases.

For a normal Shopify store taking orders through Shopify checkout, the native app already sends the purchase with the order’s customer data, and a second tool mostly adds a second source of the same event. Before paying for one, run the four checks above. If they pass, the money is better spent on the ads themselves, and if you want to know what that should cost, I wrote up what Facebook ads cost an ecommerce store.

Questions people ask

Is Meta’s Conversions API free?
Yes. Meta does not charge for the Conversions API. On Shopify it comes with the free Facebook & Instagram app once the data-sharing level is Enhanced or Maximum. Paid apps and gateways charge for setup or hosting, not for the API itself.
What is the difference between the Facebook Conversions API and the Pixel?
The Pixel reports events from the shopper’s browser; the Conversions API reports them from your server. The Pixel can be blocked, the server connection generally cannot. Meta’s guidance is to run both together and deduplicate.
How do I set up the Conversions API on Shopify?
Install Shopify’s Facebook & Instagram app, connect your Meta business account, and set the customer data-sharing level to Enhanced or Maximum. That sends Conversions API events without any code.
Why are my Facebook purchases higher than my Shopify orders?
Usually because two integrations are sending the same purchase with different event IDs, so Meta cannot deduplicate them. Look for a second tracking app or an old Pixel in the theme.

Want this run properly?

I am Greg Asuncion, an ecommerce paid media consultant. I run Google Ads, Meta, Amazon and Microsoft for direct‑to‑consumer brands on Shopify — one person, published pricing, and a free audit after a call. Here is how I run Meta ads for Shopify stores.