Skip to content
Moosewave
Demo
Email analytics & attribution

The order is real. The cause is a model.

Revenue can be observed exactly and still be credited carelessly. Follow one order from delivery to refund, then decide what the evidence supports: a record, an assignment, or a causal estimate.

By Moosewave

Published · 13 min read

Several channel paths pass through a measuring instrument toward one purchase receipt while a separate holdout path remains available for comparison.
One purchase can appear in several channel reports. The transaction stays the same; the allocation rule changes.

Share this article

Start with three ledgers

Observed, attributed, and incremental revenue answer different questions.

01 · Observed
The commerce system recorded an order and its later refund. This is a business event, independent of channel credit.
02 · Attributed
A declared rule assigned some or all net order value to email because an eligible touchpoint appeared in its window.
03 · Incremental
An experiment estimated the additional revenue that would not have occurred without the email treatment.

A sound email analytics system keeps all three. It never relabels attributed revenue as incremental revenue merely because the dashboard has a currency symbol.

One order, seven records

Consider a fictional order, ORD-4821. We can reconstruct its chronology without pretending every event carries the same weight. The useful object is not a single “email conversion” row. It is a chain of source records with timestamps, identifiers, and confidence.

  1. 01

    08:04 · Delivery accepted

    The receiving server accepts the campaign message. This proves acceptance at that boundary, not inbox placement or attention.

  2. 02

    08:16 · Link requested

    The campaign link is requested. Scanner classification and surrounding browser activity determine whether the report calls it machine, uncertain, or likely human.

  3. 03

    08:17 · Session begins

    A landing session carries campaign parameters and a first-party session identifier. The URL evidence survives even if the eventual purchase happens later.

  4. 04

    08:21 · Identity resolves

    The visitor signs in. Under the workspace’s permitted identity policy, the browser session can now join the known customer profile with an explicit confidence level.

  5. 05

    Next day · Direct return

    The customer types the store address on a laptop. Direct is the observed session source; a last non-direct model may still look back to email.

  6. 06

    10:42 · Purchase recorded

    The commerce system emits ORD-4821 for 120 revenue units with a durable transaction ID. That is observed gross revenue, not yet channel credit.

  7. 07

    Day six · Partial refund

    A 20-unit item is refunded against ORD-4821. Retained revenue is now 100 units, and every downstream attribution view should reconcile to that change.

The click itself also needs care. Link scanners and security systems can create requests that resemble engagement. The field note on email click tracking, bots, and human intent explains why a raw request should not become a high-confidence touchpoint automatically. The same caution applies one rung earlier: an open is an image request, not a reliable witness to attention.

The path changes when identity changes

The clean diagram assumes one person, one browser, and one uninterrupted trail. Real customers click on a phone, compare on a work computer, ask a partner, and purchase through an app. A first-party account ID can connect signed-in activity across devices when that use is disclosed, permitted, and consistently implemented. It cannot honestly connect activity that was never identified.

Keep unknown gaps unknown. A deterministic account join, a device-level identifier, and a modeled association should not share one undifferentiated “customer” label. Google Analytics, for example, documents User-ID, device ID, and modeling as separate identity spaces. The chosen reporting identity can change the journey a report appears to see.

Direct return

Preserve direct as the session fact. If a model carries forward email credit, label that as its attribution rule.

Overlapping campaigns

Retain every eligible touch and exact send. Otherwise the newest campaign can silently claim demand built by earlier work.

Repeat buyers

Separate customer history from this order’s path. Existing purchase intent can make attributed revenue large while incremental lift remains modest.

Cross-device gaps

Report matched and unmatched coverage. Do not use probabilistic stitching as if it were a confirmed person-level fact.

This is why attribution depends on more than the email tool. Moosewave integrations preserve source events from the store, product, and customer systems, while the audience layer keeps eligibility and customer state distinct from a model’s channel credit.

Five models, five answers to the same order

Suppose the observed path is Organic Search → Email A → Paid Social → Email B → Direct → 100 units of retained order value. The table below applies familiar models to that same evidence. First-click, linear, and position-based views remain useful concepts in custom analysis, but Google Analytics retired those rule-based models from its attribution reports in November 2023. A report should say what it actually computes, not borrow a model name from an older interface.

Comparison of first-touch, last-touch, linear, position-based, and randomized holdout approaches for one order
ApproachAllocation for this pathUseful lensBoundary
First touch100 units to Organic SearchHow the observed journey beganIgnores every later influence and does not estimate cause
Last non-direct touch100 units to Email BThe final identifiable acquisition touchDirect is skipped by rule; Email B receives all credit
Linear25 units to each of four non-direct touchesA deliberately even journey viewEquality is an assumption, not an observed contribution
Position based40 units first, 40 units last, 10 units to each middle touchEmphasizes discovery and closingThe weights are chosen, not discovered
Randomized holdoutNo person-level allocationDifference in outcome rates between treatment and controlEstimates program effect, subject to experimental uncertainty

Attribution models divide known credit. They are still valuable: teams need stable operational reporting, channel comparisons, and paths worth investigating. The mistake is treating a different allocation as a different sale, or a sophisticated allocation as proof of causality.

A window is an eligibility rule

A seven-day click window asks whether a qualifying email click occurred during the seven days before purchase. A 30-day window admits more touches. It does not make the order larger or the older interaction more causal; it changes which records are eligible for credit.

Choose the window before opening the performance report. Ground it in the normal decision cycle and the message’s purpose: a same-day replenishment reminder, a weekly launch, and a considered subscription do not need identical windows. If 24-hour, seven-day, and 30-day views reverse the conclusion, show the sensitivity instead of choosing the flattering one.

The window belongs in the metric’s name, not in a hidden settings panel.

Also keep event time and reporting time straight. A December order can receive credit from a November touch if the window allows it. Google Analytics documents both event-time and interaction-time reporting because the chosen date boundary changes which side of a monthly report receives the credit.

Revenue should survive contact with the ledger

Our example begins at 120 units and ends at 100 after a partial refund. A dashboard that keeps the original 120 indefinitely is measuring checkout value, not retained revenue. Preserve the purchase and refund as separate immutable source events, join them by transaction ID, and derive gross, refunded, and net values for the selected reporting date.

Deduplication matters just as much. A purchase confirmation page can reload, a server event can retry, and two analytics libraries can emit the same order. A durable transaction ID lets the measurement layer reject duplicates without deleting legitimate repeat purchases. Google Analytics likewise recommends transaction IDs to minimize duplicate key events and defines a refund event for full and partial refunds.

Decide whether the business question uses order date, refund date, or a maturation period, then state it. Finance may close a month one way while lifecycle teams use a rolling retained revenue view. Both can be valid if each report reconciles to the same commerce records and declares its timing policy.

Moosewave’s commerce connection keeps the source transaction and adjustments beside the message path, so attribution can be recalculated when the order changes rather than frozen at the thank-you page.

A worked holdout, with the arithmetic exposed

Now change the question from “which touch gets credit?” to “what happened because we sent?” Imagine 10,000 eligible recipients randomized before a campaign. The numbers below are illustrative, not a benchmark.

Treatment

450 / 9,000

5.0% purchased after being assigned the campaign.

Holdout

40 / 1,000

4.0% purchased without receiving this campaign.

Treatment rate − holdout rate = 5.0% − 4.0% = 1.0 pp

Expected baseline orders = 9,000 × 4.0% = 360

Estimated incremental orders = 450 − 360 = 90

Relative lift = (5.0% − 4.0%) ÷ 4.0% = 25%

At 100 equal net revenue units per order: 90 × 100 = 9,000 units

Suppose the seven-day last-touch report assigned 315 orders, or 31,500 net revenue units, to email. That does not contradict the experiment’s estimate of 90 incremental orders and 9,000 units. Attribution asks which observed orders meet a credit rule. The holdout estimates how many orders exceeded the baseline that would likely have occurred anyway.

The transparent arithmetic is only a point estimate. A real analysis needs uncertainty intervals and enough statistical power. Randomization must happen before exposure; treatment and holdout need the same eligibility rules and observation period; mandatory transactional messages should continue; and overlapping promotions can contaminate the contrast. Unequal allocation is acceptable, but the comparison must use rates or correctly scaled totals.

Analyze assignment, not only successful delivery or observed opens. Excluding hard-to-reach treatment recipients after randomization can break comparability. Record suppressions, delivery failures, cross-channel contact, and the number of observations; decide the success metric and duration in advance; and avoid repeatedly peeking until noise looks like a win. Google’s own lift documentation makes the same conceptual separation between standard attributed conversions and incremental conversions estimated from treatment and control.

Build the report so it can disagree with itself

A trustworthy report does not force every question into one heroic number. It shows observed orders and refunds from the commerce ledger, attributed revenue under a named model and window, and experiment estimates with their assignment, uncertainty, exclusions, and contamination notes.

In Moosewave, an order keeps its source identity while models produce versioned views. Change the attribution window and the allocation can be recomputed without rewriting the event history. Connect a refund and retained revenue updates. Resolve a signed-in identity and the path gains a confirmed join rather than a silent merge. Campaign, audience, and experiment membership remain inspectable.

The useful dashboard can therefore say, at the same time: “email received 31,500 units under seven-day last non-direct attribution,” “the store retained 100 units on ORD-4821,” and “the holdout estimated 9,000 incremental revenue units, subject to this interval.” Those statements do not compete. Together, they tell the operator what happened, how credit was allocated, and what the campaign may have caused.

Open the interactive Moosewave walkthrough to follow audience selection, sending, and outcomes through one connected workspace. The product should make it easier to ask a narrower question, not easier to overstate the answer.

Frequently asked questions

Direct answers about email revenue attribution, windows, identity, refunds, and randomized holdout measurement.

What is email marketing attribution?

Email marketing attribution is the process of assigning conversion or revenue credit to email touchpoints under a declared rule or model. It explains how a report distributes credit; it does not by itself prove that email caused the outcome.

What is the difference between attributed and incremental revenue?

Attributed revenue is observed revenue assigned to email by a model, such as last non-direct touch within seven days. Incremental revenue estimates how much additional revenue occurred because the email was sent, usually by comparing a randomized treatment group with a valid holdout.

Which email attribution model is best?

No model is universally best. Last touch is simple for operational reporting, first touch describes discovery, and multi-touch rules describe a journey from different angles. Use a randomized holdout when the decision requires causal evidence, and always publish the model and window beside the result.

How long should an email attribution window be?

Choose a window before reading the result, based on the decision cycle and message purpose. A flash sale may justify a short window, while a considered purchase may need longer. Report a sensitivity view when reasonable windows materially change the conclusion.

How should direct visits be treated after an email click?

Keep the direct session as an observed fact. A last non-direct model may assign the later purchase to the earlier email click if it remains inside the lookback window, but that assignment is a reporting convention rather than proof that email caused the purchase.

How do cross-device purchases affect email attribution?

A click on one device and purchase on another can look like two people unless a permitted, stable first-party identity connects them. Keep unmatched paths visible instead of forcing a join, and document how consent, sign-in, device IDs, and identity confidence affect coverage.

Should refunds reduce attributed email revenue?

Yes, when the business question is retained revenue. Preserve the original purchase, record full or partial refunds against the transaction ID, and show both gross and net values so the report can be reconciled to the commerce ledger.

How does an email holdout test measure incrementality?

Randomly assign eligible recipients before sending, deliver the campaign to treatment, withhold it from control, and compare outcome rates over the same period. The rate difference estimates incremental effect under the experiment assumptions; uncertainty, contamination, the number of observations, and opportunity cost still need to be reported.

Sources & method

Current analytics documentation and experiment guidance

Official documentation establishes how common analytics systems define attribution, identity, ecommerce adjustments, and lift. The worked order and operating model are Moosewave’s synthesis.

Last reviewed 13 August 2026. Interfaces and model availability change; verify the current documentation for the analytics and commerce systems you operate.

Continue reading

Audit the touch before assigning the order

Learn how security systems complicate click evidence, then see why an image request cannot stand in for human attention.

From field note to next move

Turn the question into a reviewable plan.

Give Moosewave the outcome you want. The goal carries into a guided workspace with its scope, approval points, and evidence still attached.

Journal handoffGuided workspace · no live actions
Enter to preview · Shift + Enter for a new line

Opens a guided workspace. Nothing is sent or changed.

  1. 01UnderstandQuestion and evidence
  2. 02PlanScope and exclusions
  3. 03ApproveExact proposed action
  4. 04VerifyResult and receipt
Keep the evidence and the model separate

Measure the order once. Name each revenue answer precisely.

Explore the connected product, then request Moosewave access and updates.