Pixel, Conversions API, or both? A plain explanation of what breaks and what fixes it.
Your tracking setup was configured once, by someone who has left, and nobody can say whether it is still working.
5 min read
Two things send purchase data to Meta, and most brands run both without a clear picture of what either is doing. When performance drops, the tracking setup is the first suspect and the last thing anyone knows how to check.
This article covers what each method observes, why running both is standard rather than redundant, and the specific checks that tell you whether yours is healthy — without needing a developer.
What each method can and cannot see
The browser pixel
A snippet of JavaScript in the shopper's browser. When somebody views a product or completes checkout, it reports the event to Meta from the shopper's own device. It has been the default since 2015 and it works well, right up until the browser stops it.
Three things now stop it routinely: Apple's App Tracking Transparency prompt, which most iOS users decline; Intelligent Tracking Prevention in Safari, which limits how long identifiers survive; and ad blockers, which are widespread among younger and more technical audiences. None of these are failures of your setup. They are the browser doing what its user asked.
The Conversions API
The same events, sent from a server instead of a browser. Because the event originates from your own systems rather than the shopper's device, it is unaffected by ad blockers and by browser tracking restrictions. For a Shopify store, this is available without custom development.
It is not a loophole around consent. Server-side events still carry consent state, and a shopper who has opted out should not have events sent about them. The gain is recovering the signal that browsers drop for technical reasons rather than privacy choices.
15–25%
Typical iOS opt-in rate to cross-app tracking, meaning most iOS shoppers are invisible to pixel-only setups
Industry measurement reporting
Both, not either
Meta's own documented recommendation is to run browser and server events together with shared event IDs
Meta for Developers
Running both without counting every sale twice
If both methods report the same purchase and Meta cannot tell they are the same purchase, your conversion count doubles and your reported ROAS becomes fiction. Deduplication is what prevents this, and it is where most broken setups break.
Meta matches a browser event and a server event as the same event when both carry the same event_name and the same event_id. Both fields, on both events. A server event sent with a freshly generated ID will never match its browser twin, no matter how identical everything else is.
Event match quality: the score nobody looks at
Sending an event is only half the job. Meta then has to work out which person it belongs to. It does that by matching the customer information attached to the event — hashed email, phone number, name, city, IP address, browser identifier — against its own records.
Events Manager scores this as Event Match Quality, roughly 1 to 10. A purchase event carrying only an IP address matches poorly. One carrying hashed email, phone, name and address matches well. The score matters because it directly determines how many of your conversions get attributed at all, and how well the delivery system can find more people like your buyers.
This is the highest-leverage tracking fix available to most stores, and it is almost always ignored in favor of more exotic explanations for poor performance. If your purchase event match quality is below about 6, fix that before you rebuild your campaign structure.
- Send hashed email on every purchase event — it is the single strongest matching signal
- Send phone number where you collect it, which for most Indian and Southeast Asian stores is every order
- Send first name, last name, city, state, zip and country from the order
- Include the browser identifiers (
fbpandfbc) on server events, not just browser events - Send the external ID you already have — your own customer identifier, hashed
The quarterly tracking check, in order
Tracking does not fail loudly. It fails when a theme is updated, an app is uninstalled, a checkout extension changes, or a consent banner is reconfigured — and the first symptom is a performance decline that looks like a media problem.
- Is the purchase event still firing? Place a real test order and watch it arrive.
- Is it firing exactly once per order, from each source?
- Is deduplication collapsing the browser and server pair?
- Is the reported purchase value in the same currency as the ad account?
- Is event match quality above 6 on purchase, and above 5 on add-to-cart?
- Are the events arriving within minutes, rather than hours late?
- Does the daily count of purchase events roughly track your daily order count, allowing for the attribution gap?
None of these require a developer. All of them are visible in Events Manager. The reason they go unchecked is not difficulty — it is that nothing prompts anyone to look until revenue has already fallen.
Common questions
Do I need the Conversions API if I already have the pixel?
In practice, yes. The pixel alone misses the large share of iOS and ad-blocked traffic that browsers no longer report. Meta's own guidance is to run both together with shared event IDs so they deduplicate.
Will server-side tracking get around a shopper's privacy choice?
No, and a setup that tried to would be a compliance problem rather than a clever trick. Consent state travels with the event. Server-side tracking recovers signal that browsers drop for technical reasons, not signal a shopper declined to give.
What is a good event match quality score?
Above 6 out of 10 on purchase events is a reasonable working target, and above 8 is strong. The score rises mostly by attaching more customer fields — hashed email and phone are the two that move it most.
How do I know if my events are being counted twice?
Check the purchase event in Events Manager for a deduplication indicator. If browser and server events are both arriving and nothing is being deduplicated, they are being counted separately, and your reported conversions are inflated.
Does Glimmio install its own tracking pixel?
Not for tracking health checks. It reads the diagnostics Meta and Google already publish about your existing setup. A consent-aware Shopify web pixel is installed only if you turn on storefront analytics or lifecycle automation, and only after you authorize it.
How Glimmio handles this
Glimmio monitors Meta Pixel, Conversions API and Google Tag health by reading the diagnostics Meta and Google already publish about your account. There is no proprietary pixel to install for this, and no theme code to paste.
When event volume drops, deduplication stops working, or match quality falls, that becomes a recommendation with the underlying reading attached — so a tracking break is caught in days rather than discovered in a quarterly review.
- Manual approval by default — nothing runs unattended
- New campaigns and ads are always created paused
- 7-day recovery window on eligible changes
- 48 permissions across 13 roles, scoped per client account
Go deeper on this
The product pages and setup guides that cover what this article describes.
Searches this answers
- meta pixel vs conversions api
- do i need conversions api shopify
- facebook capi setup shopify
- event match quality score meta
- server side tracking ecommerce
Read next
Why Meta Says 340 Purchases and Shopify Says 214
Your ad platform and your store disagree about how many orders you got, and nobody can tell you which one is lying.
ReadThe 20-Minute Tracking Health Audit for Shopify Stores
Performance dropped three weeks ago and you still do not know whether it was the market, the creative, or a tracking break.
ReadThe Google Ads Search Terms Audit That Pays for Itself
Google Ads is spending steadily, conversions are flat, and you have no idea what people actually searched to get there.
Read
