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.
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.
Your platforms
Meta CAPI on Shopify and on WooCommerce
Shopify
The Web Pixel and the order webhook feed the same event with a shared event_id, so Meta records one conversion. The theme extension carries the fbclid across visits.
Trackful for ShopifyWooCommerce
A direct PHP hook fires the send on the order. Click identifiers are kept in server-set cookies valid for one year, out of reach of the limits applied to JavaScript cookies.
Trackful for WooCommerceSetup
Connected in minutes
- 1
Enter the Pixel
Pixel ID and CAPI access token, from your Events Manager.
- 2
Send a test
A test conversion goes out immediately and you watch it land in Meta Events Manager.
- 3
Watch EMQ
The dashboard shows your Event Match Quality and flags a drop instead of letting you find it a month later.
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.