RetailNorm isn't a formula. It's a versioned, continuously calibrated measurement infrastructure that normalizes attribution across retail media networks — deterministically, auditably, and under strict governance.
When a media planner runs campaigns across Amazon Ads, Walmart Connect, and Criteo simultaneously, they get three separate performance reports. Each report claims a different ROAS. But those numbers cannot be compared side by side — because they were measured differently.
The differences aren't minor rounding errors. They're structural. Each platform uses a different combination of attribution window (how many days after a click count as a conversion), attribution model (which touchpoint gets the credit), and conversion basis (clicks only, or clicks plus views). These dimensions interact multiplicatively — and they shift over time as platforms quietly update their methodology.
On the surface, Walmart looks like the clear winner at 6.8×. But its 30-day window captures conversions that happened weeks after the ad — many of which would have happened organically. And it includes view-through conversions that the other platforms don't count at all.
The question isn't "which platform reports the highest ROAS." It's "which platform actually drives the most revenue per dollar, when measured on the same terms?"
When measured on the same terms, the ranking changes. Walmart's advantage was partly measurement artifact. Criteo was systematically penalized by its shorter window and first-click model. The real performance picture only becomes visible after correction.
RetailNorm's normalization operates across multiple correction dimensions. Each dimension targets a specific structural difference in how a platform measures conversions. The corrections are applied as independent, composable layers — each versioned, each auditable, each calibrated to the specific platform and product vertical.
The entire correction engine runs server-side behind an authenticated API. No correction logic, calibration parameters, or proprietary factors are ever transmitted to the browser. The client application sends raw CSV data to the engine, receives normalized results, and renders the output — but never has access to the correction methodology itself. This architectural isolation protects proprietary research while ensuring clients benefit from continuously updated calibration.
The architecture is deliberately not a single equation. It's a correction framework with interdependent calibration profiles that behave differently depending on the platform, the product category, the reporting period, and the engine version in use. The interactions between layers — how a window correction compounds with a model conversion in a specific vertical — are where the complexity lives, and where the accuracy comes from.
Layers L2 and L3 contain the core correction logic — proprietary calibration profiles built from aggregated campaign performance data, published attribution research, and platform methodology documentation. These profiles are the product of sustained research, not one-time calculation. They encode vertical-level behavioral patterns that can't be derived from a single client's data alone.
The distinction matters. A static multiplier might get you within range. A continuously calibrated, vertical-aware, version-controlled correction system gets you to a number you can defend in a client review — and reproduce six months later when someone asks how you arrived at it.
A naive approach to normalization would treat each correction as a fixed number — a static multiplier applied uniformly. That works as a rough approximation. It doesn't survive scrutiny from a technical buyer, and it doesn't hold accuracy across verticals or over time.
RetailNorm's calibration framework operates on three axes:
Each retail media network has a unique attribution methodology profile that encodes its specific window length, attribution model, conversion basis, and view-through inclusion rules. These profiles are built from platform documentation, API behavior analysis, and empirical validation against known benchmarks.
Profiles are not interchangeable. The structural correction for a 30-day last-click platform differs fundamentally from a 7-day first-click platform — not just in magnitude, but in the mathematical behavior of the correction itself.
Attribution behavior varies significantly by product category. A $5 impulse purchase and a $500 electronics product have fundamentally different conversion patterns — different decision timelines, different path lengths, different sensitivity to touchpoint position. A window correction that's accurate for grocery will systematically over- or under-correct for consumer electronics.
The engine maintains vertical-specific behavioral models calibrated from aggregated, anonymized campaign data across multiple agencies and categories. These models capture longitudinal conversion patterns that are invisible in any single client's data.
Platforms change their attribution methodology over time — sometimes announced, sometimes not. Correction profiles that were accurate six months ago may introduce systematic error today. The engine tracks these changes and maintains temporal calibration, ensuring corrections applied to Q1 data use Q1-era profiles, not current ones.
This is the dimension most internal solutions fail to maintain. Getting the initial correction right is achievable. Keeping it right across methodology changes, seasonal effects, and platform-specific reporting updates requires sustained operational investment.
Retail media networks routinely adjust their attribution methodology. Sometimes with announcements. Sometimes with subtle changes to API output behavior, default window settings, or view-through inclusion rules that only surface when you're actively monitoring for them.
This creates a compounding problem for anyone relying on static correction factors. An accurate correction from six months ago may introduce systematic error today — not because the math was wrong, but because the platform moved under it.
| Drift type | Example | Impact if undetected |
|---|---|---|
| Window adjustment | Platform changes default window from 30 to 14 days | Correction overcounts by applying a reduction to already-shortened data |
| View-through rule change | Platform begins including post-view conversions in click reports | Normalized ROAS inflated due to uncorrected view-through inclusion |
| Model redefinition | Platform shifts from strict last-click to weighted multi-touch | Model conversion layer applies wrong correction direction |
| Reporting format change | Column names, date formats, or metric definitions change silently | Parsing errors or misidentified fields produce incorrect normalization |
RetailNorm operates a continuous monitoring layer across all supported platforms. We track attribution documentation changes, API behavior changes, reporting format changes, and anomalous statistical patterns in normalized output that could indicate undocumented methodology shifts.
When drift is detected, the affected calibration profiles are flagged, reviewed, and — if necessary — recalibrated. Reports generated during the drift window can be retroactively re-normalized once the updated profile is available, maintaining data consistency across time.
No correction system produces exact figures. The behavioral models that inform vertical calibration carry inherent estimation ranges. Platform methodology documentation can be ambiguous. Conversion patterns vary between individual campaigns within the same vertical.
Rather than pretending our normalized figures are precise to the decimal, we propagate uncertainty through every correction layer and produce confidence intervals alongside every normalized ROAS figure. This quantification is structurally separated from the correction logic — it observes the correction process, it doesn't influence it.
Why this changes decision-making. A normalized ROAS of 4.2× with high confidence is more actionable than 4.8× with medium confidence. When two platforms show similar normalized performance but different confidence levels, that asymmetry should influence allocation decisions — and it does, automatically, in the budget optimization layer.
This is also the mechanism that prevents over-reliance on corrections applied to platforms we have less calibration depth on. New platforms start with wider confidence intervals that narrow as calibration data accumulates. The system is honest about what it knows and what it's estimating.
The normalization engine is version-controlled at multiple levels: the overall engine version, individual platform calibration profiles, vertical behavioral models, and the correction layer interaction parameters. When a report is generated, it is locked to the specific versions in use at that moment.
This means three things for agencies:
The traditional workflow ends at reporting. The planner presents ROAS numbers, the client asks where to increase budget, and the answer is usually based on intuition — or whichever platform reported the highest raw number.
With normalized data and confidence metadata, allocation becomes mathematical. Given a fixed total budget, a set of normalized performance metrics with confidence intervals, and vertical-specific diminishing return curves, the engine recommends the distribution that maximizes expected total return — risk-adjusted for correction uncertainty.
The optimizer estimates marginal returns per platform. An additional $1,000 on a platform approaching saturation yields less than the same $1,000 on an underinvested one. Diminishing return curves are derived from normalized historical data — meaning they reflect actual performance patterns, not raw platform-inflated metrics.
Confidence scores feed directly into the optimizer. A platform with high normalized ROAS but low confidence receives a risk-adjusted allocation — the system accounts for the possibility that the correction is less precise, preventing over-commitment to uncertain metrics.
The output is a concrete, defensible recommendation backed by normalized data, confidence intervals, marginal return modeling, and engine version documentation. The kind of recommendation that survives a CFO's review because you can trace exactly where the number came from.
The correction engine is deterministic mathematics. No machine learning models influence the normalized figures. No neural network decides correction weights. No generative model hallucinating output that looks like a ROAS number.
AI enters the pipeline at a single, well-defined point: after normalization is complete. It reads normalized data. It generates human-readable narratives for client reports. It surfaces insights from patterns in the normalized output. It assists with budget recommendation presentation.
The AI layer has zero write access to the correction engine. It cannot modify calibration profiles, adjustment parameters, or confidence scores. It operates in a sandboxed environment that treats the normalized figures as immutable inputs.
We've spoken to dozens of agencies and holding companies that have attempted internal normalization solutions. The pattern is consistent: a smart analyst builds something in Excel or Python that works well for a few months, then degrades as the underlying conditions change. The reasons are structural, not talent-related.
The core issue isn't getting the first set of corrections right — that's a well-defined problem. The issue is the sustained operational cost of keeping corrections accurate across:
Platform methodology changes — detecting them, understanding their impact, recalibrating profiles. Vertical expansion — each new product category requires its own behavioral calibration, not a generic default. New network support — each retail media network has a unique attribution architecture that requires dedicated research and validation. Temporal consistency — maintaining version-controlled profiles so historical reports remain valid and comparable.
This maintenance cost scales linearly with the number of platforms, verticals, and clients — and it's ongoing. RetailNorm absorbs this cost centrally and distributes the benefit across all customers. For an individual agency, the math doesn't work: the operational investment to maintain accurate normalization across 4+ platforms and multiple verticals exceeds the cost of the tool by an order of magnitude.
How are calibration profiles validated?
Each profile goes through a multi-stage validation process: initial calibration against published platform methodology and attribution research, empirical validation against known benchmarks and controlled test data, and ongoing monitoring for drift. Profiles only reach production status after meeting documented accuracy thresholds. The methodology is proprietary, but the governance process is rigorous and documented.
Why 14-day last-click as the baseline?
It captures the majority of ad-influenced conversions while filtering most organic noise. It's Amazon's default — meaning the world's largest RMN requires minimal structural correction, reducing overall system error. It's also the most commonly referenced standard in retail media RFPs, making it the natural lingua franca for cross-platform comparison.
Can I use a different baseline?
Not currently. We're deliberately opinionated about this. If every agency picks their own standard, you recreate the fragmentation problem at the agency level. One baseline, one truth, comparable output across every client and every report. That constraint is a feature, not a limitation.
What platforms are supported?
Currently in production: Amazon Ads, Walmart Connect, Criteo, Tesco / dunnhumby, Instacart Ads, and Carrefour / Unlimitail. Additional networks are in active calibration. Each new platform requires dedicated research, profile building, empirical validation, and accuracy testing — a process measured in weeks, not days. We don't launch a platform profile until it meets the same accuracy standards as our existing ones.
What happens when a platform changes its attribution model?
We maintain a continuous monitoring layer that tracks platform documentation, API behavior, and statistical anomalies in normalized output. When drift is detected, the affected profiles enter recalibration. Historical data can be retroactively re-normalized using the corrected profiles, and the version changelog documents exactly what changed and when.
Is the correction logic exposed to the browser?
No. The entire normalization engine runs server-side behind an authenticated API. The browser sends CSV data and receives normalized results — but never has access to correction parameters, calibration profiles, or proprietary factors. This is a deliberate architectural decision: it protects the accumulated research investment while ensuring clients always run against the latest calibrated version of the engine.
Is the normalization methodology published?
The architectural approach, correction dimensions, and governance framework are described here openly. The specific calibration profiles — the behavioral models, correction parameters, vertical calibration data, and their interactions — are proprietary. They represent sustained research investment and accumulated operational knowledge that cannot be derived from first principles or platform documentation alone.
How is this different from building normalization internally?
The initial build is achievable — a capable analyst can estimate reasonable correction factors for a few platforms. The challenge is maintaining accuracy across platform methodology changes, new verticals, new networks, and temporal drift. That ongoing operation — monitoring, recalibrating, validating, version-controlling — scales linearly with complexity and is what internal solutions consistently fail to sustain. RetailNorm centralizes that operational cost and distributes the benefit.
Can I trace how a specific number was calculated?
Yes. Every normalized figure is linked to the engine version, platform calibration profile version, and vertical model version used at the time of generation. You can identify which correction layers were applied, their version identifiers, and the confidence interval produced by the uncertainty quantification layer. This is designed for the level of scrutiny you'd expect in financial reporting.
Upload a CSV from any supported platform and get a normalized report — free, no registration required.