If Ads Manager reports fewer sales than your store does, the Meta Pixel is often why. It runs in the visitor's browser, and browsers drop, block and forget events. The Conversions API sends the same events from a server, so Meta sees the sales it was missing. On some platforms setup is a few clicks; on others it's a developer's job. Here's how to tell which you need, and how to check it's working.

The short answer
  • The Conversions API (CAPI) sends conversion events to Meta from your server or store platform, rather than from the visitor's browser.
  • Meta's own advice is to run it alongside the Pixel and send the same events through both.
  • On Shopify, turning on Enhanced or Maximum data sharing in the Facebook & Instagram app does most of the job.
  • Elsewhere: the Conversions API Gateway (no code, your own cloud account), server-side tagging, or a direct integration.
  • Give each event the same name and event ID in the browser and on the server, or one sale can be counted twice.
  • Then check Events Manager: the deduplication rate, and an Event Match Quality score of 6.0 or higher where you can get it.

What the Conversions API is, in plain English

The Meta Pixel is code on your site that tells Meta, from inside the visitor's browser, when someone views a product, adds to cart or buys. The Conversions API does the same job from the other end. Meta describes it as a connection that carries your marketing data from your server, website platform, app or CRM to Meta's systems.

Both streams land in the same place. Events Manager now calls that container a dataset, and Meta's own dataset quality reference treats the dataset ID and the Pixel ID as the same thing. Meta's setup guide says to use the same Pixel ID for your browser and server events, so the two copies of each event can be matched.

Why the Pixel alone under-reports

Browsers are unreliable messengers. Meta's best-practice guide says the Conversions API lets you share website events that the Pixel may lose due to network connectivity issues or page loading errors. Shopify's help center names the other big leak: a browser-based ad blocker can prevent the Meta pixel from sharing data, while data sent from server to server can't be blocked that way.

Cookies are a third. The Pixel's identifiers are first-party cookies set in the browser, and Safari caps cookies created by page scripts at seven days. Someone who clicks an ad on Monday and buys in Safari two weeks later may arrive as a stranger.

The quietest leak is where the Purchase event fires. If it only fires when the thank-you page loads, anyone who closes the tab early is missing too. As our funnel case study puts it, anyone whose browser blocks the Pixel is never counted at all, and the platform optimizes toward the wrong people. And Meta learns from the purchases it can see, so a setup that misses sales teaches it less about who buys.

The four setup routes compared

Which route fits depends on where your site runs and where the sale is confirmed.

RouteHow it worksEffort and costWatch for
Shopify's Facebook & Instagram appSet data sharing to Enhanced or Maximum, and Shopify sends the purchase event server to serverMinutes in your Shopify admin. No codeShopify's help page only names the purchase event, so check what else arrives
Conversions API GatewayThe Pixel sends events to a gateway, which passes them to the Conversions APINo coding, but it runs in a cloud account you own (AWS or Google Cloud). You pay the cloud or partner feesIt relays what the browser sends, so a sale confirmed only on your server needs another route
Server-side taggingYour site sends events to a tagging server you control, which passes them on to MetaSomeone comfortable configuring tags, plus hosting for the serverEvent IDs must match the browser copies, and the server needs watching
Direct integrationYour own server calls the Conversions API with an access token, from checkout, a payment webhook or your CRMDeveloper time. The most controlHashing customer data, matching event IDs, and sending each event within 7 days

Sources: the Shopify Help Center, Meta's Conversions API Gateway and getting started documentation, and Google's server-side tagging guide, reviewed October 2026.

For most small businesses the choice makes itself. On Shopify, use the app. On a platform whose checkout you don't control, the Gateway works without a developer. If the sale is confirmed on your own server, or closes on the phone, you need a direct integration: it's the only route that can send an event no browser saw.

Setting it up on Shopify

Shopify builds the Conversions API into its Facebook & Instagram sales channel. These steps follow Shopify's own instructions:

1

Open the Facebook & Instagram settings

From your Shopify admin, go to Sales channels, then Facebook & Instagram, then Settings, and open Data sharing settings.

2

Turn on customer data sharing

In the Customer data sharing section, activate customer data sharing.

3

Choose Enhanced or Maximum

Standard is the Pixel alone. Enhanced adds the Conversions API, and Maximum adds, in Shopify's words, Meta's latest advertising technology. Both share customers' personal information with Meta for matching, so make sure your privacy policy says so.

4

Connect the right Pixel

If no Pixel is connected yet, connect the one your ad account already uses, so new events land in the dataset your campaigns learn from.

5

Check it in Events Manager

Place a test order and run the checks below before you trust the numbers.

Deduplication: one sale, counted once

With both running, most sales reach Meta twice. Meta merges the copies when they match. Its deduplication guide recommends matching on two fields: the event name, such as Purchase, and an event ID that's identical in both copies. In the browser the ID goes in the Pixel's eventID option. On the server it's the event_id field.

How Meta decides it's one event
  • The event name and the event ID match exactly in the browser and server copies.
  • The second copy arrives within 48 hours of the first.
  • Both sources are sending. Meta doesn't deduplicate when you only use one, browser-only or server-only.
  • Without an event ID, Meta can match on the fbp cookie value or your external_id, used consistently on both sides.

Skip the matching ID and Meta counts two sales. Our case study names the cost: Reporting then shows about double the truth, the most expensive kind of wrong number, because you will scale spend against it.

Get it right and the server becomes the record you trust. On a custom funnel we built for a coach and author, the order number is the event ID: Purchase is sent from the payment webhook with the order number as its event ID, and the browser copy carries the same ID. 100% of paid orders since August have been reported to Meta from the server, deduplicated against the Pixel.

How to check it in Events Manager

1

Send test events

In Events Manager, go to Data Sources, choose your dataset, then Test Events. Server events need the code from that screen in the test_event_code field, and Meta's docs say to remove it before you send live events.

2

Look at the connection method

The dataset's overview shows which channel each event arrived through: browser, server, or both. Meta says you should be able to verify events within 20 minutes of sending them.

3

Read the deduplication rate

The Event Deduplication tab shows the share of events deduplicated from each source. Higher is better, and Meta shows a warning when the rate is too low.

4

Check Event Match Quality

EMQ scores out of 10 how well the customer information on your server events matches people on Meta. Meta recommends 6.0 or higher where possible. Its best-practice guide lists email address, phone number, name and IP address among the most useful details to send.

5

Watch coverage and freshness

Meta also reports event coverage, the 7-day average share of Pixel events the Conversions API covers too, and data freshness, the delay before Meta receives each event.

The mistakes we see most

Check for these
  • No event ID, or two different ones. Meta counts the same sale twice, and budget gets scaled on numbers that aren't real.
  • Two integrations sending the same event. An app and a plugin both send Purchase with different IDs. Pick one server-side source per event.
  • Purchase fired only from the thank-you page. Anyone who leaves before it loads, or blocks the Pixel, goes missing. Send Purchase when payment is confirmed on the server.
  • Hashing the wrong fields. Meta's customer information rules require email, phone and name to be normalized and hashed, while the IP address, user agent and the fbp and fbc values must not be hashed.
  • Sending events late. If any event in a request is more than 7 days old, Meta rejects the whole request.
  • No value or currency on Purchase. Meta can count the sale but can't report revenue or return on ad spend from it.

Do it yourself, or pay someone?

Do it yourself if you're on Shopify with its standard checkout. Enhanced data sharing takes minutes to turn on, and Events Manager shows the same day whether it's working. The Gateway needs no developer either, if you're comfortable in a cloud console, though the server and its bill are yours.

Pay someone when the setup touches code or money: a custom checkout, payments confirmed by webhook, bookings on a third-party system, leads that close by phone, or two integrations already firing with a deduplication warning. That's where a mistake doubles your reported sales or hides real ones, and Ads Manager won't tell you which.

With us, Pixel and Conversions API setup is part of Meta ads management, which runs $500-$2,000 a month with no setup fee. On our Meta ads service for online stores, the Conversions API goes in server-side, with deduplication, in week one. How much Facebook ads management costs covers market rates.

Questions people ask

What is the Meta Conversions API?

A way to send conversion events, such as purchases and leads, to Meta from your server, store platform or CRM instead of the visitor's browser. Meta recommends running it alongside the Pixel, not instead of it.

How do I set up the Conversions API on Shopify?

In your Shopify admin, go to Sales channels, Facebook & Instagram, Settings, then Data sharing settings. Activate customer data sharing and choose Enhanced or Maximum, which both add the Conversions API to the Pixel.

What is the Conversions API Gateway?

A no-code option in Events Manager. It runs in a cloud account you own, such as AWS, and passes the events your Pixel sends from browsers on to the Conversions API. Meta says the only cost is the cloud or partner fees.

How do I stop the Pixel and the Conversions API counting the same sale twice?

Send the same event name and event ID from both. Meta merges matching events that arrive within 48 hours of the first one.

What is a good Event Match Quality score?

Meta scores it out of 10 and recommends 6.0 or higher where possible. Sending more customer information, such as a hashed email address and phone number, is the usual way to raise it.

Should I pay someone to set up the Conversions API?

Not on Shopify with its standard checkout. Pay for help when sales are confirmed on your server, bookings run through another system, or leads close by phone. We're not the right fit if your offer hasn't sold yet without ads, or if you can't commit a real ad budget alongside the fee.

Not sure whether your sales are reaching Meta, or reaching it twice? Book a strategy call and we'll look at your Events Manager with you.