How to Set Up the Shopify Conversions API for Meta

Shopify's Meta app sends Conversions API events on Maximum data sharing. Server-side GTM and Stape add control, and a shared event_id stops double counting.

By Yannis Spanenburg · · 6 min read

Most Shopify stores running Meta ads already send Conversions API events. Few have checked whether each order is counted once.

What Is the Shopify Conversions API?

The Shopify Conversions API is the server connection that sends store events such as Purchase, AddToCart and InitiateCheckout from Shopify to Meta, alongside the browser Meta pixel. Meta's Conversions API (CAPI) receives those events server to server, so ad blockers and browser privacy limits cannot stop them, and Meta can match more orders to ad clicks.

  • Shopify's Facebook & Instagram app turns on the Conversions API when data sharing is set to Maximum.
  • A server-side setup through Google Tag Manager (GTM) and Stape adds control over which events and fields reach Meta.
  • Meta deduplicates browser and server events only when both carry the same event name and event ID.
  • Event Match Quality, Meta's 0 to 10 score per event, shows whether server events carry enough customer data.
  • Run the Meta pixel and the Conversions API together, and test deduplication before you trust any purchase number.

How Does the Meta Pixel Differ From the Conversions API?

The Meta pixel runs in the shopper's browser and fires when a page loads, so ad blockers, cookie banners and browser tracking limits can stop it. The Conversions API sends the same event from a server, out of reach of those limits. Meta recommends running both, because each covers gaps in the other.

According to Shopify's help center on Facebook data sharing, the Standard level relies on the pixel alone, while Maximum uses the Conversions API and the pixel together. Shopify states that server to server data cannot be blocked by browser-based ad blockers.

Should You Use Meta's Shopify App or a Server-Side Setup?

Use Meta's Facebook & Instagram app on Maximum data sharing when Shopify is your only storefront, the checkout is Shopify's own, and Meta is your main paid channel. Move to a server-side setup through GTM and Stape when one of the conditions below applies.

  • You advertise on Meta, Google Ads and TikTok and want one event stream feeding all three.
  • Your consent banner has to decide, per region, which events and fields leave the store.
  • You need custom events, such as a quote request, that the app does not send.
  • Your Event Match Quality on Purchase stays low after Maximum is switched on.

Stape's Shopify Conversions API guide builds the server route from a server GTM container, its Conversion Tracking app, a Meta CAPI tag and a trigger, with the same event_id added to the web and server tags.

Why Does Deduplication With event_id Matter?

Deduplication is how Meta recognises that a browser Purchase and a server Purchase describe the same order. Without it, one sale is reported twice, Meta's purchase count runs ahead of Shopify's orders, and Meta spends your budget chasing conversions that never happened. The event_id field makes the match.

Meta's developer documentation on duplicate pixel and Conversions API events (checked October 2026) requires a matching event ID and event name, within 48 hours of the first event. When both arrive within about 5 minutes, Meta keeps the browser event.

In our client work across Shopify stores we keep seeing the same pattern: the Meta app is installed, an old pixel still sits in the theme or a GTM container, and that pixel fires Purchase without an event ID. Meta counts the order twice, which is one cause of Meta showing more conversions than Shopify.

What Is Event Match Quality and What Score Should You Aim For?

Event Match Quality (EMQ) is Meta's score from 0 to 10 for each server event, showing how well the customer data you send matches real Meta accounts. A higher score means more purchases credited to the right ad. WeltPixel's 2026 EMQ guide for Shopify names a hashed email and a phone number as the heaviest-weighted fields.

How to Set Up the Conversions API on Shopify in 6 Steps

Start with Meta's own app on Maximum, remove every duplicate pixel, then verify deduplication and match quality in Events Manager. Steps five and six tell you whether you need a server-side container. Add a server stream only once the app setup is clean.

  1. Install the Facebook & Instagram app by Meta from the Shopify App Store and connect the right ad account and pixel.
  2. Set data sharing to Maximum in the app settings so Shopify sends events through the Conversions API.
  3. Remove every other Meta pixel from the theme, GTM containers and third-party apps.
  4. Place a test order and confirm in Events Manager that Purchase lists browser and server as sources with one count.
  5. Check Event Match Quality on Purchase after 24 hours and note which customer parameters are missing.
  6. Compare seven days of Meta-reported purchases against Shopify orders from Meta traffic before you change any budget.

What Mistakes Break Shopify Conversions API Tracking?

Most broken setups come from duplicate tags, mismatched pixel IDs and extra Purchase events fired after checkout. Each of these inflates or deflates Meta's purchase count without any error message in Shopify, so a store can run for months on numbers that do not match its orders.

  • A second Meta pixel hard-coded in the theme from a previous setup.
  • A GTM web container firing Purchase with no event ID.
  • A reviews or upsell app using a different pixel ID.
  • A post-purchase page that fires Purchase a second time.

Our paid social case study shows how we run Meta accounts once the tracking underneath is clean.

Proof of Pixel's position: every Shopify store that spends on Meta should run the pixel and the Conversions API from launch day, with one event ID shared by both.

Proof of Pixel is a marketing and consulting agency for businesses that live on enquiries and orders, building the website, the tracking and the follow-up as one system, with offices in Dubai, New York, London, Antwerp and Malaysia. We set up the pixel and Conversions API through GTM and Stape in our marketing service, and the store owns the accounts and data from day one.

For ecommerce brands on Shopify, that setup ships with the store build. Once the counts agree, an incrementality test for Meta ads tells you how many of those purchases Meta caused.

Start With One Test Order

Place a test order and check in Events Manager whether Purchase arrives from browser and server with one count. Browser only means Maximum is off. A double count means a duplicate pixel.

If the numbers still disagree after that, talk to our team and we will review the setup with read-only access.

Frequently asked questions

Does Shopify have a built-in Conversions API?

Yes, Shopify sends Conversions API events through the Facebook & Instagram app by Meta when data sharing is set to Maximum. Shopify describes Maximum as the level that uses the Conversions API and the Meta pixel together. The Standard level relies on the browser pixel alone, which ad blockers can stop.

Do I need Stape if I use the Shopify Meta app?

Most stores with Shopify as the only storefront and Meta as the main paid channel can start without Stape. Stape and server-side GTM earn their place when you send events to several ad platforms, apply consent rules before data leaves the store, or need custom events. Clean up the app setup first, because a second stream on top of a broken one adds duplicates.

Why are my Meta purchases higher than my Shopify orders?

Duplicate events and Meta's attribution windows are the two usual causes. A second pixel without a shared event ID counts one order twice. Meta also credits purchases to ad clicks and views inside its attribution window that Shopify assigns to other channels, so fix duplicates first and then compare within the same window.

What is a good Event Match Quality score on Shopify?

A score of 8 or higher on Purchase is the target WeltPixel's 2026 guide sets for Shopify stores. The score rises when server events carry a hashed email, a phone number and the fbc click ID. Check it in Events Manager a day after any change, because updates take about 24 hours to show.

How do I test if Meta deduplication is working?

Place a test order and check in Events Manager that Purchase lists both browser and server as sources with one counted event. Meta deduplicates when the event name and event ID match and both arrive within 48 hours of the first event. If the count doubles, a second pixel or tag is firing without the shared ID.

Keep reading

Where this fits