Skip to main content
  1. Home
  2. Connectors
  3. Shopify - Meta Conversions API

Send every Shopify event to the Meta Conversions API, server-side

Each event is resolved to a person against a 750M+ device graph before it reaches the Meta Conversions API, with restored click IDs, deduplicated conversions and delivery you can audit.

4.6 out of 5 from 36 reviews on the Shopify App Store

Upstack Signal showing Meta event match quality scores for each event
US device IDs in the graph
750M+
Match rate on events
90%+
Meta event match quality
7.5+
Most brands are live
<20 min

How it flows

How a Shopify event reaches the Meta Conversions API. Captured on the server, resolved to a person, then sent.

01 Capture

Captured from Shopify

One Upstack app setup that captures Shopify storefront and checkout events with the Upstack Pixel, records every order directly from Shopify, and forwards both to every tool you spend on.

See the Shopify integration
ShopifyWhat it sends
  • order_idShopify order and checkout token
  • email / phonecustomer contact from checkout
  • customer_idShopify customer record, if they have one
  • line_itemsproducts, variants and quantities
  • total / subtotal / discountorder economics

02 Understand

Resolved to one person before it leaves

Every Shopify event is matched against a 750M+ device graph, so a phone browse and a desktop checkout resolve to one customer rather than two strangers.

How resolution works
Upstack DataResolved before it is sent
  • IdentityMatched against a 750M+ device graph, so a phone browse and a desktop checkout resolve to one customer.
  • customer_typeNew or returning, resolved before send.
  • DeduplicationBrowser and server copies of the same purchase collapse on event ID, so nothing is counted twice.
  • Bot and fraud filteringAutomated traffic never reaches the model, because what you keep out of the training set matters as much as what goes in.

Ad platforms accept almost anything and tell you very little. These controls exist so you can see what was sent and what was accepted, rather than inferring it from a reporting gap.

03 Activate

Delivered to the Meta Conversions API

Forward deduplicated, identity-resolved conversions to Meta through the Conversions API, and give the model a customer instead of a session.

See the Meta Conversions API integration
Meta Conversions APIWhat it receives
  • em, ph (SHA-256)raise Event Match Quality
  • fbclid / _fbpcredit the click that drove it
  • external_idstable person across sessions
  • event_iddedupe against the browser pixel
  • value / currencyvalue-based bidding

Which events reach the Meta Conversions API

Each Upstack event is mapped to the Meta Conversions API event below before it is sent.

Upstack eventSent to Meta Conversions API asKey data on the event
Page viewPageViewURL, referrer, user agent
Product viewViewContentcontent_ids, content_type, value, currency
Add to cartAddToCartcontent_ids, value, currency
CheckoutInitiateCheckoutvalue, currency, num_items
PurchasePurchasevalue, currency, order_id, content_ids

Every event carries every available match key: em, ph, fn, ln, ct, st, zp and country, plus fbc, fbp and external_id. Personal data is hashed with SHA-256 before it leaves Upstack.

Shopify to Meta Conversions API, in detail

How the Shopify Meta Conversions API connection works.

By Shopify’s own description, its Facebook & Instagram app sends only the purchase through the Conversions API, even at the Maximum data sharing level: page views, add to carts and checkouts stay browser pixel events. Upstack sends all five standard events from its servers as well as the browser, each pair sharing an event_id, so Meta keeps one copy and still gets the event when the pixel is blocked.

Shopify dataSent to Meta as
Order ID

The purchase event ID comes from the order ID, so the browser and server copies match.

order_id, and the Purchase event_id
Line items

Product IDs from the catalog Upstack syncs from Shopify.

content_ids, num_items
Order total and currency

On Purchase, InitiateCheckout, AddToCart and ViewContent.

value, currency
Checkout email and phone

Hashed with SHA-256 before they leave Upstack.

em, ph
Name and address

Hashed with SHA-256.

fn, ln, ct, st, zp, country
Meta ad click (fbclid)

fbc is built from the fbclid in the ad URL; fbp is Meta’s browser ID.

fbc, plus fbp
Upstack customer ID

One person across visits and devices.

external_id

Shopify’s data sharing has to go

Shopify’s Facebook & Instagram data sharing emits no event_id that matches Upstack’s, so Meta can’t deduplicate the two and counts purchases twice. Turn it off, along with any other Meta pixel in your theme, apps or Google Tag Manager.

Deduplication with event_id

With the default Browser + Server tracking method, Upstack loads the Meta Pixel and sends the same events from its servers, and both copies carry the same event ID, so Meta keeps one. Another sender on the same pixel, such as a platform’s own Meta integration, Meta’s Conversions API Gateway or a third-party CAPI app, has no matching ID, so turn it off.

Purchases that miss the thank-you page

Shopify fires its checkout completed event once, on the thank-you page or on the first upsell page, and not at all if that page fails to load. Upstack also receives every order directly from Shopify, even when the pixel doesn’t fire.

Upsells and renewals

When a post-purchase offer tagged AfterSell Upsell raises an order’s total, Upstack sends the extra amount as a separate upsellPurchase custom event, not a second Purchase. Subscription renewals are tracked as their own event and aren’t sent to Meta as purchases.

Event Match Quality

Every event carries every available match key: em, ph, fn, ln, ct, st, zp and country, plus fbc, fbp and external_id, with personal data hashed with SHA-256. Meta scores each event type separately once it has enough real events, usually within 24 to 48 hours.

Health and wellness stores

If Meta restricts your store under its health and wellness rules, use a new dataset and turn on Restricted Category Mode with a domain alias. Upstack then skips the browser pixel, sends events through the Conversions API only and removes product details.

The catch

Shopify brands almost always have a pixel already firing.

Sending server events alongside it without a shared event ID is how a single purchase becomes two conversions and your reported ROAS quietly doubles. Upstack records one Purchase per Shopify order ID, so the pixel's copy and Shopify's own copy of an order count once.

Turn off other Meta pixels
Where to check in the Meta Conversions APIDelivery you can audit

Events Manager your dataset Event Match Quality

Server events appear with a Server badge, and Event Match Quality is scored per event type.

What changes

What changes when Shopify feeds the Meta Conversions API. Two gains on the Meta Conversions API side, two on the Shopify side.

Meta Conversions API

Higher Event Match Quality

More hashed identifiers on every event (email, phone, external ID, click ID), so EMQ rises and Meta matches more of what you send.

Meta Conversions API

Pixel and CAPI, one install

One source of truth for both, with browser and server events deduplicated on event_id so purchases are never double-counted.

Shopify

Orders recorded from Shopify itself

Purchases also reach Upstack directly from Shopify, about 10 minutes after the order, so an order still counts when an ad blocker stopped the pixel or the shopper closed the page.

Shopify

Recognize returning customers

Shopify customer IDs, emails and phones are matched against the graph, so repeat buyers are identified across devices.

Setup

Live in under 20 minutes.

App install, no theme edits and no developer. You need admin access to Meta Business Manager and owner or staff access to Shopify.

Upstack dashboardExample
Shopify Data source Connected
Facebook Advertising Destination Healthy
Read the full Meta Conversions API setup guide
  1. 01

    Connect Shopify

    In the Upstack dashboard, open System, then Data Sources, and click Connect Shopify. Approve the install in your Shopify Admin: Upstack reads products, orders and customers, and writes only its own pixel.

  2. 02

    Check both Shopify tracking pieces are on

    Turn on the Upstackified app embed under Online Store, Themes, Customize, App embeds, and confirm the Upstack custom pixel is listed under Settings, Customer events. Upstack needs both.

  3. 03

    Turn off other Meta pixels

    Disable Facebook & Instagram data sharing in Shopify, then remove any other Meta pixel: third-party pixel apps, pixel code in theme.liquid, or Meta tags in Google Tag Manager.

  4. 04

    Add the Meta destination

    Under Destinations, add Facebook Advertising with your Pixel ID (a 15 or 16 digit number) and a Conversions API token generated in Events Manager, which starts with EAA. Keep the default Browser + Server tracking method.

  5. 05

    Don’t add a second Conversions API sender

    Meta may suggest its Conversions API Gateway under a “Low rate of pixel events covered by Conversions API” warning. Ignore it: a second sender duplicates events without matching event IDs.

  6. 06

    Check Events Manager

    Server events show a Server badge on the Overview and Test Events tabs. Event Match Quality is scored per event type, and Meta takes 24 to 48 hours to score new events.

After setup

What to check in Meta Events Manager.

  • Upstack shows the Facebook Advertising destination as Healthy.

  • Events Manager lists your events with a Server badge as well as Browser.

  • Event Match Quality has a score for each event type after 24 to 48 hours of real orders. Test orders don’t score the same way.

  • The Pixel ID in Upstack matches the dataset your ads optimize on, under Data Sources in Events Manager.

Troubleshooting

Common problems and fixes.

  • Purchases counted twice

    Another sender is still active: Shopify’s Facebook & Instagram data sharing, a pixel in the theme, a Google Tag Manager tag or a third-party CAPI app. Their events don’t share Upstack’s event_id, so remove them.

  • Event Match Quality shows 0.0 out of 10

    Normal for the first 24 to 48 hours and until real orders arrive. If it persists, check the Pixel ID matches and that the access token has ads_read plus ads_management or business_management.

  • A “Low rate of pixel events covered by Conversions API” warning

    A false positive for Upstack stores, whose events already go through the Conversions API. Don’t click Review solution or set up the Conversions API Gateway.

  • No Server events in Events Manager

    Check the destination is saved and Healthy and the access token is valid. If another integration also sends to the pixel, turn it off.

  • Meta reports more purchases than Shopify

    Compare Website purchases rather than Purchases, and switch the conversion count to First conversion in Compare attribution settings. View-through and modeled conversions also add to Meta’s count.

FAQ

Questions about Shopify and the Meta Conversions API.

How do I connect Shopify to the Meta Conversions API?

Connect Shopify under System, Data Sources, turn off Shopify’s Facebook & Instagram data sharing and any other Meta pixel, then add the Facebook Advertising destination with your Pixel ID and a Conversions API token. Upstack sends every event from the browser and from its servers with a shared event_id. Most brands are live in under 20 minutes.

Do I need to turn off other Meta pixels?

Yes. Disable Facebook & Instagram data sharing in Shopify, then remove any other Meta pixel: third-party pixel apps, pixel code in theme.liquid, or Meta tags in Google Tag Manager.

What is Event Match Quality (EMQ) and why does it matter?

EMQ is Meta’s score, from 0 to 10, for how reliably it can match a conversion event back to a Meta user. Higher EMQ gives Meta’s algorithm more signal to optimize against, and server-side delivery through CAPI typically raises it because events carry more match keys and are not blocked by browser restrictions.

Will purchases be counted twice with the Pixel and the Conversions API both running?

No. Upstack sends a shared event_id on every server-side event, and Meta deduplicates against the matching browser Pixel event. As long as the Pixel ID in Upstack matches the Pixel ID firing in your storefront, deduplication is automatic.

Which events does the Meta Conversions API receive?

PageView, ViewContent, AddToCart, InitiateCheckout and Purchase, each mapped to the Meta Conversions API event of the same name. Orders reach Upstack directly from Shopify, even when the browser pixel is blocked.

Which customer parameters are sent to the Meta Conversions API?

Every event carries every available match key: em, ph, fn, ln, ct, st, zp and country, plus fbc, fbp and external_id. Personal data is hashed with SHA-256 before it leaves Upstack.

How do I check that Shopify events are reaching the Meta Conversions API?

Upstack marks the destination Healthy, and Events Manager lists the server events with a Server badge. Open your dataset’s Event Match Quality: it is scored per event type, and Meta takes 24 to 48 hours to score new events.

Do I need a developer to connect Shopify to the Meta Conversions API?

No. Shopify connects as an app install with no theme edits, and most brands are live in under 20 minutes. Headless storefronts add the Upstack Pixel script instead of the theme app extension.

Do I need Zapier to send Shopify orders to the Conversions API with an event ID?

No. A Zap can send new paid Shopify orders as purchase events, but only deduplicates if its action carries the same event ID as your browser pixel. Upstack loads the pixel and sends the server copy itself, with the purchase event ID taken from the Shopify order ID, so the two always match.

Does Upstack send upsells and subscription renewals to Meta as purchases?

No. An accepted post-purchase upsell tagged AfterSell Upsell goes to Meta as a separate upsellPurchase custom event worth only the add-on, so the order isn’t counted twice. Renewals are tracked as their own event and aren’t sent to ad platforms as purchases.

Keep reading

More on Shopify and the Meta Conversions API.

Related connectors

See all 408 connectors

Get Shopify talking to Meta Conversions API.

A 15-minute walkthrough of this connector on your own account.

21-day free trial, no card. Month to month.