Marketing dashboard
$2.10M
Trailing-90-day revenue per Looker Studio (GA4 plus ad-platform feeds)
Stan Consulting · Marketing Atlas · Case File · Attribution Mismatch
Updated May 2026 · Case file · Written marketing plan
case_type: composite cluster: attribution-mismatch published: 2026-05-07
Commercial bridge
Reference use: Numbers, tracking, or dashboards do not match what the business sees in revenue. The owner may fund the wrong move because the numbers path does not match the money path. Keep this as an authority reference, then use the decision view to decide the next check.
| Concept signal | Business problem | Next checks | Next step |
|---|---|---|---|
| Symptom match | Numbers, tracking, or dashboards do not match what the business sees in revenue. | Compare the concept to the visible business symptom before changing the channel, page, or budget. | Open the problem |
| Proof need | The idea needs evidence before it becomes a work order. | Review the closest proof file for the same failure pattern. | Review proof |
| Execution lane | The failing layer appears specific enough to scope work. | Use the service page only when the constraint is named. | See the service |
| Unknown layer | The account, site, offer, tracking, or follow-up path may still be the leak. | Get the Written marketing plan before another rebuild, retainer, or budget increase. | Request a quote |
A Shopify Plus DTC home goods brand. Four-point-one million annualized. Ninety-five thousand monthly paid spend. The marketing dashboard reports two-point-one million in trailing-ninety-day revenue. Shopify reports one-point-nine-five. The bank shows one-point-seven-eight deposited. The CFO points at the three-hundred-twenty thousand spread and asks the marketing director which one of these is the company.
That is the composite. The names change. The shape does not.
The brand had been on Shopify Plus for four years. The product line was a mix of owned-inventory home goods and a small marketplace presence on Amazon and Faire. Paid traffic ran roughly fifty-fifty between Google Shopping and Meta. The marketing director had been in the role for six months and had inherited a tracking stack assembled by the prior head of growth.
The marketing dashboard was a Looker Studio document refreshed nightly from GA4 and the ad platforms. The Shopify summary was the order-export view inside the admin. The bank balance was the operating account at the brand's bank. Three surfaces, three numbers, one trailing ninety-day window.
The CFO was new. He had joined three months prior and was working through his first quarter-close. He reviewed the marketing dashboard, then the Shopify summary, then the bank statement. He asked the marketing director for an explanation of the spread. He had no theory; he had three numbers that did not agree and an open question.
The marketing director said she would reconcile the numbers. She had not realized until that moment that nobody on the team had decided which surface was the financial source of truth. The dashboard had been shipped to the board for a year. Nobody had tied it to the bank. The CFO's question was the first time the spread had been named.
The audit was scoped at this point. Seventy-two-hour written verdict. The brief was one sentence: tell us which of the three numbers is the company, and tell us what each leak between them is for.
Three checks, one company, three-hundred-twenty thousand of spread. The numbers are below in the order the CFO reviewed them. The marketing director had no language for the gap because the gap had never been decomposed.
Marketing dashboard
$2.10M
Trailing-90-day revenue per Looker Studio (GA4 plus ad-platform feeds)
Shopify summary
$1.95M
Trailing-90-day gross sales per Shopify admin orders export
Operating bank account
$1.78M
Trailing-90-day deposits net of refunds, chargebacks, and platform fees
None of the three numbers is wrong. Each is internally consistent against a different definition. The marketing dashboard reports gross attributed revenue including marketplace orders pulled in from Faire and Amazon feeds and including in-progress checkouts that had not yet completed when the summary ran. Shopify reports gross sales of completed orders inside the Shopify-native channel only. The bank records deposited cash net of all the deductions the prior two surfaces did not see.
The marketing director's instinct was to defend the dashboard because the dashboard was what the team had built. The CFO's instinct was to anchor on the bank because the bank was what funded payroll. Neither was wrong. Both were applying a different definition of "the company" without a written rule that picked between them.
Four explanations were under review when the audit started. Each one was almost-right and pointed away from the layer that mattered.
"GA4 over-numbers; rebuild the dashboard against Shopify only." The technical-sounding argument. The argument is that GA4 inflates revenue because of session-duplication, bot traffic, and the Faire-and-Amazon feed pulling marketplace orders the Shopify admin does not show. Some of that is true. The dashboard overstates revenue. But Shopify understates revenue against the bank by another one-hundred-seventy thousand, and that gap has nothing to do with GA4. Rebuilding the dashboard against Shopify only would fix the smaller of the two gaps and leave the larger one untouched.
"The bank is the truth; the rest is noise." The CFO-sympathetic view. The argument is that deposited cash is what funds the business and the tracking data are a proxy. There is a strong case for the bank as the financial source of truth. There is a weak case for treating the other two reads as noise, because the other two checks are how the team actually steers the channels. Promoting the bank to source of truth without a documented reconciliation framework leaves the marketing team with no assessment at all on the days when the bank is two weeks out of date.
"This is a Shopify Payments lag; it will resolve next month." The temporal-sounding argument. The argument is that Shopify Payments deposits run on a two-business-day lag, so the trailing-ninety-day deposit number is always lower than the trailing-ninety-day gross sales by roughly two days of revenue. True. The two-day lag accounts for roughly fifty thousand of the spread. It does not account for the other two-hundred-seventy thousand. Pointing at the lag was a way to defer the larger conversation.
"Marketing is responsible for revenue, finance is responsible for cash; the two will never tie." The records answer different questions, but the business still needs written definitions for attributed revenue, orders, refunds, deposits, and the decision each figure supports. Without those definitions, budget discussions can compare unlike figures.
All four explanations let the team avoid writing the rule. The structural defect was the missing rule. None of the explanations went there.
No source-of-truth decision, plus seven leak conventions running between the three surfaces unmediated. Each leak was small. Together they produced a three-hundred-twenty thousand spread that nobody on the operating side could explain on demand.
The audit decomposed the spread into seven named conventions. Each is a place where revenue can leak between surfaces. Each is internally honest. None of them was wrong on its own. The absence of the rule that names which surface is the company is what made the seven into a problem instead of a footnote.
The marketing dashboard reported gross sales when the order was placed. Shopify's "gross sales" line on the summary includes refunds-issued as a separate column the dashboard had not pulled. The bank checks net of refunds because the refund hit the bank when issued. Refunds in the trailing-ninety-day window were roughly forty-eight thousand. The dashboard saw none of it; Shopify saw it but in a column the dashboard ignored; the bank reflected the full impact.
Impact · ~$48K dashboard vs bank
The dashboard claimed attributed revenue: orders the GA4 model could guide to a source. Roughly seven percent of orders in the window had no attributable source because the user had cleared cookies, arrived through a non-tagged email link, or come through a marketplace surface where the UTM was lost. The dashboard claimed the attributed share as if it were the total. Shopify claimed all orders regardless of attribution. The mismatch was structural and had been live for the full year.
Impact · ~$70K dashboard vs Shopify
The marketing report recognized revenue when the order was placed. The bank record showed cash when the deposit cleared. Shopify Payments runs a two-business-day lag plus an additional one-day on weekend orders. The trailing-ninety-day window had roughly fifty thousand of orders that had been counted by Shopify and the dashboard but had not yet hit the bank. The same number existed at the front of every quarter; nobody had named it.
Impact · ~$50K Shopify vs bank
The Shopify gross-sales summary does not net out chargebacks because Shopify treats chargebacks as a separate line. Chargebacks in the window were roughly twelve thousand. The bank reflects the full chargeback hit including the per-instance fee. The dashboard saw zero chargebacks because the GA4 feed has no concept of a chargeback. Three surfaces, three different treatments of the same dispute.
Impact · ~$15K Shopify vs bank
Faire and Amazon orders were pulled into the dashboard via a third-party connector that claimed gross marketplace revenue at order placement. Faire takes a fifteen-to-twenty-five percent commission and Amazon takes referral fees plus FBA fees plus storage. The dashboard saw gross. Shopify did not see marketplace orders at all because they did not flow through the Shopify channel. The bank saw deposits net of all marketplace fees, settled on a separate cadence per platform.
Impact · ~$95K dashboard vs bank
Approximately eight percent of orders in the window were billed in non-USD currencies and settled to USD on the deposit cadence. The dashboard claimed the order in the listed USD price at order time. The bank claimed the deposited USD after currency conversion and Shopify Payments' currency-conversion fee. The fee plus the FX drift was small per order and meaningful in aggregate.
Impact · ~$22K Shopify vs bank
Shopify Payments takes a per-transaction processing fee of roughly two-point-nine percent plus thirty cents. PayPal, where used, takes a different fee structure. Klarna, where used, takes a flat-rate fee that the bank reflects but neither Shopify gross-sales nor the dashboard accounts for. Total processing fees in the window were roughly twenty thousand. Dashboard sees zero, Shopify gross-sales sees zero, bank sees the full deduction.
Impact · ~$20K Shopify vs bank
Seven conventions, one missing rule. Each leak was honest. Each was visible to one surface and invisible to another. The decision the operator had been avoiding was which surface to name as the company, and how to reconcile the rest as variances.
The review runs across three layers, the same shape as the platform-level case file in the same cluster. Tracking integrity, conventions, judgment. The checks disagreed because the third layer was empty. The other two were doing what they were configured to do.
Tracking integrity. The data-capture layer was largely intact. GA4 was firing purchase events. The Shopify orders export was complete. The bank statement was authoritative on the cash side. The three surfaces had access to roughly the data they needed. Two specific defects were named: the dashboard was not pulling Shopify's refund column, and the marketplace connector was tracking gross instead of net. Neither defect alone produced the spread.
Conventions. Seven counting conventions were live between the three surfaces, listed in the previous section. Each was internally defensible. Each was incompatible with the conventions on the other surfaces. Without a written rule, the conventions could only produce disagreement.
Judgment. The operator layer was empty. There was no document on the account that named which surface is the financial source of truth, which leaks are reconciled and how, what variance threshold triggers an investigation, and what cadence the reconciliation runs on. The CFO's question was the first time the absence had surfaced.
The shape repeats across the cluster. The technical layer is roughly intact in most operating brands. The conventional layer is full of incompatible definitions. The judgment layer is empty. The disagreement is not a tracking problem; the tracking is fine. The disagreement is a missing rule.
The audit's written verdict named the install order. Order matters. Picking a source of truth before mapping the seven conventions is the difference between an arbitrary policy and a decision that holds up at the next quarter-close.
The reconciliation framework below is what was installed.
The decision is written and signed. Shopify gross sales minus refunds minus discounts is the financial source of truth for revenue recognition inside the marketing tracking. Marketplace revenue (Faire, Amazon) is claimed as a separate line item, net of platform fees, sourced from the platform statements. The bank is the source of truth for cash. Each surface has a defined role; the dashboard represents each surface honestly rather than blending them.
Looker Studio rebuild: trailing-ninety-day revenue line is now Shopify-net plus marketplace-net, with the two lines visible separately. The GA4 attributed-revenue line is moved into a "Channel Attribution" subsection labeled as a directional assessment for budget steering, not a revenue assessment. The dashboard now reconciles to Shopify-net within two percent on any given day; it reconciles to bank with a documented set of variances against the seven conventions.
One artifact, one page: the seven leak conventions named, the variance each contributes between Shopify-net and the bank in a typical month, and the threshold past which the variance is investigated. Refunds run roughly two-point-three percent in this category; chargebacks roughly point-six percent; processing fees roughly two-point-five percent. The variance schedule is the document the CFO and the marketing director viewed together at the monthly close.
The third-party connector pulling Faire and Amazon revenue is rewired to pull net-of-fees revenue using each platform's settlement statements rather than gross-of-fees from the order export. Marketplace revenue now reconciles to the bank within the same two-percent tolerance Shopify-native does. The dashboard line that previously over-claimed by ninety-five thousand is now within five thousand of the bank-reflected truth.
Monthly-close runbook documented end to end: pull Shopify-net, pull marketplace-net, pull bank-deposited, run the variance schedule, investigate any deviation past threshold, sign off. The runbook is owned by the marketing director on the operating side and the CFO on the finance side. Either party can run the close in roughly two hours. The CFO's quarterly question now has an answer in writing before the question is asked.
The board pack now leads with the Shopify-net plus marketplace-net revenue line, with the bank-deposited line listed alongside and the seven-convention variance schedule attached as an appendix. The CFO has the answer to the question he asked at the operating review. The decision is reproducible, owned, and defensible. The next channel-level decision the marketing director makes is sized against the Shopify-net measure, not the unreconciled dashboard measure it replaced.
The CFO's question was the first time the spread had been forced into the open. The question itself was simple. Why do the numbers not match. The answer was complicated only because the operator had been running for a year without a written rule about which surface was the company. The seven conventions had been live the entire time. Nobody had been hiding anything. The tracking had been running honestly against incompatible definitions, and the incompatibility had compounded into a three-hundred-twenty thousand spread that the marketing director could not explain on demand.
The lesson is that revenue checks are conventional, not natural. There is no platonic "revenue" sitting somewhere waiting to be measured. Every surface measures a defensible quantity against a defensible definition. The operator who has not picked which definition is the company is operating on three or more checks that will not agree, and the disagreement is not the surfaces' fault. It is the operator's, for not having written down the rule.
The second lesson is the speed at which the spread compounds. None of the seven conventions on this account looked, on its own, like a structural defect. Each one was a small-percentage leak hidden in plain sight. The dashboard over-scanning by a few percent. The two-day Shopify Payments lag. The marketplace connector pulling gross instead of net. None of them seemed worth the audit on a Tuesday afternoon. Compounded, they produced the question the CFO asked at the next quarter-close. The cost of the absent rule is the slow accumulation of small defensible inaccuracies into a number large enough to make the operating team look careless.
Five Cents · Stan's note
What strikes me about this case file every time I read it back is how recently the marketing director and the CFO had been on the same owner's side of the decision. Three months earlier, when the CFO joined, they were aligned on the strategy and scanning the same dashboard. Three months later they were on opposite sides of a quarter-close with a three-hundred-twenty thousand spread between them. Nothing in their working relationship had broken. The numbers had broken, slowly, while neither of them was looking. The defect had been live the whole time and was only visible the first time someone with a finance instinct opened the bank and the dashboard side by side.
The thing I want operators to take from this is that the reconciliation document is a piece of finance hygiene that lives on the marketing side of the wall. The CFO does not write it. The marketing director writes it, ships it to the CFO, and the two parties sign off on the conventions and the variances. The document protects the marketing director from the version of the question the CFO asks two quarters later, when the dashboard has drifted again and the bank has drifted again and the new spread is bigger and the explanation is harder. Writing it once costs an afternoon. Not writing it costs the marketing director the kind of credibility you cannot rebuild on a single quarter.
What this case file is for: if your marketing dashboard, your Shopify summary, and your bank statement have never been reconciled in writing, you have this case file. Any reconciliation review is scoped after intake, with its conventions, evidence, timing, deliverables, and sign-off owners stated in writing.
Each link below points at a related Atlas page that handles a piece of the case file in more depth. Reference pages give the definition. Position pages give the firm's defended doctrine. The overview gives the map.
If this is the pattern in your account
If the case file maps to your account · multiple surfaces, contradictory revenue checks, the CFO question still open · the engagement that runs this marketing work is the Conversion Marketing Plan. A written review of seven reconciliation conventions, with scope, timing, evidence limits, and deliverables confirmed after intake. If the verdict says install, the Sprint engagement runs the close-process build. If the verdict says hold, you keep the assessment.