Skip to content
Anil Thapa
Trust & governance

Marketing and payment attribution across teams that each kept a version

One customer, four acquisition stories

Marketing counted a click, finance counted the cash, product counted the first visit, and the payment data counted attempts that never became orders. All four were right. The decision was not to pick a winner but to publish four named measures with owners, and to say which decision each one serves.

A pattern met more than once: wherever a channel budget and a finance close read the same customer differently

Observed changeBudget moved on evidence the channel owner and finance could both read, and the monthly argument about whose number was right ended

WarehouseTransformationSemantic layerIngestion

What this is about

  • Attribution is four questions wearing one word; answer them separately and name each one
  • A blended number nobody can explain loses to named measures somebody owns
  • A click can be counted; a cause has to be tested, and the warehouse cannot do that alone

From attribution work across marketing, finance and payments data. The Facebook study is published.

Situation

Ask four people in the same company how many customers were acquired last month and the answers arrive from four systems, each confident.

Marketing has the advertising platforms’ number: conversions the platforms claim, attributed by each platform’s own rules and its own window, some of them to an ad that was seen and never clicked. Finance has the processor’s number: payments captured, net of refunds, booked when the money settled. Product has the analytics number: first sessions by landing path and campaign, which is what the roadmap is planned against. And the payments data, read directly, has a fourth: attempts, retries, declines and captures, where one order can carry three attempts and a refund, and where the identifiers the gateway uses are not the ones the order system uses.

Every one of those numbers is correct within its own frame. None of them is the acquisition count, because there is no such thing until somebody decides what an acquisition is. The surface story is always attribution, which sounds like a modeling problem. The problem underneath is that the word means a different event to each team: a click, a captured payment, a first visit, a payment attempt. “Customer” has the same trouble. One of the systems counts a person, one counts an account, one counts a device, and one counts a card.

The symptom is a monthly meeting with three spreadsheets in it. The budget decision gets made on the marketing number because it arrives first and the channel owners act on it daily. Finance distrusts it and says so after the fact. Product plans against a third number nobody else looks at. Each month someone reconciles the three by hand, and the reconciliation, not any of the systems, is the number leadership remembers.

I have met this shape more than once, and the pull every time is toward a single blended number: a model that weights the touches, settles the argument, and gives the board one figure. I have come to think that is the wrong instinct, and this case is about why.

Constraint

  • The platforms report what they report. Each advertising platform attributes conversions by its own rules and windows, counts some conversions no other system can see, and will not change either for one customer. Summing their numbers across platforms double-counts by design.
  • The close is fixed. Finance books what the processor settled, net of refunds inside its window, on the calendar the audit expects. That number cannot move to accommodate a marketing definition, and it should not.
  • Identity is stitched, not known. The same person is a cookie before the first purchase, an account after it, and a card at the processor. The stitching is good enough for direction and never good enough for a count that two teams will accept to the unit.
  • Experiments are expensive and sometimes impossible. A holdout in a paid channel costs real spend. In a channel whose supply is a partner’s, no holdout is available at all.
  • One shared team. The people who could build any of this were already running the platform. The attribution work was additive.

The first and third constraints shape the design more than the others. A number that cannot be reconciled to the unit should not be published as if it could, and a platform number should never be allowed to look like a finance number.

Decision

Publish four named measures with four owners, and a bridge between them, instead of one blended number nobody can own.

Each measure answers one question and is labeled with the decision it serves. None of them is called plain “acquisitions.”

Measure What it counts Owner The decision it serves
Platform-reported conversions What each advertising platform claims, by its own window, never summed across platforms except in the bridge The channel owner Bidding and creative within a channel, where the platform’s own feedback loop runs
Paying customers acquired The first captured payment per customer, net of refunds within the finance window Finance The board number, the close, and the budget between channels
First-touch acquisitions The first session’s landing path and campaign for customers who later paid Product Which paths bring customers who stay, for the roadmap
Payment conversion Attempts to captures, by processor, method and failure reason The payments owner Routing, retries and which processor to keep

Three rules make the four measures hold together.

One identity rule, written down, with a precedence order. A customer key is assigned once: the account where there is one, the payment instrument where there is not, the device last. Every measure uses the same key and the same precedence, so the differences between measures are differences in definition and never in matching. The rule is published with its known failure cases, which is more useful than pretending it has none.

Event time and system time are both kept, and the measure says which it uses. A payment that was attempted on the last day of the month and captured on the first belongs to one month for marketing and another for finance. Neither is wrong. The measure’s definition names the timestamp it uses, and the bridge shows the records that moved between months.

A monthly bridge from the platform number to the finance number. The bridge is a short table: platform-reported conversions, by platform; less view-through; less duplicates across platforms; less repeat purchases by customers already acquired; less attempts that never captured; less refunds in the window; plus or minus payments that crossed a month boundary; plus customers no platform claimed; equals paying customers acquired. Every line has an owner and a definition. The bridge is the one place the platform numbers are added up, and the duplicates line sits directly under the sum so it never travels alone. It is the document the monthly meeting reads, and it replaces the three spreadsheets because it is built from the same warehouse all four measures come from.

The budget decision gets its own evidence

The four measures settle what happened. They do not settle what caused it, and the budget between channels is a question about cause: what the next unit of spend returns in each channel. A platform’s attribution reports a correlation under its own rules, and a blended model built on the same observational data inherits the same limit however carefully the weights are chosen.

Brett Gordon, Florian Zettelmeyer, Dan Chapsky and Neha Bhargava compared observational attribution methods with randomized experiments across fifteen advertising experiments at Facebook, in Marketing Science in 2019, and found that the observational methods often failed to produce the same effects as the experiments, even after conditioning on extensive demographic and behavioral variables. A 2023 follow-up in the same journal, by Gordon, Robert Moakler and Zettelmeyer across 663 experiments, reached a similar conclusion. A counted conversion is a measurement. A cause is a test. The budget between channels should rest on the second wherever a test is possible.

So the budget decision got its own evidence: a holdout in each paid channel where one was possible, run on a schedule, read against paying customers acquired rather than against the platform’s number. Where no holdout was possible, the recommendation said so and carried a wider range. The channel owner kept the platform’s number for the daily work inside the channel, which is what it is good for, and stopped carrying it into the meeting where the money moves between channels.

The tradeoff I accepted

I gave up the single number, and the board wanted one.

The request from the top was for one acquisition figure, and the four measures are an answer that begins with “it depends on what you are deciding.” That is a harder answer to present. The board got paying customers acquired as the headline, because the money is the least arguable event, and the bridge beside it. The first two reviews spent time on the bridge that would otherwise have gone to the decision. By the third it was a line.

The other costs were real and continuing:

  • Marketing’s dashboards show a number finance will never match. That was always true. Publishing both made it visible, and the channel owners had to explain, more than once, why their number is higher by design. The label “platform-reported” carries some of that explaining and not all of it.
  • The bridge is permanent work. It is a monthly deliverable with an owner, built from definitions that drift as platforms change their rules. The month it is skipped, the spreadsheets come back.
  • Holdouts cost spend. A test in a paid channel is money spent on not advertising to some people, and the first one is approved on faith. The evidence has to arrive before the second one is funded.
  • Budget decisions in the untestable channels got slower and more hedged. A range with a stated reason is less satisfying than a confident attribution weight. I would rather present the range.
  • No blended model. I declined to build one, and that disappointed people who had seen a vendor’s demo. The reason was ownership: nobody could say what the weights meant or who would answer for a budget moved on them.

Outcome

The monthly argument about whose number was right ended, because each number had a name, an owner and a stated use, and the bridge between the two that mattered most was a table rather than a reconciliation someone did privately. The budget conversation moved from “which number” to “which channels can we test, and what did the last test show,” and budget moved between channels on the holdout evidence for the channels that could be tested. Finance accepted paying customers acquired for the close without a parallel reconciliation.

Payment conversion turned out to be the measure nobody argued over, and the only one that changed a system: read by processor and failure reason, it justified a change to how failed attempts were retried that no attribution model would have surfaced, which is the argument for keeping it separate rather than folding it into a funnel.

I cannot tell you the budget moves were right. I did not record each move against what the next quarter showed, which is the same discipline I ask of any recommendation. And four is not a magic number. It was the number of distinct questions in the room, and another company will have three or five.

The durable change was smaller and sits underneath: the identity rule and the timestamp rule became part of the platform’s definitions, so every later question about customers inherited them instead of re-deciding them.

What I’d do differently

Name the four questions in the first meeting, not the fourth. The early meetings tried to reconcile the numbers. The useful meeting asked each party which event they count, over which window, with which identity key, for which decision, and wrote the four answers on one page. Everything after that was engineering.

Build the bridge before any dashboard. The first dashboards showed the measures side by side without the bridge, and side by side without an explanation reads as a contradiction. The bridge is the product; the dashboards are views of it.

Run the first holdout earlier, and smaller. The first test was sized to settle the question and took a quarter to approve. A small test that proved the method would have been approved in a week and made the large one ordinary.

Write the identity precedence rule down before anyone is counting. The rule existed in the code for months before it existed on a page, and every disagreement about a count in that period turned out to be a disagreement about matching that nobody could see.

Never let the platform numbers be summed outside the bridge. One slide that added them across platforms, with no duplicates line under the sum, set an expectation that took two reviews to unwind. The label on the measure should make the sum impossible to present without the line that corrects it.