GUIDE

Meta Conversions API on Shopify

The Conversions API lets a server send events to Meta directly, next to or instead of the Meta pixel in the shopper's browser. For a Shopify store the event that matters most is the purchase: it is what Meta's campaigns learn from when you optimise for sales.

Why the pixel alone is not enough

The Meta pixel reports a purchase from the shopper's browser, on the Thank you page. An ad blocker, Safari's limits, a declined cookie banner or a shopper who closes the tab first can each stop it. Meta then sees fewer purchases than you had, and both your reports and your campaigns' learning run on part of your sales. Meta itself recommends using the Conversions API together with the pixel. If your store has no pixel, start with adding the Meta pixel to Shopify.

Your options

OptionWho sends purchasesSetupWhat you see per orderCost
Facebook & Instagram sales channelShopify, at the Enhanced and Maximum data sharing levelsChange one settingMeta's totals in Events Manager; no record per orderNo extra cost
Meta's setup in Events ManagerMeta, for a pixel already on your siteA few clicks, no codeMeta's totals in Events ManagerNo setup fee, according to Meta
An appThe app's serverInstall and connectDepends on the appA monthly fee, by app
Your own server-side Google Tag Manager containerYour container, in your own Google Cloud projectA developer sets it up and keeps it updatedWhat you buildHosting and developer time

The sales channel. Shopify's help says that at the Standard data sharing level the Facebook & Instagram channel uses the Meta pixel in the browser, and at Enhanced and Maximum it also uses the Conversions API. You change the level under Sales channels > Facebook & Instagram > Settings > Data sharing settings.

Meta's own setup. Meta's developer documentation says a pixel already on your website can get a Conversions API setup for website events from Events Manager, with no code and no setup fee.

An app or your own container. Both send purchases from a server you choose, with the settings you choose. Your own container gives full control and needs a developer to run it.

Count each purchase once

Meta merges a browser purchase and a server purchase into one only when both carry the same event name and the same event ID, and only within 48 hours of the first copy. Two server senders, for example the sales channel at Enhanced and an app, are not merged: Meta counts each purchase twice. So:

  • keep one server sender for purchases;
  • if the pixel stays on, the server must send the same event ID the pixel sends for that order;
  • after switching, check that the count of purchases in Events Manager is close to your paid orders, not above them.

Deduplication with event_id, step by step

Meta can receive one order twice: once from the shopper's browser and once from a server. Its recommended way to keep one copy is the event ID and event name. The pixel passes an eventID as the fourth argument of its fbq('track', 'Purchase', ...) call, and the server sends the same value as event_id. When the IDs and the event names match, Meta treats the two as one purchase. Meta's parameter reference says the ID can be any unique string and names order numbers as a good choice. As a fallback Meta can match on the browser ID (fbp) or an external ID, but it says that generally works only when the browser event arrives first.

Where to look. In Events Manager, open your pixel, click Event Details for Purchase and open the Event Deduplication tab. Meta shows three figures:

  • Rate of Events Deduplicated: the share of events from each source that Meta deduplicated.
  • Rate of Deduplication Key Usage: the share of events from each source that carried each key, such as the event ID.
  • Overlap: of the events that carried a key, the share Meta received from both sources.

When it works, both browser and server show the event ID on nearly all purchases, the overlap is high, and Meta's Purchase count sits close to your paid orders.

When it doesn't, you see one of these:

  • one source carries the event ID on almost every purchase and the other on few: the sender with the low share sends no ID, often an old theme snippet or Tag Manager tag;
  • both carry the key but the overlap is low: the two sides send different values, for example the order number with its # sign on one side and the long order ID on the other;
  • the server copy arrives more than 48 hours after the first: Meta counts it again.

Meta says the Overview page shows events before deduplication, so a high Purchase count there is no proof of a duplicate on its own. To see the IDs of one order, place a real order with Test events open and compare the event ID of the browser copy with the server copy.

Event Match Quality for Purchase

Event Match Quality is Meta's score for how well the events your server sends can be matched to people on Meta. It decides how many purchases Meta can tie to the people who saw your ads. Meta scores it on events sent from a server, from the customer details that come with each event: hashed e-mail, hashed phone number, name and address, and browser identifiers such as the click ID and the browser ID.

Why it is low:

  • Few customer details travel with the purchase. A purchase that carries only an IP address and a user agent gives Meta very little to work with.
  • The sender never had them. A connection that runs from the shopper's browser sees only what the browser knows at that moment. A sender that works from the paid order has the e-mail, phone, name and address the buyer gave.
  • Details get lost on the way. A phone number without a country code, an e-mail address with stray spaces or an empty field cannot be matched. Browser identifiers are lost when the shopper blocks cookies.
  • Consent. A buyer who declined marketing should not be sent to Meta. A lower score on stores with many such buyers is expected and is not a setting to fix.

How to check it: in Events Manager, open the Overview tab and the Purchase event. Read the score and the list of customer parameters, with the share of events that carried each. Look for e-mail and phone first. Then open a recent paid order in Shopify: if many orders have no phone number, your checkout doesn't ask for one, and no sender can pass it on. More in Low Event Match Quality for Purchase in Meta.

What Meta needs with each purchase

  • The order's value and currency, and an order ID as the event ID.
  • event_time no more than 7 days before sending. Meta says one older event makes the whole request fail.
  • event_source_url, required for website events.
  • Customer details as hashes: e-mail, phone, name and address, normalised before hashing. The IP address and the browser's user agent go unhashed.
  • The browser and click IDs, fbp and fbc, read from cookies on your domain at the visit and kept with the order. They tie the purchase to the ad click.

How to check it works

  1. 1In Events Manager, open your pixel and the Purchase event. See how many purchases came from the browser and how many from a server.
  2. 2Read the Event Deduplication tab (above).
  3. 3Read Event Match Quality for Purchase (above).
  4. 4Compare yesterday's Purchase count with your paid online orders in Shopify for the same day, in your store's time zone.
  5. 5To see one server purchase arrive, use Test events: a server event shows there only when it carries the test code.

Or let Tikra check it for you: install from the Shopify App Store

What Tikra adds

Tikra is a Shopify app that sends your paid online orders to Meta through the Conversions API, as the buyer's consent allows. What it adds to a plain Conversions API connection:

  • A record for each order: what was sent to Meta, when, and Meta's answer.
  • A check before sending: Tikra reads Meta's own purchase count to see whether another tool already sends your purchases, before it sends any. You go live when you are ready.
  • An hourly check: orders Meta did not accept are sent again, up to Meta's 7-day limit.
  • More than Meta: the same orders to Google Analytics 4, Google Ads, TikTok, Pinterest, Snapchat, Klaviyo and ChatGPT Ads.
  • Consent your way: Strict, Standard, or your store's own consent tool decides.
  • A guarantee: at least 97 % of eligible orders reach each connected platform, or Tikra fixes it within 12 hours or credits a month. Terms apply.

Connecting Meta takes about 2 minutes: you log in to Meta and pick your pixel.

Frequently asked questions

Does Shopify send purchases to Meta's Conversions API?

Yes, through the Facebook & Instagram sales channel at its Enhanced and Maximum data sharing levels.

Do I still need the Meta pixel?

Meta recommends using both. The pixel also sends page views, product views and add to cart events, and captures the browser and click IDs that tie a purchase to an ad.

Will Meta count my purchases twice?

Only when two senders send the same purchase without a shared event ID, or two server senders send it at all. Keep one server sender for purchases.

Does the Conversions API work with consent banners?

It has to follow them. A server must apply the buyer's consent choice the same way the pixel must.

Why does Events Manager show fewer purchases than Shopify?

Purchases that never left the browser, consent declines, and orders that don't count in Meta, such as point of sale sales, all make the gap. See Meta shows fewer purchases than Shopify.

What does it cost?

The sales channel and Meta's own setup have no extra cost. Apps charge a monthly fee. Tikra starts at $99 a month, with setup included and a 14-day free trial.

Check your store

Install Tikra from the Shopify App Store

Check that your tracking works

Related: Shopify server-side tracking · Shopify conversion tracking · Conversions API says events received, Events Manager shows nothing