Meta Conversions API on Shopify: Setup, Event Match Quality and Duplicates

Pix the Hungry Pixel mascot next to the headline: Meta Conversions API on Shopify: Setup, Event Match Quality and Duplicates

Short answer: Meta's Conversions API (CAPI) sends your store's events to Meta from a server instead of only from the visitor's browser, so sales still reach Meta when the browser pixel is blocked. On Shopify you can set it up through the Facebook & Instagram app, a tracking app, or Google Tag Manager server-side. Whichever you choose, check two things: Event Match Quality (can Meta tie the sale to a person?) and deduplication (is each sale counted once?).

What the Conversions API does

The Meta pixel runs in the browser. When a shopper buys, the pixel tells Meta about the purchase, unless an ad blocker, browser privacy setting or slow connection gets in the way.

The Conversions API sends the same event from a server. Meta's recommendation is to use both: the pixel and the server send each event, and Meta keeps one copy. If the browser copy never arrives, the server copy fills the gap.

More complete data means Meta learns from more of your real sales, which helps it find buyers and get ad sets out of learning limited.

3 ways to set it up on Shopify

Option Good for Watch out for
Shopify's Facebook & Instagram app (data sharing set to Maximum) Getting started quickly Little control over what's sent; easy to double up if other tools also send events
A tracking app Stores that want a ready-made setup Another monthly cost; check how it handles IDs and customer matching
Google Tag Manager server-side (often hosted by Stape) Stores on several ad platforms that want full control Takes the most setup and testing

The most important rule: pick one source per event. If the Facebook & Instagram app and a GTM setup both send purchases, you'll get duplicates. Our guide to server-side tracking with Stape covers the GTM route.

How to check it's working

In Meta Events Manager, open your pixel (also called a dataset) and look at the Overview:

  1. Integration: each key event (Purchase, Add to cart, Initiate checkout) should show Browser · Server. Browser only means the Conversions API isn't sending that event.
  2. Events received: compare purchases received in the last 7 days with your Shopify orders for the same days. Close is good. Much higher means duplicates. Much lower means missing data.
  3. Diagnostics: open the Diagnostics tab. Warnings about deduplication or missing parameters tell you what to fix.

Event Match Quality: can Meta tie the sale to a person?

Receiving a sale isn't enough. Meta has to connect it to the person who saw your ad. Event Match Quality (EMQ) scores how well it can do that, on a scale from 0 to 10, shown per event in Events Manager.

Meta matches people using customer details sent with each event, securely hashed (scrambled) before they leave your server:

  • Email and phone number, the strongest signals
  • First and last name, city, state, zip code, country
  • External ID, your own customer ID, kept consistent across events
  • Browser and click IDs (Meta's fbp and fbc cookies), which link the visit to the ad click
  • IP address and browser user agent

How to raise Event Match Quality

  1. Send email and phone on purchases and on checkout events, where you have them.
  2. Send the click ID. Make sure the fbc value from Meta ad clicks is captured and passed through.
  3. Use a consistent external ID, the same one on the browser and server copy of each event.
  4. Send customer details on earlier events too, for example from a signed-in customer or an email captured at checkout.
  5. Send IP address and user agent from the server, so they reflect the real shopper, not your server.

A higher score doesn't change your ads overnight, but it means more of your sales can be credited to the ads that drove them, which is what Meta optimizes on.

Deduplication: making each sale count once

When the pixel and the server both send a purchase, Meta needs a way to know it's the same sale. It uses two fields:

  • Event name, for example Purchase
  • Event ID, a unique ID for that specific event, such as the order ID

If the browser and server copies have the same event name and event ID, and arrive within Meta's matching window (48 hours), Meta keeps one and drops the other.

When event IDs are missing or don't match, both copies count. We've audited a store where one order reached Meta as seven purchases, from three tools that didn't share an ID. Its reported ROAS looked several times better than reality.

Common deduplication mistakes

  • No event ID on the browser pixel, only on the server event
  • Different IDs on each copy, for example a random ID in the browser and the order ID on the server
  • A third source, like an old pixel in the theme or an app, sending purchases with no ID at all
  • Meta's automatic events turned on, adding extra events you didn't set up

see what your store sends today.

Our free store scan checks how your Meta and Google tracking behaves from the outside, including signs of duplicate pixels. It takes about a minute.

A 10-minute Conversions API checklist

  • Purchase shows Browser · Server in Events Manager
  • Purchases received ≈ Shopify orders (last 7 days)
  • No deduplication warnings in Diagnostics
  • Event Match Quality for Purchase is in Meta's "Good" or "Great" range
  • Only one tool sends each event (check the Facebook & Instagram app's data sharing settings)
  • "Track events automatically without code" is off if you manage events yourself

FAQ

Is Shopify's built-in Conversions API enough? For many smaller stores, yes, as a starting point. Stores on several ad platforms, or that want profit data and full control over matching, usually outgrow it.

Do I still need the Meta pixel if I use the Conversions API? Yes. Meta recommends both, with shared event IDs. Server-only setups lose browser signals that help matching.

Why does Meta show more purchases than Shopify? Almost always duplicates: two or more sources sending the same purchase without a shared event ID.

What's a good Event Match Quality score? Higher is better. For purchases, aim for Meta's "Good" to "Great" range by sending email, phone, external ID and click IDs.

want us to look at yours?

If you spend $5,000+ a month on ads, book a free 30-minute audit call. We'll check your Conversions API, match quality and duplicates, and give you a fixed quote if a setup makes sense.

Feed your pixel. Grow your profit.