Conversion API events still have a contract
A conversions API is a POST from your backend. No network tab. No Pixel Helper. The vendor returns 200 for conversion API events it will never attribute. These pages are the envelope, the clock, and the match keys.
CAPI glossary
Conversion API and conversions API are the same POST. Meta CAPI, Facebook CAPI, Meta Conversions API, and Facebook Conversions API are one Graph events contract. Each phrase below points at the page that owns it.
conversion APIA server POST that sends conversion API events your backend already knows.
conversions APIMeta's plural for the same conversion API POST. Same job as CAPI.
conversion API eventsThe rows on a conversion API: event name, time, match keys, value.
Meta CAPIMeta Conversions API. Graph events edge. event_time in seconds.
Facebook CAPISame product as Meta CAPI. Facebook Conversions API under the old name.
Meta Conversions APIThe product page name for Meta CAPI. Facebook CAPI is the same POST.
Facebook Conversions APIThe older name for Meta CAPI. Same Graph events contract.
CAPI validatorA contract check on CAPI JSON before Test Events.
conversion API validatorA CAPI JSON checker. HTTP 200 from the vendor is not this check.
CAPI testerA conversion API tester: paste CAPI JSON, lint it, then open Test Events.
conversion API testerSame job as a CAPI validator. Contract check, not Ads Manager login.
CAPI JSONThe body a conversion API validator lints: events, clocks, hashed PII.
CAPI not workingUsually HTTP 200 and empty Test Events, not a dead token.
conversions API not workingSame failure as CAPI not working. Lint the JSON before you rotate the token.
Test Events emptyThe usual CAPI not working symptom: 200 from Graph, nothing in Test Events.
CAPI 200A conversion API HTTP 200 is liveness. It is not a contract check.
CAPI implementationPixel plus conversion API events, same event_id. Meta CAPI and Facebook CAPI document that hybrid.
meta pixel and CAPIfbq in the browser plus Facebook CAPI on the server. Same event_name and event_id.
Reddit CAPIReddit Conversions API v3. event_at is milliseconds. action_source is WEBSITE.
Reddit conversion APISame product as Reddit CAPI. Not a Meta CAPI body on a Reddit host.
Pinterest CAPIPinterest Conversions API. Seconds clock. Standard events are lowercase.
X conversion APIX website conversion events. A sibling conversion API, not Meta CAPI.
TikTok Events APITikTok's conversion API. ISO 8601 timestamp. pixel_code, not a Meta Graph body.
TikTok pixel Events APITikTok pixel plus Events API. Same event_id. Server time is ISO 8601.
Meta standard conversion eventsMeta PascalCase names: Purchase, Lead, AddToCart. A typo is a custom event that still 200s.
website pixel checkerPaste a collector URL. Pixellint is a website pixel checker and a CAPI tester.
Pinterest standard eventsLowercase names on the Pinterest tag: pagevisit, checkout, addtocart.
conversions API PinterestPinterest CAPI on the ad account events path. Same job as Pinterest CAPI.
tiktok pixel standard eventsTikTok browser events. The server pipe is TikTok pixel Events API.
_fbc cookieMeta click cookie, fb.1.timestamp.fbclid. Send it on Meta CAPI as user_data.fbc.
fbc cookieSame as the _fbc cookie. Do not paste the raw fbclid into Facebook CAPI fbc.
_fbp cookieMeta browser id cookie, fb.1.timestamp.random. Send it on Meta CAPI as user_data.fbp.
_fbp cookie descriptionMeta's documented _fbp shape: fb.N.timestamp.random. Not the _fbc cookie.
test_event_codeMeta CAPI QA flag. Strip it in production or the conversion API event never trains.
LinkedIn CAPILinkedIn Conversions API. conversionHappenedAt is milliseconds. Not Meta seconds.
LinkedIn Insight TagThe LinkedIn browser pixel. LinkedIn CAPI is the server pipe.
linkedin insight tag documentationInsight Tag image pixel plus LinkedIn CAPI. Milliseconds on conversionHappenedAt.
Snap CAPISnap Conversions API. action_source is WEB, not website.
Snap Conversion APISame product as Snap CAPI. Not a Meta CAPI body on a Snap host.
Microsoft CAPIMicrosoft Advertising CAPI. eventTime is seconds. eventType is pageLoad or custom.
OpenAI CAPIOpenAI Ads Conversions API. timestamp_ms is milliseconds. Not Meta CAPI.
Nextdoor CAPINextdoor conversions track. event_name, seconds, and a match key.
One conversion API JSON cannot serve every vendor
Meta Conversions API event_time is seconds. Reddit CAPI event_at is milliseconds. LinkedIn conversionHappenedAt is milliseconds and still needs user.userIds. TikTok timestamp is ISO 8601. A shared conversion API event named event_time will be wrong on at least one hop.
How do GA4 key events and Google Ads conversions compare?
A GA4 key event marks an important site action. A Google Ads conversion action can be created from that Analytics event or measured with an Ads tag. Learn why counts diverge and what to check before bidding.
How does conversion tracking differ from attribution?
Conversion tracking records an action. Attribution assigns credit to earlier marketing touchpoints. Diagnose a missing event, missing click ID, and differing dashboard totals in the right order.
What is a conversion API
A conversion API is a server POST that sends conversion API events. Meta names it the Conversions API (CAPI). Facebook CAPI and Meta CAPI are the same Graph events edge. TikTok names it Events API. Google names it Measurement Protocol. Same job, incompatible JSON.
Pixel plus conversion API events
CAPI implementation is browser pixel plus conversion API events, deduplicated on event_id. Drop either side without a plan and you undercount or double-count. Meta CAPI and Facebook CAPI document this hybrid.
Event deduplication
Meta, TikTok, and others drop a duplicate conversion when the same event_id arrives on the pixel and the conversion API. Generate it once, persist it, send it on both pipes.
Event match quality
Match quality is how confidently the platform attaches your event to a user. Click ids score high. Hashed email and phone help. IP plus user-agent are weak but real. Empty user data is a dark event.
action_source on Meta CAPI
Meta CAPI requires action_source so the event is filed as website, app, phone_call, chat, physical_store, system_generated, or other. website is not the default you hope it is if you omit the field.
event_source_url
Conversion APIs want the URL of the page where the event happened. Sending https://api.yoursite.com/capi is a common helper-library bug and it wrecks domain quality.
Server-side tagging
Server-side Google Tag Manager is a first-party collector that forwards to vendors. Direct CAPI from your backend skips the tag manager. Both are server events. They are not the same architecture.
Test events vs production CAPI
Meta's test_event_code and vendor debug flags keep QA out of production reporting. Forgetting to strip them, or never using them, are both ways to lie to yourself.
HTTP 200 is not conversion validation
PostHog capture, Segment track, and several ads CAPIs return 200 for payloads they will not ingest. Validate the body before you ship. Do not use status code as the contract.
CAPI retries and idempotency
Retry on 429 and 5xx with the same body. A new event_id on retry double-counts. A retry storm from a cron that cannot remember success double-counts even harder.
Offline conversions
Offline conversions upload events that never happened in the browser: phone sales, in-store POS, Salesforce stages. Matching is PII-heavy. Timestamps are usually delayed. Dedup against any pixel you already fired.
Google Ads enhanced conversions
Enhanced conversions send hashed first-party data with the Google Ads conversion tag or via the API. It is not GA4. It is not a replacement for gclid. It is extra matching when cookies are thin.
Conversion value and ISO 4217 currency
Purchase events need a number and a three-letter currency. USD is not a symbol. 19,99 is not a JSON number in the US. Meta, GA4, and Floodlight all refuse to optimize on empty value.
Standard vs custom events
Pinterest standard events are lowercase (pagevisit, checkout, addtocart). Meta is PascalCase (Purchase, Lead, AddToCart). Snap is UPPER_CASE. A typo becomes a custom event and still 200s.
Funnel events
Funnel events exist so the platform can optimize toward the next step. Firing all of them on the thank-you page teaches the model that every user is a buyer. Firing none of them except Purchase starves upper-funnel learning.
Refund and cancel events
If you send Purchase and never send Refund, the ads platform keeps spending toward orders that came back. Meta, GA4, and several CAPIs have refund events. Use the original transaction id.
Conversions API not working
Conversions API not working, Meta CAPI 200, Facebook CAPI empty Test Events: count event_time digits, strip test_event_code in prod, hash email not IP, match Pixel ID and event_id, and lint the JSON before you debug the token.
Conversion API validator
A conversion API validator checks CAPI JSON against the vendor contract: Meta CAPI and Facebook CAPI event_time in seconds, hashed em, action_source, event_source_url, Purchase value and currency. Paste the body. HTTP 200 is not that check.