Meta · Conversions API

The Pixel alone no longer sees half your buyers

Since iOS 14 and tightening browser rules, the browser-side Pixel misses a large share of conversions. The Conversions API sends the event from your server, with the same identifiers, and Meta reconciles the two instead of counting them twice.

POST /v20.0/{pixel_id}/events
{
"event":"Purchase"
"user": {
"fbc":"fb.1.1718…IwAR2"
"fbp":"fb.1.1718…3901"
"em":"sha256:8f4e…c1a"
"ph":"sha256:2b7d…e90"
"external_id":"sha256:91af…33c"
"client_ip_address":"203.0.113.4"
"client_user_agent":"Mozilla/5.0…"
},
"properties": {
"value":84.90
"currency":"EUR"
"event_id":"cmr…7f2"
}
}
SHA-256 hashedclick identifiersent as-is
What Trackful actually sends to Meta for one order.

The problem

Why your EMQ plateaus

Event Match Quality measures how rich the identifiers you send are. A thin payload is accepted without error; it simply matches fewer people.

fbc and fbp stay in the browser

These two cookies are what tie a visit back to an ad click. They are written in JavaScript, so they are subject to the lifetime limits Safari imposes, and the server only sees them if something takes care to pass them along.

An event without PII matches few people

Meta matches on a bundle: email, phone, external id, IP address, user agent. Sending email alone rarely reaches a high EMQ, and EMQ directly governs how well optimisation performs.

Deduplication fails silently

If the Pixel and the server do not send the same event_id, Meta records two purchases for one sale. Nobody gets an alert; ROAS simply looks better than it is.

Match keys

The identifier bundle sent with every order

Meta accepts several keys per event, and each one added improves EMQ. Personal data is hashed on your server.

fbc, fbp
The click cookie and the browser cookie, passed through as-is. Trackful captures them server-side and carries them across sessions, instead of depending on whatever the browser chooses to keep.
em, ph, external_id
Email, phone and customer id, all SHA-256 hashed. The external id is especially useful for returning customers: it depends on no cookie and does not change between devices.
client_ip_address, client_user_agent
Sent unhashed, as Meta requires. These are the visitor's real values, not our server's: sending the server IP would declare that all your customers are the same person.
event_id
Generated deterministically from the order, so the Pixel and the server produce exactly the same identifier. That is the condition for Meta to deduplicate rather than double count.

Meta's rules

Constraints we respect on your behalf

Quoted from Meta's documentation and enforced in our sender.

Seven days, and the whole batch is rejected

Meta's documentation is explicit: if a single event_time in the batch is more than seven days old, Meta returns an error for the entire request and processes no events. Trackful checks age before the call, otherwise a historical import would fail perfectly valid conversions.

Consent denied, nothing sent

If the visitor declines advertising tracking, no event goes to Meta at all. Unspecified consent limits the payload to click identifiers, with no personal data.

No after-the-fact value correction

Unlike Google Ads, Meta offers no adjustment mechanism, and a negative-value purchase is not the workaround. Trackful therefore does not simulate refunds on this channel rather than corrupting your value signal.

Setup

Connected in minutes

  1. 1

    Enter the Pixel

    Pixel ID and CAPI access token, from your Events Manager.

  2. 2

    Send a test

    A test conversion goes out immediately and you watch it land in Meta Events Manager.

  3. 3

    Watch EMQ

    The dashboard shows your Event Match Quality and flags a drop instead of letting you find it a month later.

Read the Meta documentation

Questions

Frequently asked

Should I remove my Meta Pixel?

No, and you should keep it. Meta recommends running the Pixel and the Conversions API together: the browser captures what it can, the server fills the rest, and the shared event_id prevents double counting. Removing the Pixel would cost you a useful signal.

What counts as a good EMQ?

Meta scores match quality from 0 to 10. Above 8 on purchases, the identifiers you send are rich. That score depends directly on how many keys you pass, which is why Trackful sends the full bundle rather than the minimum.

Why are my conversions showing up twice?

Almost always because two sources send the same purchase without a shared event_id. Trackful generates that identifier deterministically for its own sends, and detects a competing pixel on your pages so you are warned before the numbers drift.

Can I import my past orders?

Partly, and that is a Meta limit rather than a Trackful one. Past seven days, Meta refuses the event. A historical import will therefore only send the recent portion, which is the correct outcome: the rest would never have been accepted.

Trackful is not affiliated with or endorsed by Meta. Meta, Facebook and Instagram are trademarks of Meta Platforms, Inc., referenced here to identify the service Trackful sends your conversions to.

Stop paying for results you cannot measure

Every day without Trackful is a day you make ad decisions with only 60% of the data. Install Trackful in 5 minutes and see the difference.

14 days free
No credit card
No developer
30-day guarantee