Measurement and attribution
Instrumenting what can be observed directly, and stating plainly where observation stops and inference begins.
Attribution is the practice of deciding which piece of marketing caused a purchase, and the honest version of that answer is usually that nobody can know. The available evidence is a partial record of some touchpoints, on some devices, belonging to some buyers. Models fill the gaps and return a confident allocation, and it is the confidence, not the gap that does the damage.
The distinction held throughout is between observation and inference. A form submission the server confirmed is an observation. A sale credited to a display impression served eleven days earlier on a different device is an inference. Both can legitimately appear in a report; they are never given the same weight, and the boundary between them is stated on the surface rather than buried in a note at the bottom.
Instrumentation is built against server-confirmed events. A conversion fires after a successful response, not on the click that preceded it, because a click that failed validation is not a conversion and counting it produces a figure that gets more wrong the worse the form performs. That inversion is the trap: the instrumentation flatters exactly the pages that most need fixing.
Event names and their parameters are decided once, written into a shared definition, and reviewed like code. The default condition of an analytics account is dozens of overlapping event names accumulated by whoever needed one that afternoon, half of them fired from code nobody can locate, and none of them documented. Cleaning that up afterward is archaeology; deciding it beforehand is a meeting.
The inbound half of the same discipline is campaign tagging, and it is where this work most often fails before it has begun. Source and medium values composed by hand drift into a dozen spellings of one channel, and a report that splits a single campaign across four rows because somebody capitalized a word differently is not a measurement failure but a data-entry one. The convention is written down, the permitted values are a known set, and links are generated from that set rather than assembled in an address bar by whoever is launching the campaign.
Platform-reported conversions and internally reported conversions will not match, and the correct response is to expect the gap instead of to reconcile it away. Each advertising platform counts within its own window, by its own rules, and credits itself. Two platforms will jointly claim more sales than the business actually had, which is not fraud but arithmetic — each is answering a different question and neither is answering the business's. The internal number is the one decisions are made against.
Where platforms need to be fed, they are fed the same definition the business uses internally, through a server-side path where one is available. That narrows the discrepancy and improves what the platform can optimize toward. It does not close the gap, and any account of the work that suggests it might is overselling.
Attribution windows and credit rules are presented as settings instead of as findings. Last-click, first-click, time-decay and position-based are four rules for dividing credit, each invented by someone, and switching between them changes the answer while not one underlying event has changed. A report that does not state which rule produced it is not interpretable, and most reports do not state it.
Multi-touch attribution is therefore not sold here as a resolution. The models are not incompetent; they are being asked to recover a causal path from evidence that does not contain one, and they return a clean allocation regardless, because returning uncertainty is not something the format supports. A number that looks precise and rests on ambiguous evidence is more dangerous than an acknowledged unknown, because budget gets moved on the strength of the decimal places.
What is offered in place of certainty is arithmetic that survives scrutiny: spend by channel, directly observed outcomes where the path is unambiguous, and a stated unattributed remainder for everything else. A report saying that a known share of last month's bookings trace to a specific source and the rest cannot be traced is more useful than one assigning every booking somewhere, because the first can be acted on and the second has to be believed.
Consent and blocking are part of the measurement model, not an inconvenience to it. A meaningful portion of visitors will decline tracking, run a blocker, or arrive in a browser that partitions storage between visits. Measurement designed on the assumption that everyone is observable produces a number wrong by an amount nobody can quantify. First-party and server-side instrumentation narrows that, and the residual is reported as a known limit instead of being left for someone to discover.
The question a business usually means to ask is incrementality — how many of these sales would have happened anyway — and attribution cannot answer it at any level of sophistication. Only holding something back and comparing can. Where a business spends enough for a holdout to produce a readable result, we say so and help design it. Where it does not, we say that too instead of substituting a model for the experiment.
Outcomes that complete away from the website need a deliberate path back. A lead that closes on a phone call three weeks later has a source recorded at first contact and a value recorded at close, in two different systems, and joining them is work that does not happen by default. Businesses with long sales cycles are precisely the ones optimizing against the smallest and least representative slice of their pipeline, because the part that closes immediately is the only part instrumented.
The measure of all of this is narrow: whether a person can open the report and act on it without first having to relitigate whether they believe it. Every choice above trades apparent precision for that property, and the trade is made deliberately because a number that has to be defended before it can be used has already cost more than it returns.
What this does not cover.
- Multi-touch attribution models presented as an answer to which channel caused a sale.
- Managing advertising campaigns or directing media spend. The measurement is built here; the buying is not sold.
- Cross-site tracking, device graphs, and identity resolution purchased from a third party.
Data & Analytics
Metric definitions
Every figure carries what it counts, what it excludes, where it was read from, and when the definition last changed.
Pipelines and synchronization
Jobs designed around their failure modes: safe to repeat, able to resume, loud when they stop.
Warehousing
When a warehouse is genuinely warranted, and the considerably more common case where it is not.
Reporting surfaces
Built to answer a decision instead of to display everything available, with freshness on the face of it.
Data quality
Validation at the boundary where records enter, because everything after that point is cleanup.
Analytics and privacy
Collecting against named questions, from few third parties, under a policy that matches what the code does.