Resources
How to tell if client marketing data is wrong.
A dashboard draws whatever it is given. These are the checks that tell you it was given the wrong thing.
- 6 minute read
- 5 sections
Part 1
Broken data does not look broken
A chart renders a wrong number exactly as confidently as a right one. There is no error, no gap and no warning. The only signal is that a figure looks a little low, and a figure looking a little low is also what a slow week looks like.
That is why data quality has to be a scheduled check rather than something you notice. By the time a number is obviously wrong it has usually been wrong for weeks, and it has usually been in front of a client.
Part 2
The seven checks
Each of these catches a specific failure. None needs a tool to start with, and all seven can be a query you run on a schedule.
Freshness
How old is the newest row in each table. This is the highest value check of the seven, because a sync that stopped three days ago leaves a dashboard that still works and quietly reports a shrinking month.
Row count against last week
Compare today's row count per table with the same day last week. A sudden drop means a partial sync. A sudden jump usually means rows loaded twice.
Spend against the platform
Take one client account and one closed month, and compare the total in your warehouse with the total in the platform's own interface. Do it monthly. If those two ever disagree, nothing downstream can be trusted.
Duplicate keys
Count rows per key that should be unique, such as one row per ad per day. Anything above one means a join is multiplying your figures, and this is the failure that inflates numbers rather than shrinking them.
Unexpected nulls
A field that was always populated and is suddenly empty means the platform renamed or removed it. The pipeline does not fail, it just brings back nothing, and a metric silently becomes zero.
One-off dimension values
List every value of source, medium and campaign that appears on very few rows. A value appearing once is almost always a typo, and it splits a channel in two for as long as it goes unnoticed.
Currency consistency
Check that every row in a table reports one currency, or that currency is a column you group by. A total that adds two currencies is arithmetically correct and meaningless.
Part 3
Run them before anyone asks
The checks are not the hard part. Running them on a schedule is, because nothing rewards you for it until the day it saves you. Run them for every client, not only the ones you happen to be looking at this week, because the client nobody checked is the one whose sync stopped.
Set them to run after each sync and to tell somebody when they fail. A check nobody sees the result of is not a check. The right threshold is the one that fires rarely enough to be believed, which usually means tuning it over a few weeks rather than picking a number on the first day.
Part 4
What to do when one fires
Do not correct the number first. Find out whether the data changed or the pipeline did, because the fix is different and correcting a figure destroys the evidence.
If the platform restated a figure, that is not a fault and the correction should be visible rather than silently applied. If a field was renamed, the model needs updating and every historical row built on the old field needs re-checking. If the sync failed, re-run it and then check the row count, because a partial re-run is a common way to end up with duplicates.
In practice
Where SightShark fits
Freshness and threshold checks run against every client's tables on a schedule and raise an alert when one fails, so the first person to know is you rather than the client.
Syncs add to the tables rather than replacing them, which is what makes a restatement distinguishable from a bug. Both the original figure and the correction stay on record, so a check that fires can be answered rather than argued about.
See how the platform worksQuestions
Questions people ask
How do I know if a client's marketing data is accurate?
Take one of the client's accounts and one closed month, and compare the total spend in your warehouse with the total in the platform's own interface. If those agree, the pipeline is loading correctly. Then add scheduled checks for freshness, row counts, duplicate keys and unexpected nulls, because those are the failures that produce a wrong number without producing an error.
What is a data freshness check?
It looks at how old the newest row in a table is and alerts you when that is older than the sync schedule should allow. It is the highest value check to add first, because a sync that stopped days ago leaves every dashboard working normally while reporting a month that appears to be shrinking.
Why did a metric suddenly drop to zero?
Most often the platform renamed or removed the field behind it. The sync keeps running and keeps succeeding, but it now returns nothing for that field, so the metric reads as zero rather than as missing. A check for fields that were always populated and are suddenly empty catches this in a day instead of a quarter.
Also worth reading
- 7 min read
What a consent choice does to your reporting data.
It decides what is collected, what gets estimated on your behalf, and why two figures for the same week are both correct.
Read it - 6 min read
Server-side vs client-side tracking, and what changes in client reports.
More conversions, a break in your trend line, and a new way to count one sale twice.
Read it - 6 min read
How AI agents actually read client marketing data.
Giving an agent access is the easy half. Giving it something it can answer from is the work.
Read it
Pricing
Priced by the clients you report on.
Starter
$499 /month
Up to 20 clients
Growth
$999 /month
Up to 50 clients
Enterprise
Custom
No cap on clients
Get started
Want this running on your own data?
Book a call with someone who can answer the technical questions.