Causality APIs 34: Retail Media Incrementality Across Online And Store Sales

Rocket Vector rocket logo on a dark branded background.

A brand buys sponsored placements inside a retailer’s app. The report shows attributed sales, a healthy return number, and plenty of exposed shoppers who later purchased. The uncomfortable question is whether the media created those sales or found customers who were already close to buying.

Share: Retail media attribution is not the same as incrementality. Organic intent, offline sales linkage, audience overlap, and control quality decide how much lift is credible. #Causality #RetailMedia #Incrementality

Synthetic teaching model

This article uses a synthetic retail model. It is not pricing, legal, financial, operational, compliance, or merchandising advice. The sources below justify why some variables belong in the model. The probabilities are invented so the reasoning path is easy to inspect.

The Operating Problem Is Usually Wider Than The Metric

Retail media has real advantages: transaction data, shopper context, closed-loop reporting, and placements near the point of purchase. Those advantages also make measurement delicate. High-intent shoppers, loyalty matching, offline store sales, and overlapping audiences can make attributed performance look cleaner than true incrementality.

Why The Dashboard Can Mislead

The dashboard can mislead because attribution and incrementality answer different questions. Attribution says a purchase happened after an exposure. Incrementality asks what would have happened without that exposure. When the exposed audience already has high organic intent, the difference matters.

Plain-language modeling note

A Bayesian belief network, or BBN, is a graph for asking conditional questions. Each node is a condition, each arrow says one condition informs another, and each probability is explicit. You do not need to know the SDK to read the graph: the SDK code is only there when we need a repeatable action query.

The Question For This Example

This example asks how unclear incrementality risk changes after observing high organic intent, high audience overlap, weak test design, and poor offline linkage, and what changes if the measurement design and sales linkage are improved.

The target outcome is IncrementalityUnclear, which means unclear retail media incrementality in this teaching model.

A Small Model Of The Situation

The model compresses a commerce media program into measurement conditions, sales linkage, audience quality, and overstatement risk. It leaves out budget allocation, bidding mechanics, creative quality, real identity graphs, privacy policy, and cross-retailer duplication.

The graph has 17 nodes:

  • AdExposureQuality: Ad exposure quality (good / poor)
  • OrganicIntentHigh: Organic intent high (low / high)
  • AudienceOverlap: Audience overlap (low / high)
  • LoyaltyMatchQuality: Loyalty match quality (good / poor)
  • OnsitePlacementProminence: Onsite placement prominence (low / high)
  • SponsoredSlotDensity: Sponsored slot density (low / high)
  • IncrementalityTestDesign: Incrementality test design (strong / weak)
  • OfflineSalesLinkage: Offline sales linkage (linked / poorly linked)
  • RetailerDataFreshness: Retailer data freshness (fresh / stale)
  • BrandHaloPotential: Brand halo potential (low / high)
  • CannibalizationRisk: Cannibalization risk (low / high)
  • AttributionWindowFit: Attribution window fit (good / poor)
  • ControlGroupQuality: Control group quality (good / poor)
  • MediaFrequency: Media frequency (low / high)
  • IncrementalStoreSales: Incremental store sales (adequate / low)
  • ROASOverstatementRisk: ROAS overstatement risk (low / high)
  • IncrementalityUnclear: Incrementality unclear (no / yes)

Retail Media Incrementality BBN graph with source-informed retail variables and synthetic probabilities.

What Is Sourced And What Is Synthetic

The IAB incrementality guidelines support treating credible counterfactuals, bias control, and signal separation as measurement requirements. IAB/MRC retail media guidelines support the retail-media measurement context. McKinsey’s commerce media work supports the growth and complexity of media networks built on transaction and loyalty data.

Incrementality methods
IAB’s commerce media incrementality guidance motivates explicit nodes for control quality, counterfactual design, and overstatement risk.
Retail media measurement
IAB/MRC retail media guidance supports including audience, delivery, attribution, incrementality, reporting, and transparency concepts.
Commerce media growth
McKinsey describes commerce media networks using transaction, loyalty, online, and offline channels, which motivates the linkage and halo nodes.

Boundary of the evidence

The sources support the general mechanisms in the graph. They do not estimate this article’s node states, thresholds, or conditional probability values. Those are synthetic teaching values.

The Query The Graph Cannot Show By Itself

The visual graph is the best way to inspect the structure. The code-backed query is there for a narrower reason: we want to separate what is learned by observing a messy retail case from what changes if one condition is set differently.

Using the Darkstar Python SDK, a subscribed SDK user can load the same BBN JSON, ask for the target probability after evidence is entered, then run the action query by setting a node before querying again. The download includes this as illustrative SDK code, while the standalone query_example.py reproduces the article numbers without shipping the SDK.

import json

from darkstar import DiscreteModel

TARGET = "IncrementalityUnclear"
OBSERVED_EVIDENCE = {
    "OrganicIntentHigh": "high",
    "AudienceOverlap": "high",
    "IncrementalityTestDesign": "weak",
    "OfflineSalesLinkage": "poorly_linked"
}
INTERVENTION_CONTEXT = {
    "OrganicIntentHigh": "high",
    "AudienceOverlap": "high"
}
INTERVENTION = {
    "IncrementalityTestDesign": "strong",
    "ControlGroupQuality": "good",
    "OfflineSalesLinkage": "linked"
}


def probability_after_observing(model, evidence):
    query = {"nodes": [TARGET], "evidence": evidence}
    result = json.loads(model.pquery(json.dumps(query)))
    return result[TARGET]["yes"]


def probability_after_setting(model, setting, evidence):
    changed_model = model.intervene(json.dumps(setting))
    return probability_after_observing(changed_model, evidence)


with DiscreteModel(model_json) as model:
    observed = probability_after_observing(model, OBSERVED_EVIDENCE)
    acted = probability_after_setting(model, INTERVENTION, INTERVENTION_CONTEXT)

That is the article’s main modeling distinction. Observing a pattern is not the same as setting one part of the system differently.

The standalone query code gives this synthetic result:

Baseline unclear retail media incrementality: 26.5%
Observed scenario (high intent with weak measurement design): 46.4%
Action scenario (credible design with linked offline sales): 19.0%
Same context with the action left unfavorable: 59.4%
Synthetic reduction versus the observed scenario: 27.4 percentage points

What We Learn By Observing The Situation

The observed scenario sets:

  • Organic intent high = high
  • Audience overlap = high
  • Incrementality test design = weak
  • Offline sales linkage = poorly linked

In the synthetic model, the observed case raises unclear-incrementality risk. High intent and audience overlap create overstatement pressure, while weak test design and poor offline linkage make the sales story harder to trust.

Reasoning comparison for Retail Media Incrementality BBN.

What Changes If We Set One Condition Differently

The action scenario sets:

  • Incrementality test design = strong
  • Control group quality = good
  • Offline sales linkage = linked

The action query strengthens the incrementality design, improves control quality, and links offline sales. That does not guarantee the campaign was incremental. It reduces the model’s uncertainty because the measurement path now has a more credible comparison.

What This Example Cannot Prove

This model cannot certify a retail media network, decide budget allocation, or estimate real iROAS. It is a teaching example for separating attributed sales from incremental business impact.

Try this in the shared model

Open the companion model, change one upstream condition at a time, and watch the target probability move. Start with the observed scenario above, then reset one condition that looks actionable. The point is to compare stories, not to treat the toy probabilities as a forecast.

Try The Model

Open the companion Darkstar model: Open Retail Media Incrementality BBN

In the shared model, keep IncrementalityTestDesign weak but improve AdExposureQuality. Then reverse those settings. The comparison shows why better media does not automatically solve a weak measurement design.

Download the teaching package: Retail Media Incrementality BBN ZIP

The ZIP includes only synthetic model files and reader code. It excludes campaign logs, loyalty data, advertiser contracts, network reporting data, the Darkstar Python SDK, and chart-generation code.

Sources

  1. IAB: Guidelines for Incremental Measurement in Commerce Media
  2. IAB/MRC: Retail Media Measurement Guidelines
  3. McKinsey: The Evolution of Commerce Media

Leave a Reply

Discover more from Blogs

Subscribe now to keep reading and get access to the full archive.

Continue reading