Tracking

Meta Pixel and Conversions API on Shopify: A Setup Checklist

Set up the Meta Pixel and Conversions API on Shopify: connect the integration, verify your domain, check value, currency and deduplication, then test it.

Updated 10 min read Fly ROAS editorial team
A laptop and a smartphone connected by glowing strands of fibre-optic light

Key takeaways

  • Connect through Shopify's Facebook & Instagram app and choose the data-sharing level that includes Conversions API, not just the browser pixel.
  • Remove old pixel code and extra tracking apps: two sources sending Purchase is the classic cause of double-counted sales.
  • Every Purchase needs a value, a three-letter currency code and an event ID shared by the browser and server versions.
  • Test with Events Manager's Test events and a real order, then reconcile the Purchase count against your Shopify orders.
  • Rules such as Aggregated Event Measurement have changed over time, so check Events Manager rather than relying on old tutorials.

The most reliable way to run the Meta Pixel on Shopify is through Meta's own integration, the Facebook & Instagram app, with Conversions API switched on so every event reaches Meta from both the browser and the server. After connecting, verify your domain, confirm every Purchase carries a value and a currency, check that browser and server events deduplicate, and test with a real order. This checklist walks through each step and the problems that commonly break Shopify tracking.

How do you connect the Meta Pixel to Shopify?

Before you start

  • Admin access to your Meta business portfolio (formerly Business Manager), the ad account and the Facebook Page.
  • A Shopify account with permission to install apps and sales channels.
  • A list of every place a Meta pixel might already fire: theme code, Shopify's Customer events and other apps.
  • Your store running on its custom domain, not just the myshopify.com address.

The typical connection path

Shopify and Meta both change these screens often, so follow the current flow in each. The path usually looks like this:

  1. Add the Facebook & Instagram app, which works as a sales channel, from the Shopify App Store.
  2. Connect your Facebook account, then choose your business portfolio, Facebook Page, Instagram account and ad account.
  3. Choose your existing pixel or create a new one. Events Manager now groups pixel and server events into a dataset, so you may see that word instead.
  4. Turn on customer data sharing and pick the level that includes Conversions API as well as the browser pixel. Earlier versions labelled the top level Maximum. Choose whichever option says it sends server events.
  5. Connect or create a catalogue so your products sync to Meta.
  6. Review the terms and finish setup.

Once connected, the integration sends the standard e-commerce events automatically, with product IDs that match the catalogue it syncs, and no code is needed. The Meta Pixel covers the browser side and the Conversions API the server side, which catches events that ad blockers, privacy settings or patchy connections stop in the browser.

Remove old pixel code

If the pixel was ever added by hand (in theme.liquid, the old checkout "additional scripts" box or a custom pixel in Customer events) or by a third-party tracking app, remove it or switch it off once the integration is live. Two sources sending Purchase is the classic cause of double-counted sales. Shopify has also been retiring script-based tracking on checkout pages in favour of Customer events, so snippets from older tutorials may not fire reliably anyway.

How do you verify your Shopify domain with Meta?

Domain verification proves to Meta that you own the site your ads send people to. Find Domains in Meta's Business Settings (it has sat under Brand safety, but search Business Settings for "Domains" if it has moved), add your root domain, such as yourbrand.com, and choose a method:

  • DNS TXT record. Add the record Meta gives you to your domain's DNS. If Shopify manages the domain, that's in Shopify's domain settings. If you bought it elsewhere, it's at that registrar. It survives theme changes, so it's usually the best choice.
  • Meta-tag. Paste the tag Meta gives you into the head section of your theme (theme.liquid). It's simple, but switching themes can remove it.
  • HTML file upload. Not usually practical on Shopify, which doesn't let you upload files to the root of your domain.

The integration may already have verified the domain for you, so check whether the Domains list shows it as verified before you add anything.

What about Aggregated Event Measurement?

After Apple's App Tracking Transparency changes in 2021, Meta introduced Aggregated Event Measurement, which for a time required a verified domain and a ranked list of up to eight conversion events, with Purchase at the top. Meta has since changed how this works, and your account may no longer show a manual event-ranking step. Check Events Manager: if an event configuration or prioritisation screen still appears for your domain, rank Purchase first. If it doesn't, there's nothing to set.

Which events and parameters should Shopify send?

These standard events cover a store's buying journey. Shopify's integration typically sends them automatically. Your job is to confirm they arrive with the right parameters.

Event Fires when Parameters to check
PageView Any page loads None needed
ViewContent A product page is viewed Product IDs, value, currency
Search A shopper searches the store Search term
AddToCart An item is added to the cart Product IDs, value, currency
InitiateCheckout Checkout starts Value, currency, number of items
AddPaymentInfo Payment details are entered Value, currency
Purchase An order is completed Value, currency, product IDs, event ID

Value and currency

Every event that carries money needs a value (a number such as 2499.00) and a currency (a three-letter ISO code such as INR or USD). Without the currency, Meta can't report purchase value properly, and both ROAS reporting and value-based bidding suffer.

Check what value your setup sends (order subtotal, or total including shipping and tax) by comparing a few Purchase events with the matching Shopify orders. Neither is wrong, but you need to know which one your ROAS is built on before you plug numbers into the ROAS calculator. If you sell in several currencies, for example through Shopify Markets, each event should carry the currency the customer actually paid in. Meta converts it into your ad account's currency for reporting.

Product IDs

The product IDs your events send (content IDs, in Meta's terms) must match the item IDs in your Meta catalogue, or Advantage+ catalog ads can't connect a product view to the right product. Using the same integration for the pixel and the catalogue keeps them aligned. A second product feed from another app may use a different ID format.

How does deduplication with event_id work?

When the browser pixel and Conversions API both report the same purchase, Meta needs to know it's one order, not two. It matches them on the event name plus an event ID: if a browser Purchase and a server Purchase arrive with the same ID, Meta keeps one and discards the other. The browser pixel passes this as eventID. The Conversions API calls it event_id.

Shopify's integration generates matching IDs for its own events. Deduplication breaks when a second source, such as leftover theme code, a tracking app or a custom server setup, sends its own Purchase events with a different ID or none at all.

Worked example: one order, two reports

Example: order 1042 for ₹2,499 (about $26).

  • Deduplicated: the browser sends Purchase with event ID order-1042, and the server sends Purchase with event ID order-1042. Meta counts one purchase worth ₹2,499.
  • Not deduplicated: a leftover theme snippet also sends Purchase, with no event ID, alongside the integration's events. Meta counts two purchases worth ₹4,998, and the ad that drove the sale reports double the revenue it earned.

Across a month, the second setup can make a campaign returning 1.5 ROAS look like one returning 3.0. You would scale it, and lose money doing so.

Events Manager shows deduplication details when you open an event such as Purchase. Check that browser and server events are being deduplicated rather than counted separately. If you're building a custom setup, Meta's Conversions API documentation sets out the technical rules.

How do you check Event Match Quality and Test events?

Event Match Quality

Event Match Quality (EMQ) is Meta's score out of 10 for how well the customer information sent with your server events can be matched to Meta accounts. Better matching means more conversions credited to the right ads and a stronger signal for optimisation. Find it in Events Manager by opening an event, starting with Purchase.

Scores rise when events include more of the identifiers Meta uses: email, phone number, name, city, postcode, country, external ID, IP address, user agent, and the browser and click IDs (fbp and fbc), hashed where Meta requires it. On Shopify, the data-sharing level controls how much of this the integration sends, which is another reason to choose the level that includes Conversions API. Purchase usually scores higher than browsing events, because checkout collects contact details. Follow the recommendations Meta shows beside the score rather than chasing a particular number.

Test events

The Test events tab in Events Manager shows events as they arrive, which makes it the fastest way to check a setup.

  1. Open Test events for your dataset, enter your store URL and open the site from there.
  2. View a product, add it to the cart and start checkout. Each event should appear within moments.
  3. Server events need a test event code to appear here. If Shopify's integration gives you nowhere to enter one, confirm server events instead by placing a real order and checking the Purchase event's recent activity in the overview.

The Meta Pixel Helper browser extension is a quick second check for browser events on any page.

Worked example: reconcile your counts

Example: over seven days, Shopify shows 120 orders.

  • Events Manager shows about 120 Purchase events: healthy.
  • It shows 205: something is firing twice. Look for a second pixel, custom code or another app.
  • It shows 70: events are going missing. Check that Conversions API is on and that a consent banner isn't suppressing tracking for everyone.

Compare against Events Manager, not Ads Manager. Ads Manager counts only purchases attributed to your ads under your attribution setting, so it should normally show fewer purchases than you have orders.

What are the most common Shopify pixel problems?

Problem Symptom Fix
Double-counted purchases More Purchase events than Shopify orders, so ROAS looks too good Keep one source per event (the integration), remove other pixels and apps, re-test
Missing or wrong currency Purchase value shows as zero or wildly off Check Purchase parameters in Test events. Custom setups need currency on every value-bearing event
Test orders in live data Unexplained purchases, sometimes credited to a campaign Keep test orders few, note when you placed them, and never click your own ads to test
Consent settings Browser events missing for many or all visitors Test as a visitor who accepts and one who declines. Review Shopify's Customer privacy settings
Catalogue ID mismatch Catalogue ads show the wrong products, with warnings about unmatched items Use one catalogue source, from the same integration as the pixel
Changes after an update Numbers jump after a theme, app or checkout change Re-run the checklist after every change

A note on test orders: orders placed through Shopify's test mode or its Bogus Gateway can still fire a real Purchase event, and cancelling the order in Shopify doesn't remove the event from Meta. A couple won't matter. A day of QA testing on a live pixel will.

Your Meta Pixel verification checklist

Check Where What good looks like
One pixel source Shopify apps, theme code, Customer events Only the Meta integration sends events
Conversions API on The integration's data-sharing settings A level that includes server events
Domain verified Business Settings, Domains Your custom domain shows as verified
Events arriving Events Manager, Test events PageView, ViewContent, AddToCart, InitiateCheckout and Purchase appear as you browse and buy
Value and currency Purchase event parameters A correct number and three-letter code on every Purchase
Deduplication Purchase event details Browser and server events deduplicated
Event Match Quality Purchase event in Events Manager Recommendations reviewed and acted on
Diagnostics Events Manager, Diagnostics No open issues, or each one understood
Order reconciliation Events Manager against Shopify, last 7 days Purchase count close to order count
Catalogue match Commerce Manager and Events Manager No warnings about unmatched product IDs

How Fly ROAS helps

Fly ROAS works from the results your pixel and Conversions API report to your own ad account, so its Autopilot verdicts are only as good as that data. That's why this checklist comes first. Once tracking is healthy, its alerts flag a silent pixel and cost-per-purchase spikes, and its analytics break ROAS down into click-through, conversion rate, order value and cost of reach while flagging leaks in the purchase funnel. The Day-1 account teardown audits the last 12 months of your account with a score and the top fixes. Start your test flight once your tracking passes the checklist.

Get tracking right once, then keep checking

Every decision you make on Meta, and every decision an algorithm makes for you, rests on the Purchase event. Connect through Meta's integration with Conversions API on, verify the domain, confirm value and currency, check deduplication and reconcile against Shopify. Re-run the checklist after every theme, app or checkout change, and whenever the numbers stop matching your orders.

With clean data in place, work out what you can afford to pay for a sale with our guide to calculating break-even ROAS, or see how the pieces fit together in our playbook on Facebook and Instagram ads for D2C brands in India.

Frequently asked questions

Does Shopify automatically add the Meta Pixel?

Not by default. You connect it by installing Shopify's Facebook & Instagram app and linking your business portfolio, ad account and pixel, after which the integration sends events without any code. Make sure the data-sharing setting includes Conversions API as well.

Do I need Conversions API if I already have the Meta Pixel?

In most cases, yes. The pixel runs in the shopper's browser, so ad blockers, privacy settings and patchy connections stop some events arriving. Conversions API sends the same events from the server as well. With deduplication working, Meta counts each event once.

Why are my Facebook purchases double counted on Shopify?

Usually because two sources send the Purchase event without matching event IDs, such as Meta's integration plus old theme code, a custom pixel or another tracking app. Remove every source except the integration, place a test order, and confirm Events Manager records a single Purchase.

How do I test my Meta Pixel on Shopify?

Use the Test events tab in Events Manager: open your store from it, view a product, add to cart and start checkout, and watch each event arrive. The Meta Pixel Helper extension is a quick extra check for browser events. For server events, place a real order and confirm its Purchase appears in the dataset overview.

What is a good Event Match Quality score?

Meta scores Event Match Quality out of 10 and higher is better, but there's no single target that suits every store. Work through the recommendations Events Manager shows beside the score, which usually involve sending more customer identifiers such as email and phone with server events. Purchase events typically score higher than browsing events because checkout collects contact details.

Fly ROAS AI is an independent product and is not affiliated with, endorsed or sponsored by Meta Platforms, Inc. Facebook and Instagram are trademarks of Meta Platforms, Inc.

Let an AI media buyer fly your ads.

Fly ROAS learns your brand, studies what's winning for competitors and builds ads from your real product photos — then launches, tests and scales them inside the caps you set.