How to Set Up Meta Conversions API Without Google Tag Manager
You do not need a server-side GTM container to run Meta's Conversions API. Compare the five setup paths (one-click Meta-enabled CAPI, partner apps, Gateway, direct API, and no-container platforms) with honest tradeoffs and a decision table.
In short
You do not need Google Tag Manager, server-side or otherwise, to use the Meta Conversions API. Meta offers five practical setup paths: the one-click Meta-enabled Conversions API, partner integrations (Shopify, WooCommerce, Wix), the Conversions API Gateway, a direct code integration, and third-party platforms that own your event stream and forward conversions to Meta as one destination among several.
This guide compares all five honestly, including the cases where the free one-click option is all you need. It also covers the fields Meta requires, the hashing rules for customer data, and how to verify that events are arriving and deduplicating correctly.
Do you need server-side GTM for the Conversions API?
No. A server-side GTM container is a relay: it receives browser events and re-sends them to Meta from a server you host. That is useful if you already run tagging through GTM and want one container to feed many vendors, but it is not a requirement. The Conversions API is an HTTP endpoint. Anything that can make a POST request with the right fields can send events to it, and Meta ships several ways to do that without a container.
Meta's own comparison of setup options lists a Meta-enabled connection, partner integrations, the Conversions API Gateway, and direct integration using code. A fifth category, conversions API platforms, sits outside Meta's list but is common in practice: a vendor collects first-party events on your site and forwards them to Meta, GA4, TikTok, or webhooks from its own servers.
| Setup path | Who runs the server | Cost | Technical effort | Event control | Destinations |
|---|---|---|---|---|---|
| Meta-enabled (one-click) | Meta | Free | None | Mirrors the pixel; no filtering | Meta only |
| Partner integration (Shopify, WooCommerce, Wix) | The platform | Usually included | Toggle in the app | Fixed event set per platform | Meta only |
| Conversions API Gateway | You (AWS/GCP) or a host like Stape/TAGGRS | Cloud or hosting fees | Low to moderate | Mirrors pixel events | Meta only |
| Direct API integration | You | Developer time | High | Full control | Meta only, unless you build more |
| Conversions API platform (e.g. EndFrame) | The vendor | Subscription | Snippet plus toggles | Goal-based, with campaign context | Meta, GA4, TikTok, webhooks |
What does the Meta-enabled one-click Conversions API do?
The Meta-enabled Conversions API creates a server-side connection, run by Meta, that mirrors every event and parameter your Meta Pixel already sends. Meta announced it on April 15, 2026 and it became available in Events Manager later that month. It is free, needs no developer, and Meta deduplicates the server copy against the pixel automatically.
The tradeoffs are real. It is web-only: app, offline, and messaging events still need a direct integration. It is not configurable: you cannot choose which events or parameters go through, and you cannot add data the pixel never saw, such as a lead's email from your CRM or an order value confirmed after payment. Because it mirrors the pixel, it also inherits the pixel's blind spots: if a browser blocks the pixel entirely, there is nothing for Meta to mirror. Meta says advertisers with a Conversions API setup for web events saw an average 17.8% lower cost per result than those without, but that figure describes the Conversions API in general, not the one-click option specifically.
How to enable it
- 1Open Events Manager and select the dataset (pixel) for your site.
- 2Look for the Conversions API prompt on the Overview or Settings tab and choose the Meta-enabled option.
- 3Confirm the connection. Existing custom or partner integrations are left as they are.
- 4Open the Test Events tab, trigger a conversion, and confirm you see server events arriving alongside browser events.
When one-click is enough
One-click is enough when you run modest spend, your pixel already fires the events you optimize for, and you have no need to enrich events with server-side data. If your Event Coverage was low because you had no server channel at all, this closes that gap for free. It is not enough if you need to send events the browser cannot see, control which events reach Meta, or feed more than one ad platform from the same event stream.
How do partner integrations send events to Meta?
Commerce and CMS platforms send Conversions API events from their own servers, usually behind a single setting. Meta's comparison notes that for platforms such as Shopify, WooCommerce, Wix, and BigCommerce, setup takes a few clicks at no additional cost. What differs is how much data each platform shares.
| Platform | How CAPI is enabled | What is sent server-side | Notes |
|---|---|---|---|
| Shopify (Facebook & Instagram app) | Data sharing level: Standard, Enhanced, or Maximum | Enhanced and Maximum send the Purchase event server-to-server; Maximum adds the latest Meta tooling | Enhanced and Maximum share name, location, email, and phone for matching |
| WooCommerce (Meta for WooCommerce) | Included out of the box once the extension is configured | Standard store events with event-ID deduplication against the pixel | Can be disabled with a code filter |
| Wix (Meta Pixel & CAPI integration) | Connected through Wix marketing integrations | Store and site events via Meta's API | Requires a premium plan, connected domain, and domain verification |
On Shopify, Standard means pixel only, which ad blockers can stop. Enhanced turns on the Conversions API for the purchase event and shares customer details for matching. Maximum does the same and keeps the store on Meta's newest advertising features. Details are in Shopify's data sharing documentation. WooCommerce's extension integrates the Conversions API automatically, and Wix documents its Meta Pixel and CAPI connection with its plan and domain requirements.
Partner integrations are the right default for a single store on a single platform. Their limits show up when you run campaigns across several domains, need custom events that the platform does not define, or want to see which UTM source drove each server-side purchase. If you want to check what your store is actually loading today, the Shopify tracking audit shows the pixels and scripts present on a page.
What is the Conversions API Gateway and what does it cost?
The Conversions API Gateway is a Meta-built relay that you host in your own cloud account or rent from a hosting vendor. Meta describes it as a way to run the pixel and the Conversions API in a redundant setup without dedicated developer resources. It supports AWS EKS, AWS ECS Express, and GCP, handles multiple domains and multiple pixels, and generates and propagates the event_id deduplication key on its own.
Meta charges nothing for the Gateway itself; the only cost is the cloud resources or the partner fee. Hosted options are inexpensive. As of September 2026, Stape lists its Meta Conversions API Gateway at $10 per month per pixel or $100 per month for an unlimited number of pixels, with a 7-day trial. TAGGRS sells a hosted Gateway as a two-click setup and publishes general server-side tracking plans from a free tier at 10,000 requests per month up to custom enterprise pricing. Self-hosting on AWS or GCP costs whatever the containers consume, plus the time to provision and keep them updated.
The Gateway's limitation is scope. It is built to serve Meta only, and it works from the data your existing web events send, so it depends on the pixel firing in the browser. If you want the same purchase to reach GA4 or TikTok server-side, the Gateway does not do that; you would add a second relay or a different approach.
How to send purchase events to Meta directly from your server
A direct integration means your backend sends a POST request to Meta's Graph API for each conversion, with a system user access token and your dataset (pixel) ID. Meta estimates two to four weeks for a new integration, and it is the only path that supports web, app, offline, and business messaging events with full control over every field.
- 1Create a system user in Business Manager and generate an access token with permission to the dataset. Store it as a secret on your server, never in browser code.
- 2Find your dataset ID in Events Manager. It is the same number as your pixel ID.
- 3On the page where the conversion happens, generate a unique event_id (an order number works) and pass it to both the pixel call and your server.
- 4Build the server event with the required fields in the table below and post it to Meta's events endpoint for your dataset.
- 5Hash customer identifiers with SHA-256 after normalizing them, and pass fbp, fbc, IP address, and user agent unhashed.
- 6Send the event in real time or as close to it as possible. Meta accepts event_time up to 7 days in the past; anything older causes the whole request to be rejected.
- 7Verify in the Test Events tab using a test event code, then remove the code for production.
| Field | Required for web events | What it is |
|---|---|---|
| event_name | Yes | Standard event such as Purchase or Lead, or a custom name; must match the pixel's event_name for deduplication |
| event_time | Yes | Unix timestamp in seconds, GMT, within the last 7 days |
| action_source | Yes | Where the conversion happened: website, email, app, phone_call, chat, physical_store, system_generated, business_messaging, or other |
| event_source_url | Yes for web | The page URL where the event occurred |
| user_data | Yes | Customer information parameters; must include client_user_agent for web events |
| event_id | Recommended | Advertiser-chosen unique ID shared with the pixel so Meta counts the event once |
| custom_data | Recommended | Value, currency, content_ids, and other event details |
Direct integration is the most flexible option and the most expensive to maintain. Every new event, every schema change from Meta, and every second ad platform is more code. It makes sense when you have engineering capacity and events that exist only on your server, such as subscription renewals or qualified-lead status changes.
Conversions API Gateway vs Conversions API platform
A Gateway relays your pixel's events to Meta. A Conversions API platform owns its own first-party event stream and forwards conversions to several destinations. That difference decides which tool fits: if Meta is your only server-side destination and your pixel already sees every conversion, a Gateway is cheaper. If you run Meta alongside GA4 or TikTok, want conversion goals defined once, or need each server-side conversion tied to the campaign and UTM that produced it, a platform does more with less setup.
How EndFrame's Meta destination works
EndFrame is built around this second model. A lightweight snippet collects visits, actions, scroll depth, and engagement time as a first-party event stream. You define conversion goals as event matches or URL matches, then switch on destinations in the dashboard: Meta Conversions API, GA4 Measurement Protocol, TikTok Events API, and custom webhooks. Each destination is a toggle, so there is no server-side GTM container to build and no separate relay per platform. Identifiers are hashed before forwarding, and a shared event ID deduplicates the server event against the browser pixel.
Because EndFrame stores the raw visit to action to conversion chain, every conversion forwarded to Meta is also reported per campaign and per source in real time, which a mirrored pixel stream cannot give you. It does not replace the pixel, it does not cover app or offline events, and it is a subscription rather than a free relay, so it belongs in the decision table below as one row, not as the answer for everyone. For the broader picture of why server-side matters, see the server-side conversion tracking guide.
Customer information parameters and SHA-256 hashing rules
Meta requires personal identifiers to be normalized and hashed with SHA-256 before they are sent, while cookie and request-context values must stay in plain text. Getting this wrong silently drops your match rate, because a hash of an unnormalized value will never match Meta's hash of the same person.
| Parameter | Hash with SHA-256? | Normalization before hashing |
|---|---|---|
| em (email) | Yes | Trim whitespace, lowercase |
| ph (phone) | Yes | Digits only with country code, no leading zeros or symbols |
| fn, ln (first and last name) | Yes | Lowercase, no punctuation |
| ct, st, zp, country | Yes | Lowercase, no spaces or punctuation |
| db (date of birth), ge (gender) | Yes | YYYYMMDD; f or m |
| external_id | Recommended | Stable ID from your system |
| fbp, fbc | No | Cookie values as-is |
| client_ip_address, client_user_agent | No | Taken from the request |
| fb_login_id, lead_id, subscription_id | No | Plain identifiers |
Event Match Quality (EMQ) is Meta's 0 to 10 score of how well those parameters match events to Meta accounts, calculated from the last 48 hours of data. Meta ranks email and click ID (fbc) as high-priority signals; phone, external ID, browser ID (fbp), date of birth, and country as medium; and name, city, and zip as lower priority. Sending several parameters together raises the score more than any one field alone. EMQ currently applies to web events.
How to verify your Conversions API setup
Verify in Events Manager, not in your ad reports. Four checks cover most problems.
- 1Test Events: enter a test event code, trigger a real conversion, and confirm that a browser event and a server event appear with the same event_name and event_id. A deduplicated pair shows as one event from two sources.
- 2Event Coverage: Meta reports the 7-day average share of pixel events that are also covered by the Conversions API with matching deduplication keys. Meta's benchmark goal is 75%.
- 3Data Freshness: this shows the delay between when an event happened and when Meta received it. Send events in real time or close to it; long delays reduce their value for optimization.
- 4Deduplication and EMQ: check that duplicate counts are not inflating conversions, then open the event's EMQ score and Meta's parameter recommendations.
Deduplication is where most setups fail. Meta prefers matching on event_id plus event_name, and it only merges events received within 48 hours of the first one. The fallback of matching on fbp or external_id plus event_name works only for a browser event followed by a server event; it will not merge two server events. If you are unsure which pixels and scripts a page is loading in the first place, the free Tracking Pixel Inspector lists them before you start debugging in Events Manager.
Which Meta CAPI setup should you choose?
Choose based on four things: monthly spend, how many destinations need server-side events, whether you have developers, and whether you need campaign or UTM context on each conversion. The table maps common situations to the path that usually fits.
| Your situation | Best fit | Why |
|---|---|---|
| Low spend, single site, pixel already fires the right events | Meta-enabled one-click | Free, zero maintenance, closes the coverage gap |
| One store on Shopify, WooCommerce, or Wix | Partner integration | Included, purchase events sent server-side with matching data |
| Meta is the only server-side destination, several domains or pixels, no developers | Conversions API Gateway (hosted) | Low monthly cost, multi-pixel, auto event_id |
| Meta plus GA4 or TikTok, several campaigns, need per-source conversion reporting | Conversions API platform | One event stream, toggled destinations, campaign context preserved |
| Server-only events (renewals, CRM lead status), app or offline events, in-house engineers | Direct API integration | Full control over every event and field |
| Already running a server-side GTM container for other vendors | Keep the container | Add Meta as one more client; a Gateway or one-click would duplicate effort |
Two situations deserve a note. Agencies managing many small accounts often combine one-click for the smallest clients with a Gateway or platform for the ones that run multiple channels. And teams whose UTMs are inconsistent will find that no server-side path fixes attribution on its own; clean parameters come first, which is covered in how to fix UTM parameters.
The bottom line
Google Tag Manager is a valid way to run the Meta Conversions API, not a requirement. If your pixel already sees your conversions and Meta is your only server-side destination, the free Meta-enabled option or your platform's built-in integration is the right answer, and you can have it working today. Move to a Gateway when you need multiple pixels without developers, to a platform when you need multiple destinations and campaign-level reporting, and to a direct integration when the events you care about only exist on your server. Whichever path you pick, the same three things decide whether it pays off: a shared event_id for deduplication, correctly hashed customer parameters for match quality, and events delivered in near real time.
Frequently asked questions
Is the Meta Conversions API free to use?
Meta does not charge for the Conversions API itself, and the Meta-enabled one-click option is free. Costs come from the path you pick: cloud fees if you host a Conversions API Gateway, a hosting subscription if a vendor runs it, developer time for a direct integration, or a platform subscription if you use a tool that owns your event stream.
Does the Conversions API replace the Meta Pixel?
No. Meta recommends running both in a redundant setup. The pixel captures browser context such as the fbp and fbc cookies, and the server channel captures events the browser drops. Send the same event_name and event_id through both so Meta deduplicates them within its 48-hour window and counts each conversion once.
Does the Conversions API work with iOS and Safari tracking limits?
Yes, that is one of its main purposes. Server events do not depend on third-party cookies or on a browser script surviving tracking prevention, so purchases and leads that never fire a pixel can still reach Meta. Match rates still depend on the customer parameters you send, which is why Event Match Quality matters on iOS traffic.
Do I need server-side Google Tag Manager to use the Conversions API?
No. Server-side GTM is one way to relay browser events to Meta, but Meta itself lists four other routes: the Meta-enabled one-click connection, partner integrations such as Shopify and WooCommerce, the Conversions API Gateway, and a direct code integration. Platforms that own a first-party event stream are a fifth option that also skips the container.
Can I use the one-click Meta-enabled setup alongside a custom Conversions API integration?
Meta positioned the one-click option for advertisers with no existing Conversions API connection or low event coverage, and said existing custom and partner setups are unaffected. Running two server sources that send the same events without a shared event_id risks duplicates, so pick one primary server channel and verify counts in Test Events.
Sources
- 1.Compare Conversions API Setup Options | Meta Business Help Center
- 2.Conversions API Server Event Parameters | Meta for Developers
- 3.Conversions API Customer Information Parameters | Meta for Developers
- 4.Deduplicate Pixel and Server Events | Meta for Developers
- 5.Conversions API Gateway | Meta for Developers
- 6.Dataset Quality API (Event Match Quality, Event Coverage, Data Freshness) | Meta for Developers
- 7.About Event Match Quality | Meta Business Help Center
- 8.Meta's free one-click Conversions API is now live | PPC Land
- 9.Facebook data sharing levels | Shopify Help Center
- 10.How much does Meta Conversions API Gateway cost? | Stape
Try EndFrame
Recover the conversions iOS and ad blockers hide.
EndFrame collects events first-party and forwards conversions server-side to Meta, GA4, TikTok, and webhooks with event-ID deduplication — then shows the result in real time, with the visit-to-conversion path you can audit.
No credit card required