Data Quality

Your platforms, your analytics and your store disagree, and you probably don't know it

Antti Salonen23 September 20268 minute readData Quality
← All posts

In finance, two or more systems reporting different values for the same position is a break: an open incident that stays open until someone explains it and signs it off. In marketing, the same gap between an ad platform and a store is usually never opened at all. This post covers what the problem looks like, why it happens, what it costs you, and what to do about it this week.

Key takeaways

  • A break is a reconciliation failure with an owner, a deadline and a sign-off. Finance has run this discipline for decades because regulators and auditors require it.
  • Marketing has no equivalent step. Connectors were built to move data and dashboards to display it, and neither checks whether two or more sources agree.
  • The four ways an unclosed gap shows up: nobody knows the two numbers disagree; the number that arrived first wins; figures change after the fact with nobody informed; the gap gets an average instead of an explanation, or is ignored completely.
  • Revenue is the visible version. Order counts, conversions, spend and refunds each carry their own disagreement, and they do not move together.
  • Forrester's 2024 Marketing Survey found 64% of B2B marketing leaders do not trust their company's marketing measurement for decision-making (reported in Digital Applied's 2026 compilation).
  • Companies large enough to employ data engineers built their own reconciliation layer years ago. Everyone else got connectors and a spreadsheet.
  • Verdict: understanding the gaps between your platform and store figures is essential to running campaigns well. Treat them as breaks with an owner rather than as noise, measure them before you report either number, and if nobody in-house can own that job, buy the role as a service instead of a headcount.

What is a break?

A break is a difference between two records that should match: a position held in the trading system and the same position in the risk system, a valuation in one ledger and the same valuation in another. The moment the difference is detected it becomes an item on a list with a name next to it, and it stays there until someone has found the cause, corrected the record, and signed off that the two now agree.

I spent years building the ETL and ELT layers that move positions and valuations across multi-source systems for trading and regulatory reporting. There is no room for error there, so the pipelines carry automated reconciliation, and every figure has full lineage: you can trace a number on a report back to the run that produced it and the source rows it came from. The discipline exists because the consequences are external. A regulator or an auditor will ask how a figure was produced, and "the two systems disagreed so we took the mean" is not an answer anyone gives twice.

Marketing runs on the same raw material, numbers from several systems that are supposed to describe the same events, without any of that machinery.

The problem: your platforms and your store report different numbers

Meta reports one figure for last month and the store records another, and the difference is treated as a fact of life. Revenue is only the most visible version of it. Order and conversion counts, spend, refunds and returns each carry their own disagreement, and they do not move together: a channel can agree with the store on the number of orders and still be far apart on what those orders were worth.

After a year of working with marketing data and talking to the people who run it, one of these four came up at almost every company.

Nobody knows the two numbers disagree. The platform figure lives in the ad account, the store figure lives in the commerce backend or the ledger, and no report puts them next to each other. The gap is not being tolerated, it is invisible. Most teams meet it for the first time when someone in finance asks why the revenue in the marketing deck is higher than the revenue in the books. By then the budget decisions of the past year have all been made on figures that never reconciled to the store.

The number that arrived first wins. Meta says one revenue figure for the month, the store says another, and whichever one landed in the deck before the meeting is the one the budget gets set on. The other number is never reconciled against it. Often it is never looked at.

Figures change after the fact, and nobody is informed. A platform restates last week's conversions when its attribution window closes or when it back-fills a delayed event. The number in the report you sent and the number the platform holds today are now two different values for the same week, which is a break like any other, and nothing flags it. The dashboard that read the number on Monday still shows Monday's value.

The gap gets an average, or nothing. When the two numbers are both visible, the usual response is to take a blended figure, or to decide that one source is "directional" and stop comparing. Neither is an explanation. Both close the incident without closing the break.

Why it happens

The tools were built to move data or to show it, and neither job includes checking. The people running marketing analytics are not less careful than the people running a trading book. They have a different kind of software.

A connector's job ends when the rows land in your destination. Nothing checks whether they match what the source holds, because no step in the pipeline has that job. A schema change, a repeated day, or last week's numbers restated after the fact all pass straight through. The same goes for a pull that stopped early, a field written into the wrong column, or a window the platform cut short with a rate limit. A dashboard's job is to draw what arrives. Give it two revenue figures that disagree and it draws both, side by side, and nothing in between them asks why.

Put the two disciplines next to each other and the missing step is easy to see.

Finance reconciliationTypical marketing stack
Two sources disagreeSomeone opens a break and assigns itNobody knows the two numbers disagree
Who owns the differenceA named person, with a deadlineNobody
What closes itCause found, record corrected, sign-offThe meeting ends
Restated historyRe-run and re-reconciled on a scheduleThe dashboard keeps the first value it saw
Lineage of a reported figureTraceable to the run and the source rowsTraceable to "the export"

What it costs you

The gap decides where money goes. Budget is moved on whichever revenue figure reached the meeting, so if a platform reports more revenue than the store recorded, spend keeps flowing to the channel that looks best rather than the one that pays best. That decision then repeats every month, on the same unchecked number.

Running several platforms makes it worse rather than harder. Each one reports in its own window, currency and timezone, and several of them claim the same orders. The gaps then hide inside each other: the total can look close to the store while every individual channel is wrong, which is the version that sends budget to the wrong place. Add an analytics platform on top and there is a third account of the same month, counting sessions and conversions on its own model, which agrees with neither the platforms nor the store. Now the question in the meeting is not which number is right, it is which of three is least wrong.

The shape of it, for one month of a business running three ad platforms, an analytics tool and a store. These figures are an illustration rather than a measurement, but the pattern is the one that shows up in the exports we audit.

SourceOrders claimedRevenue claimed
Meta Ads41261,800
Google Ads28844,100
TikTok Ads9612,400
Ad platforms together796118,300
Analytics tool64092,700
Store ledger700101,500

The ad platforms together claim 96 orders and 16,800 in revenue that the ledger never recorded, because more than one of them claims the same order. The analytics tool sits 60 orders and 8,800 below the ledger, because it drops what it cannot see. Three answers to one question, a spread of 156 orders between the highest and the lowest, and no step anywhere in the stack whose job is to explain it.

Forrester's 2024 Marketing Survey found that 64% of B2B marketing leaders do not trust their company's marketing measurement for decision-making, a figure carried in Digital Applied's 2026 statistics compilation. Having seen the pipelines behind those numbers, I think the 64% are correct.

Who has already solved this?

Companies large enough to employ data engineers. They stopped trusting connector output years ago, built a reconciliation layer between the sources and the reports, and gave someone the job of owning it. Inside those companies, the marketing number gets the same treatment as the finance number, from people whose role is to check. What they get for it is a full picture of the figures each platform reports and how they relate to each other, so budget decisions rest on a fully understood view of the operations.

Everyone else was left with the trade-off the category accepts: move data fast, or trust it. Cheap connectors move it fast. Managed data teams check it, at a price and a setup time that a company without a data department cannot justify. In between there has been nothing.

You should not have to choose between having your data and believing it.

What should you do with your own gap this week?

Treat it as a break. That means three things, none of which need new software.

  1. Give it an owner. One person is responsible for knowing how far apart the platform and the store are for last month, and why. Fixing the platform is a separate job; this one is knowing the size and the cause. The owner can be a person in-house or a service that does it for you; what matters is that the job exists.
  2. Measure it before you report either number. Ten minutes in a spreadsheet, for last month. The steps are below.
  3. Write down the rule. Which number goes in the deck, and under what label. "Store revenue, platform-attributed share shown separately" is a rule. "Whichever came first" is not.

The ten-minute test

  • Export last month's orders and revenue from your store, net of refunds and cancellations.
  • Export what each ad platform reports for the same month, in the same currency and timezone.
  • Put them side by side and work out the difference, as a number and as a share of the store figure.
  • Write the result down with the date and the settings you used. That line is your first reconciliation record.

If the order counts agree but the revenue does not, look at refunds, shipping, tax and discounts. If the order counts disagree, it is an attribution or tracking question, and next week's post covers the mechanisms behind it.

If the gap is small and stable, you have learned something worth knowing. If it is large, you have found the break, and it has an owner now.

How Lumiqo fits

That gap between a connector and a data department is what I built Lumiqo to fill. It connects your sources, runs the full pipeline of data quality checks, reconciles your platform figures against your store, and delivers the results with full transparency. You get what those companies built, as an end-to-end service.

The owner is us. Every connected source is normalized, checked and reconciled against your store's orders every day.

The measurement comes with every report. Each one carries the gap between a platform's reported revenue and your store's orders for the same period, next to the figures themselves. A daily quality report arrives per source, so you can see the state of the data throughout instead of taking it on trust.

The rule is built into the delivery. Store revenue and platform-attributed revenue arrive in your reports, warehouse or BI tool as separate, labelled columns, so the difference between them is visible and explained.

Lumiqo launches this week. The first thing we do for anyone is a free 48-hour audit of one export, no system access needed, and you keep the report whether or not we ever speak again.

Frequently asked questions

What is a break in reconciliation?

A break is a difference between two records that are supposed to agree, such as the same position in a trading system and a risk system. In finance it becomes an open item with an owner and stays open until the cause is found, the record is corrected, and someone signs off that the two now match.

Why do Meta and my store report different revenue?

They measure different things. The platform counts purchases it attributes to an ad within its window, including some it never saw a click for, in its own currency and timezone. The store records orders as they happen, net of what it is configured to exclude. A gap is expected; its size and composition are what need measuring. Next week's post covers the five mechanisms and a ten-minute test.

How many marketers trust their marketing measurement?

Forrester's 2024 Marketing Survey found that 64% of B2B marketing leaders do not trust their company's marketing measurement for decision-making, as reported in Digital Applied's 2026 compilation of marketing analytics statistics. It is a self-reported measure of trust, not a measure of error rates.

Do I need a data engineer to reconcile marketing data?

You need someone whose job includes it. Companies with data engineers built the layer themselves. For everyone else the options have been a connector that checks nothing or a managed data team at enterprise prices. Lumiqo is the third option: the reconciliation happens as part of delivering the data, and the job of doing it is on us.

What does the free audit check?

One CSV or Excel export from any platform, with no logins or access. Within 48 hours you get a plain-English report listing every duplicate, missing day, outlier, tracking gap and still-settling number found, and where the export's totals differ from what the platform claims. If it comes back clean, the report says so.

About the author

Antti Salonen is the founder of Lumiqo. Before that he built ETL and ELT pipelines with automated reconciliation for trading and regulatory reporting in quantitative finance.

Get your free 48-hour data audit →