Meta Pixel and Conversions API (CAPI): Why You Need Both

What the Meta Pixel and Conversions API do, why the Pixel alone misses sales, which events to send, deduplication, setup options and how to test it all.

Mir Shofiqul Islam Ullash (Mir Ullash), authorBy Mir Ullash4 min readAds
Tracking code on a laptop screen

Meta Ads can only optimize toward the sales and leads it can see. If tracking is broken, the algorithm learns from bad data, your ROAS looks worse than it really is, and good campaigns get switched off. The fix is to send conversion data from both the browser (the Meta Pixel) and your server (the Conversions API, or CAPI). Here’s what each does and how to set them up properly.

What the Meta Pixel does

The Meta Pixel is a small piece of JavaScript on your website. When a visitor loads a page, adds a product to the cart or completes a purchase, the Pixel sends that event from their browser to Meta. Meta uses these events to report results, build retargeting audiences and decide who to show your ads to.

Why the Pixel alone misses conversions

Because the Pixel runs in the visitor’s browser, it can be blocked or cut short. Ad blockers, browser privacy features, cookie consent choices, slow pages and people closing the tab before the script loads all mean some purchases are never reported. Meta then optimizes on incomplete data and under-reports your results.

What the Conversions API adds

The Conversions API sends the same events from your server directly to Meta. Your server knows for certain that an order was placed or a form was submitted, so these events don’t depend on the visitor’s browser. Used together, the two give Meta the most complete and reliable picture.

Meta PixelConversions API
Runs inThe visitor’s browserYour server or a server-side tool
Can be blocked byAd blockers, browser privacy, failed page loadsNot the visitor’s browser
Good atPage views and browsing behaviourConfirmed purchases and leads
Setup effortLow — plugin or tagMedium — integration, gateway or developer

Which events to send

Use Meta’s standard events so the system understands them, and send the same set from the Pixel and the Conversions API:

EventWhen it firesSend value?
PageViewEvery page loadNo
ViewContentA product or service page is viewedOptional
AddToCartA product is added to the cartYes
InitiateCheckoutCheckout startsYes
PurchaseThe order is confirmed — once per orderYes, with currency
LeadA form is successfully submittedOptional
ContactA call or WhatsApp clickNo

Deduplication: count each sale once

When both the Pixel and the Conversions API report the same purchase, Meta has to know they are one sale, not two. Send the same event name and the same event_id (for example the order number) from both. Meta then keeps one and drops the duplicate. Without this, purchases are double-counted and your ROAS looks better than it really is.

How to set it up

  • Shopify and WooCommerce: Meta’s official integrations set up the Pixel and the Conversions API together in a few steps.
  • Conversions API Gateway: Meta’s own server option that you connect from Events Manager, without writing code.
  • Server-side Google Tag Manager: sends the same events you already track to Meta from a tagging server.
  • Direct integration: a developer sends events from your backend — the most control, useful for custom sites and lead forms.

Also verify your domain in Meta Business Settings, so you control how events from your website are used.

Improve Event Match Quality

Meta can only use a server event if it can match it to a person. Events Manager shows an Event Match Quality score for each event. Raise it by sending more customer information parameters with your server events: email and phone number (hashed, never in plain text), the browser ID and click ID cookies (fbp and fbc), IP address and user agent.

Test before you trust the numbers

  1. Install the Meta Pixel Helper browser extension and check that events fire on the right pages.
  2. Use Test Events in Events Manager to see browser and server events arrive in real time.
  3. Place a test order or submit a test form and confirm the event appears once, marked as deduplicated.
  4. Check that purchase values and currency are correct, and that a refresh of the thank-you page doesn’t fire Purchase again.

Once tracking is clean, read your results with my Meta Ads metrics guide and use these ROAS tactics to improve them.

Privacy and data rules

Only send the data you need, hash personal information before sending it, and respect cookie consent where the law requires it. Don’t send sensitive information such as health details — Meta restricts this data and can limit your ad account if it receives it.

Frequently asked questions

Do I still need the Meta Pixel if I use the Conversions API?

+

Yes. Meta recommends using both. The Pixel captures browsing behaviour well, the Conversions API reliably reports confirmed conversions, and deduplication makes sure nothing is counted twice.

Is the Conversions API free?

+

The Conversions API itself is free. Depending on how you set it up, you may pay for server hosting, a server-side tagging service or developer time.

How do I know if my events are being double-counted?

+

In Events Manager, check that browser and server events for the same action show as deduplicated. If purchases in Meta are much higher than real orders, the event_id is probably missing or different between the Pixel and the Conversions API.