Integration guide
The Shopify Facebook offline conversions integration
Browser pixels miss a growing share of purchases because of ad blockers, cookie limits, and iOS privacy changes. Sending the sale from your server closes that gap. This integration takes each Shopify order and reports it to Facebook through the Conversions API, which is Meta's server-side channel and the modern home of what used to be called offline conversions. Because the event comes from your server rather than the shopper's browser, it still counts when the pixel does not, and with a shared event ID the two are matched so nothing is double counted. The setup is no-code on Make.com, n8n, or Zapier.
What does the Shopify Facebook offline conversions integration do?
It reports Shopify purchases to Facebook from the server side so your ad reporting and optimisation see sales the browser pixel misses. When an order is paid in Shopify, a webhook sends the order to your automation. The automation builds a Purchase event for the Conversions API: the order value and currency, a hashed version of the customer's email and phone for matching, the action source, and an event ID. Meta uses the hashed fields to attribute the sale to the right person and campaign, and it uses the event ID to deduplicate against the browser pixel if you also run one. The customer data is hashed with SHA-256 before it leaves your automation, so raw emails and phone numbers are never sent in the clear.
How do you set up the Shopify Facebook offline conversions integration?
- 1
In Meta Events Manager, open your dataset or pixel, go to Settings, and generate a Conversions API access token. Note the pixel or dataset ID as well.
- 2
In Shopify, add a webhook for the 'Order payment' or 'Order creation' topic that posts to your Make.com, n8n, or Zapier webhook URL, or use the platform's Shopify trigger.
- 3
In the automation, normalise and hash the customer email and phone with SHA-256. Most platforms have a hash function or a crypto node for this, so the raw values never leave your flow.
- 4
Call the Conversions API with the event name Purchase, the value and currency, the hashed user data, an action source, and an event ID that matches your pixel's event ID for that order.
- 5
Place a test order and open the Events Manager test tool. Confirm the server event arrives, shows a good match quality, and deduplicates against the pixel, then turn the flow on.
Skip the build, get the ready-made template
An import-ready file with a setup guide, live in about fifteen minutes.
What does the server-side connection improve?
Recover attributed sales
Purchases blocked from the browser pixel still reach Meta from your server, so campaigns get credit for revenue they actually drove.
Better optimisation signal
A steadier stream of purchase events with strong match quality gives the delivery system more to learn from, which helps value-based bidding.
Cleaner reporting through dedup
A shared event ID ties each server event to its pixel event, so a single sale is counted once rather than twice in your dashboards.
The result you get
Shopify sales report to Facebook from your server with hashed data and event dedup, so attribution holds up even when the browser pixel is blocked.
Related integrations
Questions about the Shopify Facebook offline conversions integration
Is this the same as the old offline conversions upload?
It replaces the manual offline upload with a live server feed. Meta folded offline events into the Conversions API, so you send purchases through the same API in real time rather than uploading a file later.
Is customer data sent in the clear?
No. Email and phone are normalised and hashed with SHA-256 inside the automation before the event is sent, which is what Meta requires for matching. Raw values never leave your flow.
Do I still need the browser pixel?
You can run both. When you do, give the server event and the pixel event the same event ID so Meta deduplicates them. Many stores run server-side only, but keeping both usually improves match rates.
Which Shopify event should trigger it?
Order payment is the cleanest signal for a completed purchase. Order creation also works if you want to capture the sale earlier and reconcile refunds separately.