Skip to content

Conversions API

Meta Pixel vs Conversions API: Why Shopify Stores Use Both

Meta Pixel vs Conversions API: browser vs server events, why browsers lose pixel events, event_id deduplication, Event Match Quality, and how to run both.

By PixlBridge TeamUpdated 7 min read

The Meta Pixel is a script that runs in the shopper's browser and reports what they do on your site. The Conversions API (CAPI) sends the same kind of events from a server straight to Meta. Put simply: with the pixel, the browser tells Meta what happened; with CAPI, your store's server does. Meta recommends running both. This guide explains how each one works, what each one misses, how deduplication stops double counting, and how the setup looks on a Shopify store with PixlBridge.

The Meta Pixel: browser events

The pixel is a JavaScript snippet loaded on every page. When the shopper views a page, opens a product or completes checkout, it sends a standard event such as PageView, ViewContent, AddToCart, InitiateCheckout or Purchase from the browser to Meta. It also keeps two first-party cookies that help Meta recognise the visitor: _fbp, a browser ID, and _fbc, which holds the fbclid click ID Meta adds to the URL when someone clicks an ad.

Its strength is that it sees the browser directly: pages, clicks, cookies and device, as they happen. Its weakness is the same thing. If the script does not load, or its request does not get through, the event does not exist.

The Conversions API: server events

With CAPI, a server sends events over HTTPS to Meta's Graph API (/{pixel_id}/events). Each event carries an event_name, an event_time, an event_id, an action_source such as website, the page URL, and a user_data object of customer information parameters: hashed email, phone, name and address, plus the fbp and fbc values, IP address and user agent when they are available. Purchases add custom_data with the value, currency and products.

Because the server is not running inside the shopper's browser, ad blockers and cookie limits do not decide whether the event reaches Meta. And because the server has the order itself, it can attach details the browser often does not have, such as the email and phone number from checkout.

Why browsers lose pixel events

A browser-only setup no longer sees every event. The common causes, in general terms:

  • Ad blockers and privacy extensions block requests to Meta's domains, so the pixel never loads or never reports.
  • Browser tracking protection. Safari's Intelligent Tracking Prevention and similar features in other browsers shorten the life of cookies set by scripts, so _fbp and _fbc may be gone by the time a shopper comes back to buy.
  • iOS privacy settings. On iPhone, App Tracking Transparency limits tracking in apps for people who opt out, and Link Tracking Protection removes click identifiers such as fbclid from links opened in Mail, Messages and Safari Private Browsing.
  • Everyday failures: slow mobile connections, shoppers who close the tab before the script loads, and in-app browsers that behave differently from a normal browser.

How much each cause costs you depends on your shoppers' devices and browsers, so the only figure that matters is your own: compare the purchases Meta receives from the browser with your Shopify orders for the same days.

Why use both

Meta's recommended setup is redundant: keep the pixel and send the same events through CAPI. Each covers the other's gaps.

  • The pixel supplies browser signals in real time, including the _fbp and _fbc cookies when it can set them.
  • CAPI delivers the events the browser loses and enriches purchases with hashed customer details from the order.
  • Together they give Meta more events to learn from and more match keys per event, which feeds both attribution and the delivery system that decides who sees your ads.

Running both only works if Meta can tell that a browser event and a server event are the same thing. That is what deduplication is for.

Deduplication with event_id

Deduplication is how Meta keeps one copy of an event that arrives twice. Meta treats a browser event and a server event as duplicates when they share the same event_name and the same event_id and arrive within 48 hours of each other, and keeps one. The rule is simple, and so are the ways to break it:

  • Different IDs. If the pixel uses one ID and the server another, Meta counts the purchase twice and Meta-reported ROAS goes up for the wrong reason.
  • Different event names. A Purchase from the browser and a custom Order event from the server are never merged.
  • Two server senders. Two apps that both send Purchases through CAPI, each with its own IDs, double count even without a browser pixel.

In Events Manager, each event's overview shows the connection method it arrived through (browser or server) and how many events were deduplicated.

Event Match Quality

Event Match Quality (EMQ) is Meta's score from 0 to 10 for how well the customer information on your server events matches Meta accounts. A purchase only helps your ads if Meta can tell who made it. Browser events carry cookies, IP address and user agent; server events can add hashed email, phone, name and address from the order, which is why Purchase events sent through CAPI from a checkout tend to score higher than PageView events. EMQ is shown per event in Events Manager. The Event Match Quality guide lists which parameters count and how to normalise them.

Meta Pixel vs Conversions API at a glance

Meta PixelConversions API
Runs inThe shopper's browserA server
Can be stopped byAd blockers, browser tracking protection, the page closing earlySetup or server errors, which you can monitor
Identifiers_fbp and _fbc cookies, IP, user agentHashed email, phone, name, address, external_id, plus fbp, fbc, IP and user agent when passed on
Order dataWhat the page exposesThe full order from your store
ConsentShould follow your cookie-consent settingsShould follow the same settings
DeduplicationSends an eventID only if it is set up to, and it must match the server'sSends an event_id with each event

How PixlBridge sets this up on Shopify

PixlBridge runs the server side and collects the browser signals that help server events match. On a Shopify store:

  1. Connect Meta. You sign in with Facebook Login for Business and choose the ad account and the Meta Pixel that should receive events.
  2. Connect the store. PixlBridge adds an app-owned web pixel through Shopify's own pixel system, with no theme edits. It listens to Shopify's standard customer events and passes Shopify's event ID, the _fbp and _fbc cookies when present, the page URL and the user agent to PixlBridge. It follows your store's cookie-consent settings.
  3. Order data from Shopify. Signed order and checkout webhooks supply the order value, currency, products and the customer details used as match keys. Email, phone, name and address are normalised and SHA-256 hashed as they arrive; only the hashes are stored.
  4. One event per action. A purchase seen by the web pixel and by the order webhook is merged into one Purchase with an event_id built from the checkout token. PixlBridge sends PageView, ViewContent, Search, AddToCart, InitiateCheckout, AddPaymentInfo and Purchase through the Conversions API, and each one can be switched off per store.

For the browser half, Meta deduplicates only when the browser pixel sends the same event_id as the server event. PixlBridge uses Shopify's event ID for the browsing events and purchase:{checkout_token} for Purchase, so only a browser pixel that sends exactly those IDs is deduplicated against them. A pixel that sends its own IDs, which includes the one from Meta's Facebook & Instagram app, is not. Stores with no browser pixel at all still get server events, which Meta can use for optimisation.

That makes one overlap a decision. Meta's Facebook & Instagram sales channel at its Maximum data-sharing level already sends Purchases with its own IDs. Running it alongside PixlBridge's Purchase events would count purchases twice and inflate Meta-reported ROAS, so either lower the channel's data sharing or switch off Purchase in the store's PixlBridge settings. PixlBridge flags the overlap on the store's health check.

To confirm it works, create a test event code in Events Manager, send a test purchase from the store in PixlBridge and watch it arrive under Test events. After a real order, look for Purchase events from the Server connection method. In PixlBridge, the “Meta Pixel + Conversions API” card on My store shows what was received and sent to Meta through CAPI, any failures with their reason, and which match keys your events carry.

Summary

The Meta Pixel and the Conversions API are not alternatives. The pixel reports from the browser and loses events whenever the browser does; CAPI reports from the server and can carry the order's hashed customer details. Run both, give them the same event_id so Meta deduplicates, watch Event Match Quality, and make sure only one tool sends each event. PixlBridge for Shopify sets up the server side with no code, and the Shopify server-side tracking guide goes deeper into match keys, retries and verification.

Start free. See your first sale come in.

Try PixlBridge free for 14 days, no card, with 5 AI ad images. After that, plans start at $79/month.