Paid Ads

Meta Pixel vs Conversions API on Shopify: Do You Need Both?

An analytics dashboard on a screenPhoto: 1981 Digital / Unsplash

Yes, you need both. The Meta Pixel reports what shoppers do in their browser. The Conversions API sends the same events from a server. Meta counts each purchase once when the two copies carry the same event name and the same event ID. On Shopify, the Meta Pixel vs Conversions API choice comes down to running both without counting orders twice.

We wrote this guide for Shopify because Shopify ran 127 of the 150 advertiser sites we could load in our DTC Meta ads study of October 2, 2026. Most of those advertisers sell their own products; a few are retailers, marketplaces, an online grocer or link and landing-page services.

Meta Pixel vs Conversions API: why Meta wants both

Meta’s Conversions API best practices call for a redundant setup. That means the Conversions API in addition to the Pixel, with the same events sent through both. The server copy fills in events the browser loses. The browser copy keeps reporting events the server side does not send.

Meta Pixel Conversions API
Where it runs The shopper’s browser A server; on Shopify’s native channel, Shopify’s servers
What can stop it Ad blockers, connection and page loading errors, browser settings Not browser ad blockers
Events it can send What happens on the website Website events, plus events that happen offline or later
On Shopify Standard, Enhanced and Maximum Enhanced and Maximum only

Two copies of every event means Meta has to merge them. Meta’s deduplication documentation gives its main way to do that: a shared event name, such as Purchase, and a shared event ID. Each event gets its own ID, shared only by its browser copy and its server copy. The second copy has to arrive within 48 hours of the first. When the two are otherwise alike, Meta generally keeps whichever arrived first.

Without a match, one order is reported as two purchases. Meta’s help page on deduplication lists what that distorts: conversion rate, return on ad spend and attribution.

On Shopify you usually do not set the event ID yourself. Meta says partner integrations such as Shopify handle the deduplication parameters automatically. The trouble starts when a second source of Meta events is added on top of the native setup.

What the Pixel catches and what it misses

The Pixel is Meta’s script in the shopper’s browser. You connect it through Shopify’s Facebook & Instagram channel. Shopify’s help center says it then tracks seven events on its own:

Event When Shopify sends it
PageView A visitor views a page
ViewContent A visitor views a product
Search A visitor searches the store
AddToCart A visitor adds a product to the cart
InitiateCheckout A visitor clicks the checkout button
AddPaymentInfo A visitor enters payment details in checkout
Purchase A visitor completes the order and views the thank-you page

A browser event only exists if the browser runs the script and reaches Meta. That leaves gaps:

  • Ad blockers: Shopify notes that a browser-based ad blocker can stop the Pixel from sharing data.
  • Connection and loading errors: Meta says the Pixel can lose website events to network connectivity issues and page loading errors.
  • Browser settings: Meta’s deduplication help page says browser data can be blocked or lost because of browser settings.
  • A thank-you page that never loads: Shopify’s Purchase event fires on the thank-you page. If that page does not load in the buyer’s browser, the Pixel has no purchase to report.

A browser-only purchase count is a floor. The Conversions API is there to recover what the browser loses; it does not change who you may share data about.

Consent is a different kind of limit, and the Conversions API should not be used to get around it. Shopify’s pixel documentation covers markets set up to require consent, usually the EEA and the UK. There, web pixels run only after the visitor grants the permissions the pixel needs. Pixels configured as data sale also do not run for visitors who opted out of the sale or sharing of their data. The exception is a pixel that supports limited data use. Shopify says the store is responsible for its own privacy compliance and for getting the consents it needs.

What the Conversions API adds

The Conversions API sends events from a server straight to Meta. On Shopify, the help center says the purchase event travels between Shopify’s servers and Meta’s. Data sent server to server can’t be blocked by browser-based ad blockers.

  • Purchases the browser lost: An order whose browser event was blocked or lost still reaches Meta from Shopify’s side. Meta can count it and, if it matches a Meta account, use it for attribution and optimization.
  • Customer information for matching: At Shopify’s Enhanced and Maximum levels, the store shares the customer’s name, location, email address and phone number. Meta uses them to match the order to a Facebook or Instagram account.
  • Events outside the website: Meta’s best-practice page notes that the API can also send events that happen offline or later, which the Pixel cannot capture.

It has limits too. It does not replace the Pixel, since Meta’s recommended setup uses both. It does not remove your privacy obligations. Meta’s Business Tools Terms require a lawful right to share the data and any consents you need. Shopify asks stores to explain their data sharing in the privacy policy. And it will not make Ads Manager match your Shopify order count, for reasons covered in the questions at the end.

How double counting starts on Shopify

A second install sends its own event IDs, or none, so its events do not match the native channel’s. Meta’s fallback matches on the browser ID or an external ID. It does not merge two events from the same source. Two browser-only events, or two server-only events, that share only a browser ID or external ID are both kept. Each extra source of Meta events can add a second count.

Where the second copy comes from What it sends Where to look
Pixel code pasted into the theme A second PageView on every storefront page, plus any other events the pasted code was set up to send, such as ViewContent or AddToCart. Theme code does not load in checkout, so it cannot add a second Purchase. Online Store, Edit code, the theme.liquid file between the head tags
A Pixel once added in Online Store Preferences A second browser Pixel next to the app’s Settings, then Customer events, where Shopify moved these as custom pixels in February 2025
A custom pixel or tag manager container a developer added Browser events with their own IDs Customer events and your tag manager container
Old code in Additional scripts or checkout.liquid A second Purchase on the old Thank you page. Shopify sunset Additional scripts and checkout.liquid on the Thank you and Order status pages on August 28, 2025, and script tags on non-Plus stores on August 26, 2026, so on an upgraded store this code no longer runs. Settings, then Checkout: if Configurations still shows an upgrade notice, finish the upgrade and rebuild any tracking you still need as an app or custom pixel.
A server-side tracking app added on top of the channel A second server Purchase with a different event ID Your installed apps and the Event deduplication tab in Events Manager
An agency or ads app that brought its own Pixel Extra events on the same Pixel or on a second one Customer events, theme code and the app’s settings

Shopify’s own help pages back this up. Its Meta Pixel page warns that Pixel code left in the theme after you connect the app can produce duplicate or incorrect data in your reports. It asks stores that work with an agency or ads app to check the same. Its pixel migration guide calls tracking the same event more than once a common issue when migrating pixels. It names theme code, apps, Customer events, Additional scripts and checkout.liquid as places it happens. The sunset dates for the last two are on shopify.dev.

Custom and headless builds can hit the reverse problem. Server events sent without an event ID can only be merged through the browser ID or external ID. Meta says that generally works only when the browser event arrives first. If the server reports faster than the browser, the purchase counts twice.

Shopify’s Facebook & Instagram channel and its data-sharing setting

The native channel is Meta’s own app for Shopify, which Shopify’s help center calls Facebook and Instagram by Meta. It connects the Pixel. At the right data-sharing level, it also switches on the Conversions API. There are three levels:

  • Standard: The Meta Pixel only. It collects browsing behavior, and a browser ad blocker can stop it.
  • Enhanced: The Pixel plus the Conversions API. The purchase event also travels server to server, with the customer’s name, location, email address and phone number for matching.
  • Maximum: The Pixel plus the Conversions API with the same customer information. Shopify adds that this level is updated with Facebook’s latest advertising technology.

Meta’s page on connecting Shopify tells stores to choose Enhanced or Maximum. Shopify adds that the privacy settings behind each level depend on when the app was installed. Read the level descriptions in your own admin before you pick one. These are the steps as Shopify’s help center showed them in October 2026:

  1. In the Shopify admin, go to Sales channels, then Facebook & Instagram.
  2. Click Settings, then the data sharing settings. Shopify’s help pages label this “Data sharing settings” in one place and “Share data settings” in another.
  3. Turn on customer data sharing.
  4. Choose Enhanced or Maximum to add the Conversions API.
  5. Select or connect your Pixel, and make sure it is the same Pixel your ad sets optimize for.
  6. Remove any Meta Pixel code still in theme.liquid. Then check Customer events for a custom pixel that sends to the same Pixel ID. That includes one Shopify converted from Online Store Preferences in February 2025.

Shopify’s migration guide points to a custom pixel when no Shopify app pixel meets your requirements. A custom pixel next to the native channel should have a job the channel cannot do.

Event Match Quality: what raises it

Event Match Quality is Meta’s score from 0 to 10. It rates how well the customer information on a server event can match it to a Meta account. Meta’s Event Match Quality page says it applies to website events sent through the Conversions API. Each event gets its own score, based on the last 48 hours of data. Meta says matched events help attribute conversions to your ads. They also help deliver ads to people more likely to convert. Meta ranks the customer information parameters by priority:

Customer information Meta’s priority
Email High
Click ID High
Facebook Login ID, birthdate, country, phone number, external ID, browser ID Medium
Lead ID, first name, last name, city, ZIP code Low
  • Share at Enhanced or Maximum: At Standard the store sends no server events, so there is no score to raise.
  • Keep the click ID intact: Meta’s click ID comes from the fbclid parameter in the landing page URL, per its fbp and fbc documentation. A redirect between the ad and the store that drops the query string drops the click ID with it.
  • Send every identifier you lawfully hold: Meta advises sending several customer information parameters when they are available. Email and the click ID carry the most weight.
  • Format before hashing: If you send server events from your own code, Meta’s customer information rules apply. Email, phone, name and location fields must be normalized and SHA-256 hashed. The IP address and user agent are sent unhashed. Values in the wrong format may not match.

How to check it in Events Manager

You can run these checks yourself. Meta’s page on monitoring a Conversions API setup describes each tab used below.

  1. Open Meta Events Manager and select your Pixel’s dataset. Meta’s help pages call the left menu Datasets in some places and Data sources in others.
  2. Find Purchase and confirm it arrives from both the browser and the server. If you only see browser events, the store is likely on Standard or the server connection has stopped.
  3. Open the event details for Purchase. The Event overview tab shows whether you send the event redundantly. The Event coverage tab compares Conversions API events with unique browser events. Meta suggests aiming for 75% coverage.
  4. Open the Event deduplication tab, which shows the deduplication keys your events carry, such as the event ID. It also shows the share of events deduplicated from each source, and Meta shows a warning when that rate is too low. A server event with no event ID is the first thing to fix.
  5. Check the Event matching tab for the score and Meta’s tips. The Data freshness tab shows how long server events take to arrive, and the Diagnostics tab lists any warnings.
  6. Open Test events. Meta’s deduplication help page points to this tool because it shows which test events were received, deduplicated or dropped. Browser events appear when you enter your store’s URL and click Open website. Shopify’s server events may not appear there. Meta’s developer documentation says server events show in the tool when they carry a test event code. Stores under core setup may also see less. For the server side, use the Event deduplication tab from step 4.
  7. Line up the Purchase trend with your Shopify orders and watch for unexpected spikes or drops, as Meta advises. Meta’s guide to verifying a setup says the Overview counts events before they are deduplicated, so Purchase there can rise right after you move to Enhanced or Maximum, even when deduplication works. The warning sign is a rise in Purchase with no rise in orders after a new app, custom pixel or tag manager container went in. Confirm it in the Event deduplication tab from step 4 or with the test order below.
  8. Place a test order with Meta’s Ads Data Advisor Chrome extension running and your own ad blocker off. Shopify’s test order options are its test payment gateway, Shopify Payments’ test mode, or a real order you cancel and refund right away. Turn test mode off when you finish, since customers can’t place live orders while it is on.
  9. On the thank-you page, Purchase should fire once on one Pixel. Two Purchase events on the same Pixel, or a Pixel ID you do not recognize, point to a second browser source. Shopify’s pixel migration guide adds a second check: open your browser’s developer tools and look for two requests to Meta for the one purchase.

A test Purchase stays in your Meta data. Meta’s Test events page says activity from testing still appears in Events Manager, Ads Reporting and Audience Creation results, even after you clear it from the tool.

Our free Meta ads audit is built from public information only: your live ads in the Meta Ad Library, the pages those ads send people to, and what your Pixel shows from the browser. It needs no access to your ad account and ends with three ads or angles we would test first. A partner replies within one business day, and the written teardown follows by email. We never publish a teardown without the brand’s written permission. Server-side tracking only shows in your own Events Manager, so the checks above are yours to run. If you hire us as your Meta ads agency, Pixel and Conversions API setup is part of the work, and every order is tracked to a source in our weekly numbers.

Health and wellness stores: check your data source category

Meta can assign websites that send it data to data source categories. Its health and wellness category covers health-related products and services. That category can come with data sharing restrictions that hold back custom parameters and URL paths, certain mid and lower funnel events, or every event, in some countries or everywhere. Meta tells you by email and in Events Manager when it limits a data source. The Settings tab of your dataset shows any category you or Meta assigned.

Our guide to Facebook ads for supplements covers the three levels, the steps to request a review and why renaming Purchase is no way around a restriction. The wider category work is on our supplement marketing page.

Meta Pixel vs Conversions API questions, answered

Can I use the Conversions API without the Meta Pixel on Shopify?

Not through the native channel. Its levels are Pixel only (Standard) or Pixel plus Conversions API (Enhanced and Maximum). That matches Meta’s recommendation to run both. A custom build can send some events only from the server. Meta says deduplication is only needed when the same event comes from both sources.

Why does Ads Manager show fewer purchases than Shopify?

They count different things. Shopify counts every order. Meta’s page on event count differences says Events Manager shows most events Meta received. Ads Manager shows the events attributed to your ads, after duplicates and some other events are discarded. A gap between Ads Manager and Shopify is normal. For a Purchase count in Events Manager that rises with no rise in orders, see step 7 above.

Does the same advice apply outside Shopify?

Yes. Meta’s redundant setup and deduplication rules are not specific to Shopify. Meta names WooCommerce alongside Shopify as integrations that handle the deduplication parameters automatically. On a custom store, Meta says you add the event name and event ID in your own code.

Do I need a developer to set this up?

Not for the native channel at Enhanced or Maximum. You may want one to remove old Pixel code from the theme, to review custom pixels in Customer events, or to build server events for a headless store.

Genti Xharavina
Genti Xharavina, Partner

Spent years making the paid-social creative that sells physical products for direct-to-consumer brands before NextAds. Runs the strategy and the work: creative, ad accounts, landing pages and SEO.

Free review

Tell us what you sell.

We reply within one business day, starting with a free review of your ads and the page they land on.

  1. You send the basics. What you sell, your site, and what it should do better.
  2. A partner reads it. Your ads and the pages they land on, from public information.
  3. You get a reply in one business day. What we would fix first, in plain English.
hello@nextads.us