How to know if your server-side tracking is actually working

Vanessa Moreno
Vanessa Moreno
June 9, 2026
•
5 min read
How to know if your server-side tracking is actually working

Most teams that have set up server-side tracking assume it's working. They see events firing in Events Manager. The dashboard shows purchases. Nobody flagged an error. So it must be fine.

It's often not fine.

Server-side tracking can be live, technically functional, and still delivering incomplete or low-quality signals to ad platforms. The gap doesn't show up as an error. It shows up weeks later as ROAS you can't explain.

Here's how to actually check.

The difference between "tracking is live" and "tracking is working"

A server-side setup being live means events are reaching the platform. It does not mean those events are usable.

For an event to be usable, it needs to arrive with enough identifiers for the platform to match it to a real user, in the right format, without duplicates, and at the right time. Most implementations get the first part right and quietly fail on the rest.

The four things worth checking are: conversion gap, match rate, event quality, and deduplication.

Check 1: Is there a conversion gap?

Pull your actual purchase count from your backend or payment system for the last 30 days. Then pull the purchase count Meta, TikTok, or Snap reported for the same period.

If the platform number is more than 10% lower than your backend number, you have a gap. The platform is not seeing all your conversions. Either the server-side setup isn't capturing every purchase, or events are being sent but dropped for a format or quality issue.

A gap of 30% or more is common in setups that rely on a mix of pixel and server-side without proper coverage across all purchase paths, particularly guest checkouts, in-app purchases, or offline transactions.

Check 2: What is your match rate?

In Meta Events Manager, go to the event quality section for your Purchase event. You'll see an event match quality score from 0 to 10, and a breakdown of which customer parameters arrived with each event.

Below 7 means you're leaving match potential behind. Below 5 is a structural problem. If email coverage is below 80%, that's almost always the first thing to fix. Email is the strongest single identifier Meta uses to connect an event to a real user.

TikTok and Snap have equivalent quality scores in their respective dashboards. Check all three if you're running across platforms. A server-side setup that works well for Meta may not be sending the right parameters for TikTok's matching requirements.

Check 3: Are your events arriving with the right contents?

Each ad platform has required and recommended fields for conversion events. Required fields vary by platform and event type.

The fastest way to check is to use the test event tool inside each platform's developer or events dashboard. Send a test Purchase event through your server-side setup and verify what the platform received. Look specifically at whether value, currency, event_id, and customer parameters are all present.

Missing value means the platform can't optimize for high-value customers. Missing event_id means deduplication probably isn't working. Missing customer parameters means match rate is going to be low no matter what else you fix.

Check 4: Is deduplication actually happening?

If you're running a pixel alongside your server-side setup, which most teams do at least during the transition, both sides will send a Purchase event for the same transaction. Meta, TikTok, and Snap all have deduplication mechanisms, but they only work if both events carry an identical event_id.

If the pixel generates its own ID and the server generates a different one, the platform receives two separate events for the same purchase. Depending on how it handles the conflict, it may count both, drop one, or suppress both. None of those outcomes are good.

To check: look at your deduplication rate in Events Manager. If it's close to zero and you're running pixel and server-side in parallel, deduplication isn't working. The fix is to generate a single event_id at the moment of purchase and pass it to both the browser and the server.

What good looks like

A server-side setup that's actually working shows a conversion gap under 10% versus your backend, a match quality score above 7, email coverage above 80%, and a deduplication rate that reflects the volume of events your pixel and server are sending in parallel.

If all four are in good shape, your setup is doing its job. If any one of them is off, the platform AI is learning from data that's less accurate than it should be.

Most teams discover the gap not by checking these numbers proactively, but by noticing that ROAS is harder to defend than it used to be. By then, weeks of campaign learning have already happened on incomplete data.

The checks above take less than an hour. They're worth running before the next budget review, not after.

If you want someone to run this audit for you, Journify's signal audit does it across all your connected platforms.

Share this post
Articles
Vanessa Moreno
Vanessa Moreno is Head of Marketing at Journify, where she builds the category for ad signal infrastructure across the GCC and US markets. She writes about signal loss, conversion data, and why most performance problems start upstream from the campaign.

Related Articles

You might also find this useful

Get started in minutes

Start activating your customer data with Journify.