
Most teams assume their conversion tracking is working because the dashboards are populated.
That is a low bar.
Events firing is not the same as events being usable. A setup can look active in Events Manager and still be missing 30% of real conversions, sending events without the identifiers platforms need to match them, or double-counting purchases because pixel and server-side events are not deduplicated.
None of these failures announce themselves. You find them by looking.
Here is how to look.
Start with the conversion gap
Before touching anything else, compare two numbers.
Pull platform-reported purchases from Events Manager for the past fourteen days. Then pull actual orders from your backend, your Shopify store, or your CRM for the same period.
A gap of up to 10% is within normal range. Attribution windows, cross-device journeys, and view-through modeling account for some discrepancy.
A gap above 20% means your ad platform has been optimizing from an incomplete picture of your real purchase data. It has been making bidding and targeting decisions based on a fraction of what actually happened.
Do this check on every platform separately. The gap is rarely the same — each has a different signal loss profile and a different share of your conversions missing.
Check match rate on each platform
Match rate tells you how much of what you sent is actually usable.
An event that arrives without the right identifiers is recorded but cannot be connected to a real user. It contributes nothing to optimization. A high match rate means most of your events are being matched to real profiles. A low match rate means events are arriving but the algorithm cannot learn from them.
On Meta, go to Events Manager and find Event Match Quality for your Purchase event. It is scored from 1 to 10. Below 6 means significant identifier gaps. Above 8 is where you want to be. The score updates in near real-time so changes you make show up quickly.
On TikTok, open Events Manager and look at the match rate percentage directly. Below 50% is a problem. Strong server-side implementations with complete identifiers consistently reach 70 to 90%.
On Snap, look at the matched versus modeled split in your conversion breakdown. If modeled conversions are the majority, Snap is estimating rather than measuring. That affects both reporting accuracy and algorithm quality.
On Google, go to Goals, then Conversions, then the Diagnostics tab. Enhanced Conversions coverage tells you what percentage of conversions are receiving the additional hashed signal. Below 50% means most conversions are running on standard tracking only.
If you have never looked at these numbers on any of these platforms, that is the most important thing you can do today.
Check what is inside your events
Match rate problems usually trace back to what is inside each event, not whether the event fired.
Open a recent purchase event in your Events Manager of choice and look at what was sent. A well-formed event carries hashed email, hashed phone number, the platform-specific click identifier, IP address, user agent, and a unique event ID.
Work through each identifier:
Email address. Is it present? Is it lowercased and trimmed before hashing? A capital letter or a trailing space produces a different hash than what the platform holds on file. The identifier arrives but produces no match.
Phone number. Is it formatted correctly? Meta and TikTok accept several formats. Snap requires E.164, meaning the full international format with country code, no spaces, no punctuation. A UAE number without the +971 prefix fails to match on Snap even if everything else is correct.
Click ID. Is the fbclid, ttclid, or gclid being captured at click time and passed through to the server-side event? Click IDs are often the strongest direct match signal. They are also frequently lost during redirects, landing page transitions, or app handoffs. If your click ID is not present in server-side events, that is a meaningful match rate drain.
Event ID. Is a unique event ID present? Without it, a platform receiving the same purchase from both a browser pixel and a server-side event counts two conversions instead of one. The event ID is what allows deduplication.
Check for deduplication failures
If you run a browser pixel and a Conversion API simultaneously, you need deduplication.
Go to your Events Manager and look at event volume by source. If your server-side events and browser events are both active, the total reported conversion count should be consistent with your actual order volume. If reported conversions are significantly higher than backend orders and your conversion gap check showed the opposite problem on a different platform, you likely have double-counting on one and under-counting on another.
The fix is a shared event ID. The browser event and the server-side event for the same purchase must carry identical event IDs. The platform receives both, matches them, and counts one conversion.
If your implementation was set up at different times by different teams, event naming mismatches are also worth checking. A pixel sending "Purchase" and a CAPI sending "purchase" can be treated as two different event types on some platforms. Taxonomy alignment across both paths matters.
Check event timing
Platforms weight recent signals more heavily than delayed ones. A purchase event sent in real time is more valuable to the optimization model than the same event sent six hours later.
If your server-side implementation batches events, sends them at scheduled intervals, or relies on a manual upload process, the signal is reaching the platform late. That reduces its optimization value even if everything else about the event is correct.
Real-time delivery is the standard. Anything slower is a signal quality compromise.
What good looks like
A healthy conversion tracking setup across Meta, TikTok, Snap, and Google has:
A conversion gap below 10% on each platform. Match rates above 70% on TikTok and Snap, Event Match Quality above 7 on Meta, and Enhanced Conversions coverage above 80% on Google. Events carrying hashed email, hashed phone, click ID, and event ID on every purchase. Pixel and CAPI events deduplicated with a shared event ID. Server-side events delivered in real time.
Most setups fall short of at least two of these. The ones that fall short on all of them are the ones where fixing the signal produces the largest performance improvement, without changing a single campaign setting.
Run this audit before your next budget cycle
The instinct before increasing ad spend is to optimize campaigns. A better instinct is to verify that the signal feeding the algorithm is complete before scaling the budget on top of it.
Scaling spend on a setup with a 30% conversion gap and a match rate below 50% is spending more money to optimize a broken model faster.
The audit takes less time than a creative brief. The impact on performance is more durable than any campaign change.
If you want a second set of eyes on your setup, we run signal audits for brands across Meta, TikTok, Snap, and Google.





