Meta Conversions API
Send approved conversions server-side to a Meta dataset, with fbc built from the click's fbclid, hashed e-mail and phone, a test event code and full delivery logging.
Last updated 4 min read
On this page
A Meta Conversions API destination reports every matching conversion to your Meta dataset (pixel) from the server,
so Meta's bidding learns from real results even when browsers block the pixel. Destinations are on Integrations →
Conversion APIs (/app/integrations?) and need the Admin role.
Before you start#
- Dataset (pixel) ID — Events Manager → Data sources → your dataset → Settings.
- Access token — Events Manager → Settings → Conversions API → Generate access token.
- Meta clicks should carry
fbclid. Meta appends it to your ad's website URL; when that URL is a TrackCrown tracking link, the tracker stores it (from the link itself, or from the landing page inurl=).
Add a destination#
- Open Integrations → Conversion APIs.
- On the Meta Conversions API tile click Add.
- Fill in the form:
- Save.
Event names#
An event code without a line in Event names uses these defaults; any other code is sent as the code itself:
default = Lead
sale = Purchase
trial = StartTrialTest it#
- Enter a Test event code from Events Manager → Test events and save.
- In the destination's menu choose Send test event. TrackCrown posts one synthetic event (the
defaultevent name, value 1 USD) with your test code and shows Meta's answer, e.g. Meta accepted the test event (test-…). Without a test event code the test is refused, so it never counts as a real conversion. - When real conversions look right under Test events, clear the test event code to go live.
What is sent#
Each conversion becomes one POST to https://graph.facebook.com/v21.0/<dataset ID>/events:
{
"data": [{
"event_name": "Purchase",
"event_time": 1791624662,
"event_id": "8a6a2d0e-3c55-4c7e-9a43-0c1c2d8f0b11",
"action_source": "website",
"event_source_url": "https://shop.example.com/summer?cid=0192a6c3f1e04b7e9c2d8a1f3b5c7d9e",
"user_data": {
"client_ip_address": "198.51.100.20",
"client_user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) …",
"fbc": "fb.1.1791624530123.IwAR2xYz…",
"em": ["<sha256>"],
"ph": ["<sha256>"],
"external_id": ["<sha256 of the click ID>"]
},
"custom_data": { "value": 49.9, "currency": "USD", "order_id": "ORDER-1001" }
}],
"test_event_code": "TEST12345"
}The access token is added to the request only; it is never stored in the delivery log.
Delivery, retries and the log#
- Conversions are queued like postbacks and sent by the worker within seconds of approval (or of creation, with Approved and pending).
429,5xxand network errors are retried after 1 min, 5 min, 30 min, 2 h and 6 h. Other4xxanswers (wrong token, dataset or payload) fail immediately.- Every delivery — the token-free payload, Meta's response, attempts — is in the postback log.
- Each destination card shows Sent 7 d, Failed 7 d and the last result.
Manage a destination#
Destination menu: Edit, Send test event, Pause / Resume, Delete.
Conversion-API destinations are managed only here; they are not part of the REST API's /postbacks endpoints.
Troubleshooting#
See also: TikTok Events API · Ad costs & ROAS · Server-to-server postback reference.