4 Attribution and Campaign Measurement

Attribution assigns conversion credit to observed touchpoints. Incrementality estimates whether marketing caused additional outcomes. Attribution is useful for reporting and workflow, but an attribution rule alone is not a causal design.

4.1 Common rules

  • First touch: all credit goes to the earliest observed touchpoint.
  • Last touch: all credit goes to the latest eligible touchpoint.
  • Linear: credit is divided equally across observed touchpoints.
  • Time decay or position based: rules assign more credit to selected positions or recent interactions.
  • Data driven: a platform estimates credit from patterns in its available conversion-path data.

The rule changes reported channel performance without changing customer behavior. Google Ads currently supports last-click and data-driven attribution; several older rule-based models are no longer supported. Check the current Google Ads attribution documentation before describing platform options.

4.2 A transparent accounting example

The synthetic paths below show how rules create different totals.

paths <- data.frame(
  path = c("search > email", "social > search > direct", "video > search"),
  revenue = c(120, 210, 150)
)

allocate_credit <- function(path, value, rule = c("first", "last", "linear")) {
  rule <- match.arg(rule)
  channels <- trimws(strsplit(path, ">", fixed = TRUE)[[1]])
  credit <- switch(
    rule,
    first = c(value, rep(0, length(channels) - 1)),
    last = c(rep(0, length(channels) - 1), value),
    linear = rep(value / length(channels), length(channels))
  )
  data.frame(channel = channels, credit = credit)
}

summarize_rule <- function(rule) {
  allocated <- do.call(
    rbind,
    Map(allocate_credit, paths$path, paths$revenue, MoreArgs = list(rule = rule))
  )
  aggregate(credit ~ channel, allocated, sum)
}

summarize_rule("first")
##   channel credit
## 1  direct      0
## 2   email      0
## 3  search    120
## 4  social    210
## 5   video    150
summarize_rule("last")
##   channel credit
## 1  direct    210
## 2   email    120
## 3  search    150
## 4  social      0
## 5   video      0
summarize_rule("linear")
##   channel credit
## 1  direct     70
## 2   email     60
## 3  search    205
## 4  social     70
## 5   video     75

The result is an accounting allocation, not an estimate of what revenue would disappear if a channel were removed.

4.3 Why observed paths mislead

Common threats include:

  • Selection: high-intent customers are more likely to search and convert.
  • Missing touchpoints: offline media, unlinked devices, and blocked tracking are absent.
  • Identity errors: several people may share devices or identifiers.
  • Window choice: a longer lookback creates more credited interactions.
  • Platform boundaries: each platform may claim the same conversion.
  • Post-treatment conditioning: analyzing only clickers selects on behavior affected by the ad.

4.4 Measurement portfolio

Use complementary methods:

Need Better starting point
Operational channel reporting A documented attribution rule
Causal campaign lift Randomized holdout or credible quasi-experiment
Cross-channel aggregate contribution Calibrated marketing mix model
Near-term creative optimization Randomized platform experiment
Long-run budget planning Experiments plus MMM and business constraints

Triangulation does not mean averaging incompatible estimates. Reconcile the population, outcome, time horizon, and assumptions behind each method.

4.5 Measurement specification

Before reporting attributed performance, document:

  • conversion event and value;
  • eligible channels and touchpoints;
  • attribution and conversion windows;
  • view-through versus click-through treatment;
  • cross-device and offline matching;
  • duplicate handling and platform reconciliation; and
  • whether values are gross revenue, net revenue, or margin.

4.6 Interview checkpoints

  • Why can last-click attribution overvalue branded search?
  • What changes when an attribution window increases from 7 to 30 days?
  • When would you use a holdout test instead of multi-touch attribution?
  • How would you reconcile platform-reported conversions with finance totals?