Run · Reporting, BI & profit analytics

Know what each channel made you, after COGS.

We build the one reconciled view of post-COGS profit by channel — the model underneath it written down and tied to your accountant’s P&L, on a warehouse you own, so it survives a tool being swapped.

  • 8–12

    marketing tools the typical $15M+ brand runs, rarely reconciled

  • post-COGS profit by channel, in a stack nobody has reconciled

Tool count: Pointerflow category review, 2026 — a category estimate, not a measurement of your stack. The second figure stays an em dash until it is measured in your own data.

The problem

A frozen-meal brand ships a first box on a Monday. The customer who ordered it watched a TikTok in March, was retargeted on Meta through April, searched the brand by name on Google the week she finally bought, and clicked a Klaviyo welcome email to check the delivery date. By Tuesday four dashboards each report that order. None of them is lying. None of them knows what the box costs to make, what it costs to ship frozen, what the launch discount took off it, or that the second box — the one that actually makes the account profitable — arrives with no ad spend attached at all.

That is the shape of the problem at $15M. The brand runs somewhere between eight and twelve marketing tools (Pointerflow category review, 2026), each reports the revenue it believes it caused, and added together they claim more than the business earned. No villain, no bad software: every tool is doing exactly what it was built to do — measuring itself. Reconciling them is not a dashboard problem. It is a modelling problem: one definition of a customer, one definition of a cost, one written rule for joining spend to orders, applied the same way every night whether or not anybody is looking.

The question a founder actually asks is which channel made us money last month, after COGS. Almost nothing in the stack is built to answer it, because almost nothing in the stack knows what anything costs.

Revenue is not margin, and no ad platform knows the difference

Meta reports revenue. Shopify reports revenue. Neither has ever seen your cost per pouch, your inbound freight from the co-packer, your outbound cold-chain rate, your 3PL’s pick-and-pack fee, your payment processing fee, or the launch discount on the first subscription order. For consumables that gap is not a rounding error: on frozen or refrigerated food, shipping is one of the largest lines in the P&L, and it moves by zone, by box size and by season. A coffee subscription with a small basket and a flat ground-shipping cost can be gross-margin negative in one zone and comfortable in another. Averaged into one blended number, both facts disappear.

The subscription puts the timing wrong as well

Even a correct margin figure gets read at the wrong moment. A subscription brand’s first order is usually its worst one: discounted, carrying the entire acquisition cost, and often shipped at a loss. The money arrives on orders two, three and four. A monthly ROAS number blends those first-order economics with rebill revenue that cost nothing to acquire this month, so a brand with a large subscriber base looks like it had a good acquisition month. It is a cohort question wearing a calendar’s clothes.

And the reporting lives inside the tool being measured

The dashboard is a feature of the platform it reports on, so the history belongs to the vendor. Swap one attribution tool for another, change agencies, or churn out of a plan, and the definitions shift under you and the baseline leaves with them — usually in the quarter you most needed to compare against last year. Meanwhile nobody has written down what counts as a new customer or when a refund lands, so two people can pull the same report and disagree in perfectly good faith.

Why your two ROAS numbers disagree

This is the argument every brand at this size is having, usually without the vocabulary to end it. The two numbers are measuring different things, and neither one is wrong. One of them is a model’s estimate of its own contribution. The other is arithmetic on your bank account.

Platform-attributed ROAS

Each ad platform counts an order when it can match it to somebody who saw or clicked one of its own ads inside a lookback window that the platform sets and you can change in its settings. It sees only its own ads, applies only its own window, and since the mobile privacy changes a meaningful share of the match is modelled rather than observed.

Sums past the truth as soon as two platforms claim the same order.

Blended ROAS

Total revenue in a period divided by total ad spend in the same period. One number, no attribution assumption, nothing double-counted, and it ties to the bank. It also cannot tell you which channel did the work, and it credits paid media with subscription rebills that cost nothing to acquire this month.

Honest about the total, silent about the cause.

Three reasons they never tie

  1. Overlap. One order, several platforms with a legitimate claim on it. Add the claims together and you get more revenue than the business took.
  2. Windows. Lookback lengths and click-versus-view rules differ between platforms, so the same order lands in different weeks — sometimes different months — depending on which tool you ask.
  3. Baseline. Blended includes organic, email, and for a subscription brand the decisive one: recurring orders. When most of a month’s revenue is rebills, blended ROAS is mostly measuring the subscriber base you already had.

What to do about it

  1. Pick one number the business is steered by, and publish its definition. For most brands at this size that is contribution margin after COGS and shipping, read at the cohort level.
  2. Keep the platform numbers, in their own column, as directional signal for the people buying media. Never add them together.
  3. Split new-customer revenue from rebill revenue in every report. Without that split you cannot tell a good acquisition month from a big subscriber base.
  4. Judge acquisition on first-order margin plus the cohort’s margin at 90 and 180 days, not on day-one ROAS. On a repeat-purchase product, day one is the least informative day there is.
  5. Test incrementality by changing one channel at a time and watching blended — a holdout or a geo split. That costs media spend, not software, and it is the only honest read available.
  6. Never reconcile by choosing whichever number is highest. That is the habit the reconciled view exists to break.

We do not sell an attribution methodology and we do not have a model that knows what Meta caused. What we build is the reconciled view — both numbers, side by side, with the gap named and sized — so the disagreement is visible instead of buried in whichever dashboard was opened first.

What we build

Eight pieces, in your accounts, documented. The warehouse is the point: every tool above it is replaceable, and the history stays when one gets replaced.

  • Warehouse in your own account BigQuery or Postgres, in your cloud project, with nightly raw loads: Shopify orders, refunds and payouts; Recharge or Skio subscription events; Klaviyo sends and revenue; spend from Meta, Google, TikTok and Amazon.
  • Order-level margin model Cost per variant, inbound freight, packaging, the actual outbound shipping charge off the 3PL invoice, payment fees and the discount that was applied — joined to every order line, so gross margin is a column rather than a quarterly spreadsheet exercise. Every input traces to an invoice or a rate card, and the handful that are genuinely estimates are labelled as estimates in the model rather than rounded into confidence.
  • One channel table Every platform’s spend and its own attributed revenue landed beside the orders themselves, joined on one rule that is written down. The platform’s number is kept next to yours, never quietly overwritten by it.
  • Blended-versus-platform reconciliation Both views on one screen with the gap named and sized every month, so the disagreement becomes a number you manage instead of an argument you have. The platform’s figure is kept for what it is — a model’s report on its own work, useful as signal, never added to another platform’s.
  • Cohort and subscription views First-order margin read against cohort margin at 30, 60, 90 and 180 days by acquisition channel; net revenue retention; voluntary churn separated from involuntary. It is the same reporting layer the retention work reads from.
  • Dashboard layer Looker Studio, Metabase or Preset on top of the warehouse. Because the model lives underneath, the front end is a preference rather than a lock-in — and swapping it costs a week, not a rebuild.
  • Scheduled delivery A Monday-morning number in Slack or email, on self-hosted n8n, with what moved since last week written out in plain language beside it and the definitions one click away. A report nobody logs in to read is not reporting.
  • A definitions document What counts as a new customer, which discount codes are cost of goods, when a refund lands, how a subscription rebill is classified. Boring, and the reason two people stop pulling different versions of the same number.

The cohort layer is shared with subscription retention — same tables, same definitions, so retention work and reporting work never report two different churn numbers. It is also the precondition for everything on the agent side: an agent reading a number nobody has reconciled will be confidently, fluently wrong faster than a person could manage. Reconcile first, automate on top.

How the build runs

Six weeks from access to a dashboard, on a fixed scope. The trust comes from stage three: nothing is published until a closed month ties to your accountant’s P&L.

  1. 01

    Definitions & source audit

    Every tool in the stack inventoried, every metric that matters defined in writing, and every disagreement between two tools listed before a line of it is built. Most of the value of this project is decided here.

    Week 1

  2. 02

    Warehouse & pipelines

    Warehouse stood up in your cloud account, connectors landing raw data nightly, and as much historical backfill as each vendor’s API is willing to give up — which is never as much as you would like, so we start it early.

    Week 1–2

  3. 03

    Margin model

    Costs, freight, fees and discounts joined to order lines, then reconciled against your accountant’s P&L for one closed month. Every remaining difference gets explained line by line before anything is published.

    Week 2–4

  4. 04

    Channel & cohort views

    Spend joined to orders on the agreed rule, platform-attributed revenue kept alongside it, and cohorts cut by acquisition channel so first-order economics stop being averaged into rebill revenue.

    Week 4–5

  5. 05

    Dashboard & delivery

    The front end built, the scheduled report wired, and your team walked through where each number comes from — including the ones that are estimates, and how far off they can be.

    Week 5–6

  6. 06

    Drift checks

    Pipelines break quietly and vendors change their schemas without telling you. We monitor the loads, flag SKUs whose cost has not been updated since their last purchase order, and re-tie to the P&L each quarter.

    Ongoing

The tools, and what they cost

Three of these are hosted products and the fourth is the category this page sits in. There is no accuracy column, because there is no independent measurement we could honestly put in one — every published accuracy claim in this category is the vendor’s own.

Reporting and attribution tools — published pricing
ToolPublished pricing — verify before committingImplementationWhat it is
Triple Whale$129–$2,000+/mo, tiered by GMV (vendor-reported)None publishedHosted attribution and profit dashboard. The data model is theirs.
Northbeam$1,000–$6,000/mo (vendor-reported)$2,000–$8,000 (vendor-reported)Attribution platform aimed at heavier paid-media spenders.
Lifetimely$49+/mo (vendor-reported)None publishedLTV and cohort reporting, Shopify-native, narrower scope.
Custom warehouse build$2,000–$15,000 build; $500–$3,000/mo ongoingIncluded in the buildA model in a warehouse you own, with a replaceable front end.

The three vendor rows carry list prices the vendors publish themselves — vendor-reported, not independently verified, and they move: GMV tiers, seat counts, annual commitments and negotiated deals all change the number. Check the vendor’s own pricing page on the day you sign. The fourth row is the category range for a custom build, not a quote; our own pricing sits inside it and is published in full below. Nothing in this table is a claim about accuracy, attribution quality or lift — it is a cost comparison and nothing more.

Choosing between them is mostly a question of who has to own the model. A hosted tool is faster to switch on and someone else maintains it, at the cost of the history belonging to them. A warehouse is slower to stand up and you maintain it, and the definitions and the back catalogue stay yours. Plenty of brands should run both, which is why the build lands the platform’s attributed revenue beside your own numbers rather than in place of them.

What it costs

Published ranges, because hidden pricing costs more leads than it protects.

Revenue Recovery Audit — reporting and analytics scope

$1,500–$3,000

Warehouse, margin model and dashboard build

$2,000–$15,000

Ongoing — new views, pipeline monitoring, definition upkeep

from $500/mo

Warehouse and connector usage, billed by your cloud provider

Where you land in the build range depends on how many sources have to be reconciled and how clean your cost data is, not on how much we think you can pay. The audit is credited in full against any build you go ahead with.

The last line is not ours. A warehouse and its connectors are billed on usage by your own cloud provider, and the figure depends on your order volume and how much history you backfill — so we size it against your real numbers during the audit rather than publish one here we could not stand behind. Warehouse usage — metric to confirm at audit

Questions

Do we have to rip out Triple Whale?

No, and usually you shouldn’t. It is a reasonable front end for daily pacing and your media buyers already read it. What changes is that it stops being the only number: its attributed revenue lands in the warehouse as one column beside the orders themselves, and the profit view is built underneath where you own it.

Is this just a Looker Studio dashboard?

The dashboard is the last ten percent. The work is the warehouse, the pipelines and the margin model — cost per variant, freight, 3PL fees, payment fees and discounts joined to every order line. Anyone can build you a chart; the reason most reporting projects fail is that the numbers underneath the chart were never reconciled to anything.

Where does our COGS data come from?

From you, and this is usually the slow part. We need cost per variant, inbound freight, packaging and your 3PL’s actual per-order charges. We build the intake and the maintenance path — including a flag on any SKU whose cost has not been updated since its last purchase order — but nobody can model a margin from data that does not exist.

Can you tell us which channel is actually incremental?

No, and neither can any tool that says it can. Incrementality comes from holdouts and geo tests, which cost media spend rather than software. What we build is the measurement surface that makes those tests readable — a stable, reconciled baseline with cohorts and margin attached, so when you do run a holdout you can read the result.

Who owns the warehouse if we stop working with you?

You do. It is your cloud account, your billing, your data, and the transformations are documented SQL in your repository. Nothing switches off and nothing needs re-buying. That is the whole reason we build it this way rather than inside a platform we resell.

How long before we can trust the numbers?

Until one closed month ties to your accountant’s P&L, you shouldn’t trust them, and we don’t publish a dashboard. That reconciliation is stage three of the build. When the two disagree, the difference gets explained line by line — usually refunds, gift cards, shipping income or the treatment of a discount — before anything goes on a screen.

We already have an agency reporting to us weekly. Does this conflict?

No. It gives them a shared definition to report against, and it gives you a copy of the history that does not leave with them. Most agencies welcome it, because arguing about whose number is right is not what they want to spend the call on either.

Our stack is only three tools. Is this worth doing?

Possibly not yet, and we would say so in the audit rather than sell you a warehouse. Below roughly $3M and a handful of tools, a well-maintained spreadsheet and one honest definition of contribution margin often beats a platform. The build earns its cost when the tools start disagreeing faster than a person can reconcile them.

Find out what you’re losing.

Before you commit to anything, we tell you exactly what you’re losing and what it costs to stop it. Two weeks. Fixed fee. Credited in full against any build you go ahead with.

Fee
$1,500–$3,000, fixed
Duration
Two weeks
Credited
In full, against any build
You supply
Read access + one 45-minute call