TRACKING SPECIALIST — BARIS ASA · LONDON
Synctag
Start the check → TRACKING SPECIALIST — BARIS ASA · LONDON

READING ROOM › FIELD NOTE › NOTE-004

NOTE-004 · FIELD NOTE FILED 30 OCT 2026 · REVISED 01 NOV 2026 F-102 F-401 F-301

Meta Conversions API setup options compared (2026): one-click, Gateway, Stape, sGTM.

ABSTRACT — Pick the simplest Meta Conversions API setup that sends each purchase once. One-click CAPI, Shopify, PixelYourSite, Gateway, Stape, sGTM and direct API, compared.

Baris Asa, tracking consultant, London. Last checked 31 October 2026.

There are seven common ways to set up Meta Conversions API. They differ in effort, cost, and who stamps each sale with the shared ID that lets Meta drop the duplicate. If Ads Manager already shows more purchases than your shop has orders, the first thing I check is two tools sending them: switch one off before adding anything. For a new setup, pick the simplest. Shopify: the Facebook & Instagram app on Enhanced or Maximum data sharing. WordPress: PixelYourSite. Any other site with the Meta Pixel: Conversions API with Meta, in Events Manager.

The Conversions API (CAPI) is Meta’s server-to-server feed: a copy of each conversion sent from a server, not the visitor’s browser. It exists for sales a browser-only pixel loses (F-401 ). Two senders without a shared key is on file as F-102 : the same sale counted twice.

I have no partnership, affiliate or commission arrangement with any tool on this page.

The options at a glance

Meta says the setup methods “vary by level of effort, cost, and the features they enable” (Meta: get started). Find your row by platform first.

OptionBest forCost
Shopify F&I appShopify storesNo app fee
PixelYourSiteWordPress sitesCore plugin no fee; Pro from $199/yr
One-click CAPI (Conversions API with Meta)Any other site with the PixelNothing to host
Gateway, self-hostedSeveral pixels, a cloud teamYour cloud bill
Gateway, on StapeThe Gateway without your own cloud$10/mo per pixel, pay as you go
Server-side GTMGA4 and Google Ads server-side tooServer hosting
Direct APIPhone and offline salesDeveloper time

F&I is Shopify’s Facebook & Instagram app; Enhanced and Maximum are data-sharing levels in its settings. Costs in US dollars from each vendor’s page, read 30 and 31 October 2026.

OptionSets event_idEffort (my estimate)
Shopify F&I appShopifyMinutes
PixelYourSiteThe pluginAn hour
One-click CAPIMeta (not documented)Minutes
Gateway, self-hostedMeta’s GatewayAn afternoon
Gateway, on StapeMeta’s GatewayAn hour
Server-side GTMYouDays
Direct APIYouA developer project

“Sets event_id” is who answers for the match between browser and server. Meta documents the key as automatic only for the Gateway. For the one-click, Shopify and PixelYourSite rows it is the tool’s job but not documented, so check 2 below is the proof. Effort is my estimate for a working setup with deduplication checked. Shopify’s paid apps are compared in Elevar vs Stape vs Littledata.

Check what you already have first

Three checks, no developer needed. The screens are in Meta’s setup verification guide.

  1. Is a server copy already arriving? In Events Manager: Data sources (the label varies by account), your pixel, Overview, the Purchase event. If Connection Method lists browser and server, you already have CAPI. Find out what sends it before adding anything.
  2. Is it deduplicated? Event Details, then the Event Deduplication tab. Meta says a higher Rate of Events Deduplicated is better and shows a warning when it is too low. A warning there means this check fails.
  3. Does Meta count each order once? Compare Purchases in Ads Manager with your shop’s orders, for the same seven days, ending at least a week ago.
    • Why not the Overview count: Meta says it shows events before deduplication, so a healthy setup looks doubled there.
    • Why a week ago: Ads Manager can date a purchase to the ad click, and recent days keep filling in.
    • Well below orders: normal. Ads Manager counts only purchases Meta credits to an ad.
    • Close to or above orders: look again at check 2. Rule out thank-you page reloads and test orders, then look for two senders (F-102 ).

What to do with the answers:

  • Browser and server, no warning, purchases below orders: you are set up. Don’t add a tool.
  • Two senders and purchases near or above orders: keep the one that sets a shared event_id for you, switch the other off, and run check 2 again a week later. A new tool would make three senders.
  • Browser only: no CAPI yet. Use the table above.

Write down which tool is the one sender for each pixel, so the next person doesn’t add a second.

How to deduplicate conversions between the pixel and CAPI

Not building it yourself? Send this section to whoever is, and keep check 2 as your test.

Give the browser event and the server event the same event_name and the same event_id. Meta keeps one when both reach the same pixel within 48 hours of the first (Meta: handling duplicate events). For a purchase, the order ID is the natural key:

// Pixel, on the thank-you page
fbq('track', 'Purchase',
  {value: 59.00, currency: 'GBP'},
  {eventID: 'order_12345'});
{
  "data": [{
    "event_name": "Purchase",
    "event_time": 1761904800,
    "event_id": "order_12345",
    "action_source": "website",
    "user_data": {
      "client_ip_address": "203.0.113.7",
      "client_user_agent": "Mozilla/5.0 ...",
      "fbp": "fb.1.1761900000000.123456789"
    },
    "custom_data": {"value": 59.00, "currency": "GBP"}
  }]
}

The values are placeholders. event_time is the order’s own Unix time and for website events Meta rejects it if it is more than 7 days old (other action sources have their own rules); the IP address and user agent come from the visitor’s request (Meta: server event parameters).

Without an event_id, Meta can match on fbp (its browser cookie ID) or external_id (your customer ID). Meta says this generally works only when the browser event arrives first, and that two server events with the same information are both kept.

In server-side GTM, Meta’s guide fires the Meta Pixel tag and the GA4 event tag that feeds the server container on the same trigger, with the same event ID variable in both (Meta: Conversions API for Google Tag Manager). For a purchase, push the order ID to the data layer and read it into that variable.

Why deduplication still fails:

  • Different pixels. Browser and server events go to different pixel IDs, so there is nothing to merge.
  • The ID isn’t ready. The pixel fires before the order ID is in the data layer and sends an empty or different eventID. The symptom: some orders count twice and others don’t.
  • One ID on two orders. If a browser event and a server event for different orders share an event_id within 48 hours, Meta can treat them as one, and you undercount.
  • Two server senders. Meta says it does not deduplicate when only one event source is used, browser-only or server-only, so a second server sender for the same pixel double counts.

Each of these is F-102 (double counting) or the reverse (undercounting).

Copy the pixel, or build from the server?

The options split into two kinds.

Copiers. Conversions API with Meta and the Gateway take what the pixel sees in the browser and send a server copy. Meta describes the Gateway as receiving events data from browsers and generating the event_id for you (Meta: Conversions API Gateway). Low effort; for the Gateway, Meta documents the deduplication key as automatic. They can’t send a sale that never happened in a browser.

Builders. Server-side GTM, the platform apps and a direct integration build the server event themselves. More control, and you can add data the pixel never had. The match is your job, or the tool’s.

Match quality depends on the data, not the tool. Meta scores Event Match Quality from 1 to 10 and recommends 6.0 or higher where possible (Meta: verifying setup). It matches on hashed customer details sent with the event, such as email and phone (Meta: customer information parameters). A builder can add those from your order data; a copier sends what the pixel has.

Each option, briefly

Conversions API with Meta (one-click CAPI). Meta says that with a Meta Pixel and website events only, it works “without you having to host or maintain anything”. You switch it on in Events Manager. My rule: don’t switch it on for a pixel another tool already sends server events for.

Shopify Facebook & Instagram app. Standard data sharing is the pixel only. At Enhanced and Maximum, Shopify says the Conversions API sends the purchase event server to server and shares customer contact details for matching (Shopify Help). Beyond the data-sharing level, the app gives you no field-by-field control. The fault I check first: Enhanced left on while a paid app also sends Meta purchases.

PixelYourSite. A WordPress plugin whose core version, on WordPress.org, lists Conversion API support. WooCommerce custom thank-you pages need the Advanced or Agency plan (WordPress.org, pricing). If Meta’s own WooCommerce plugin is installed too, keep one.

Conversions API Gateway, self-hosted. Set up from Events Manager, it runs a small server in your own AWS or Google Cloud account. Meta pitches it at marketers “with some technical expertise”. You pay the cloud bill, and updates and uptime are yours, so it suits a team with someone who looks after the cloud.

Not to be confused with Meta’s Signals Gateway, a separate product that sends events to more destinations than Meta. This page covers the Conversions API Gateway.

Conversions API Gateway, hosted by Stape. The same Gateway on Stape’s servers. Stape says it “works only based on data that existing web events send”, so the pixel must already be on the site (Stape documentation). Stape lists it at $10 a month or $100 a year per pixel on pay as you go (Stape: Gateway cost). Meta only.

Server-side GTM. Google Tag Manager on a server you rent, with Meta’s template “Conversions API Tag by facebookincubator”. It needs a web container and a server container.

Meta asks for the same event_name in both tags, a shared event_id, and external_id and fbp too: “Include these three parameters whenever possible.” Hosts such as Stape run server containers. Worth it when one server feeds GA4, Google Ads and Meta, and someone on the team builds tags.

Direct API integration. Your developer sends events from your own back office. It is the most direct route for sales that never touch a browser, such as phone orders or renewals. The deduplication key is entirely yours.

What none of them will fix

A tool moves a signal. It doesn’t correct it.

  • Two senders, no shared key. Any option stacked on another: F-102 .
  • Missing items or values. A server sends an incomplete purchase just as reliably: F-301 .
  • Declined consent. The sender has to read your banner’s consent state. For visitors who said yes, a server copy means fewer sales lost when the browser pixel is blocked.
  • Safari cookie limits. A server copy doesn’t change how long Safari keeps cookies. More in why Tag Gateway doesn’t fix Safari ITP.

No vendor publishes comparable ad-blocker recovery numbers, so I don’t rank them on it.

Common questions

What is the easiest way to set up Meta Conversions API?

If you have the Meta Pixel, need only website events, and no other tool sends server events for that pixel: turn on Conversions API with Meta in Events Manager. Nothing to host. On Shopify, the Facebook & Instagram app on Enhanced or Maximum data sharing already sends the purchase event server to server.

How do I deduplicate conversions between the pixel and Conversions API?

Give the browser event and the server event the same event_name and the same event_id; Meta keeps one if both reach the same pixel within 48 hours. For a purchase, use the order ID. Then check Rate of Events Deduplicated in Events Manager.

Conversions API Gateway or server-side GTM?

Gateway if you want Meta only and no tags to maintain. Server-side GTM if the same server should also feed GA4, Google Ads or other platforms, and someone on the team can build and debug tags.

Can I run two Conversions API setups at once?

Not safely. Meta describes deduplication between a browser event and a server event. For matching on fbp or external_id it says outright that two server events with the same information are both kept. Pick one server sender per pixel.

Hiring a Meta CAPI expert (UK)

I set up and repair the Meta Conversions API as Synctag, from London, for UK ecommerce brands and the agencies behind them. What the job covers, the questions to ask any CAPI expert, and how to get in touch are on the Meta Conversions API consultant page.

Sources

Read on 30 and 31 October 2026:

— B.A., filed from London

CONNECTED RECORDS F-102 F-401 F-301

REVISION HISTORY — revised 01 NOV 2026.

← back to the reading room