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)

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.

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.


Leave a Reply