What to do when your tracking broke last month

The moment you notice

You open your dashboard for a monthly review and something looks off. Sessions dropped by half three weeks ago and never recovered. Or your conversion count for a whole week reads zero, which would only happen if your store closed. You did not close your store. Something broke.

This happens more than most people admit. A Google Tag Manager container gets published with a typo. A theme update on Shopify strips out the snippet you pasted into the header. A Facebook pixel loses its access token after an app disconnects. A consent banner update starts blocking your analytics script for anyone who has not clicked accept, and suddenly half your traffic is invisible. None of these show up as an error message. They just show up as a hole in your data.

The question is not “how do I make this never happen again” (we will get to that). The question first is: what do I do with the hole that is already there. That is what broken tracking backfill actually means, and it is worth being precise about, because half of what people try to do here is not really backfill. It is guessing.

First, find the exact break point

Before you touch anything, figure out precisely when the gap starts and ends. Do not eyeball it from a smoothed weekly chart. Pull daily numbers and look for the day the pattern changes. If you have a recurring weekly cycle (most small ecommerce and SaaS businesses do, with weekday and weekend patterns that repeat), the break usually shows up as a flat line or a sudden drop that ignores the normal cycle entirely.

Cross-reference against something unrelated to the broken system. If your GA4 events went to zero on the 14th, check your server access logs, your email platform’s click data, or your payment processor’s transaction timestamps for the same window. These systems did not share the failure, so they tell you the truth about what was actually happening on your site while your primary tracking was blind.

This step matters because “sometime last month” is not a usable input for anything downstream. “March 14 through March 29, GA4 events for the checkout page” is.

What you can actually reconstruct

Backfill works when a different system was independently recording something close to what you lost. A few examples that hold up:

Revenue and order counts. Your payment processor (Stripe, PayPal, your ecommerce platform’s own order table) recorded every successful transaction regardless of whether your analytics pixel fired. If what broke was your GA4 ecommerce tracking but your Shopify order log is intact, you can rebuild revenue, order count, and average order value for the missing window directly from the source of truth. This is usually your most reliable backfill, because it never depended on a script loading in someone’s browser.

Traffic volume, roughly. Raw server or CDN logs (if you keep them, and if you use Cloudflare or a similar edge provider, you likely have some retention) will show you request counts by day and sometimes by referrer. This will not match your analytics tool’s session definition exactly, since analytics tools apply their own bot filtering, deduplication, and session timeout rules. But it gives you an order-of-magnitude check: was traffic actually flat, or did it just stop being recorded.

Email-driven activity. If you send campaigns, your email platform recorded opens and clicks independently of your site analytics. You can reconstruct a rough shape of engagement for that channel even if your website tracking was dark.

Support and CRM timestamps. Ticket volume, chat starts, and signup timestamps in your CRM usually keep running even when marketing analytics breaks, since they are logged by a different part of your stack.

What you cannot honestly reconstruct

This is the part people skip, and it is the part that matters most for staying honest with yourself.

You cannot rebuild session-level paths. If your pixel did not fire, you do not know which landing page a since-lost visitor arrived on, what they clicked, or how many pages they viewed before leaving. There is no adjacent system that captured that, because capturing it was the whole job of the broken tracker.

You cannot rebuild attribution for that window. Which ad, which referral link, which campaign sent a given conversion is gone if the tool that stitched click to conversion was the thing that broke. Your payment processor can tell you a sale happened. It usually cannot tell you which UTM parameter brought that buyer in.

You cannot rebuild bounce rate, time on page, or funnel drop-off for the gap. These are derived entirely from event sequences that were never recorded.

And you cannot fill any of this in with an estimate and then treat that estimate as real data in a trend comparison. If you interpolate a straight line between the last good day and the first good day and call it done, you have not backfilled anything. You have manufactured a number that will quietly distort every month-over-month comparison that touches that window from now on, and you probably will not remember you did it in six months.

Deciding whether backfill is even worth the effort

Not every gap deserves a reconstruction project. Ask what the number is actually for. If you are trying to reconcile revenue for accounting purposes, backfilling from your payment processor is close to mandatory, and it is usually a straightforward export. If you are trying to understand which acquisition channel is working, a three-week attribution gap in the middle of a quarter is often better left as a documented gap than papered over with a guess. A clearly marked hole is honest. A smoothed-over hole is a landmine for whoever pulls this report next, including future you.

A reasonable rule: reconstruct the things where an independent source of truth exists and matches the definition you actually need (orders, revenue, raw traffic volume). Do not reconstruct the things that only ever existed inside the broken tool (sessions, funnels, attribution, engagement metrics tied to on-page events).

Mark the gap, everywhere it appears

Whatever you decide to backfill or not backfill, annotate it. Most analytics tools let you add a note or annotation on a specific date. Use it. If you keep numbers in a spreadsheet, add a column or a highlighted row noting “GA4 outage, incomplete data” for the affected dates. When you build a trailing 90-day or year-over-year comparison later, this is the only thing standing between you and drawing a conclusion from a number that was never real.

Catching it faster next time

The actual fix for this problem is not a better backfill process. It is noticing sooner. A simple daily check, something as basic as a script that confirms your analytics tool logged at least some non-zero number of events yesterday, catches most of these breaks within a day instead of a month. You do not need a sophisticated monitoring platform for this. A scheduled task that pulls yesterday’s event count and messages you if it is zero or wildly outside the normal range will catch a dead pixel, a broken tag, or a blocked script long before your monthly review does.

Tracking breaks. It is not a sign you are running things badly, it is a sign you are running things at all, with a stack of scripts and third-party tools that each have their own way of failing quietly. What separates a bad month of data from a permanently unreliable dashboard is whether you go looking for the break, reconstruct only what an honest source can support, and leave the rest marked as a gap instead of smoothing it away.

If you want more on how we handle data quality issues like this one, along with the rest of what goes into running a one-person business on real numbers, you can find it on the home page.

Get new guides and videos first — join the Telegram channel.