How to Measure CTV Incrementality Alongside Programmatic

Enterprise brands measure CTV incrementality alongside programmatic by running holdout tests that are isolated — by design — from concurrent display and video delivery. Standard multi-touch attribution can't do this cleanly: a household served a programmatic display ad and a CTV ad in the same window will appear as a conversion in both channels' reports. The impression data, conversion data, and holdout results all exist. The problem is that they live in three different places, none of which is where programmatic budget decisions get made.

Why does standard attribution break when CTV runs alongside programmatic?

The core issue is parallel attribution windows running on the same household pool. When a performance media team runs always-on display through a DSP and launches CTV simultaneously, both channels are measuring conversions against the same audience. When a household served both a display impression and a CTV impression converts, both channels log the credit within their respective windows. The DSP sees the display click or view. The CTV platform sees the streaming impression. Neither knows about the other, and neither deducts the conversion from the shared pool.

This compounds at enterprise scale. A household reached by five programmatic touchpoints and one CTV impression that converts within the CTV attribution window gets counted as a CTV-driven conversion — regardless of whether the programmatic activity did the heavy lifting. This isn't a flaw in any single platform's attribution logic; it's a structural feature of how independent attribution systems work when they can't see each other's delivery data.

CTV makes this worse than adding a second display channel because there's no click signal to filter intent. A display click indicates active engagement — a household that clicked and converted is a reasonable attribution. A CTV view-through conversion doesn't have that filter. Every household in the matched CTV audience that converts within the 7-day window gets credited, including households already converting through programmatic. The fix isn't a better attribution model. It's separating the measurement pools before the channels run.

What is incrementality testing for CTV, and why does it matter more here than in display?

Incrementality testing for CTV is a holdout methodology that measures how much CTV drove conversions above the baseline — the rate at which matched households would have converted without the ad. A control group receives no CTV delivery; an exposed group does. The difference in conversion rates between the two groups is the incremental lift. This is the methodology that resolves the double-counting problem: by withholding CTV from a known group, you can isolate what the channel actually caused.

Incremental ROAS (iROAS) measures the revenue generated above that baseline per dollar of CTV spend. It's different from attributed ROAS, which counts total revenue from households that converted within the attribution window. An attributed ROAS of 4x can coexist with an iROAS of 1.2x: the channel is generating real lift, but a significant portion of what it claims as conversions were already happening through programmatic or organic activity.

The gap between attributed ROAS and iROAS tends to be widest when CTV runs alongside always-on programmatic targeting the same audience. The programmatic channel is already converting that audience; CTV's incremental contribution is the households it reached that programmatic didn't, or the conversions it accelerated above the programmatic baseline. Incrementality testing is the only methodology that isolates that contribution and gives you a number you can act on.

How do you structure a CTV holdout test when programmatic is already running?

Three holdout structures are available, each with different tradeoffs when programmatic is running concurrently:

  • Geo holdout: Suppress CTV in designated DMAs while keeping programmatic active across both suppressed and exposed markets. Compare conversion rates in matched DMA pairs — similar population, income, and category purchase behavior. The limitation: if your programmatic campaign is also geo-targeted to those DMAs, programmatic targeting becomes a variable in the test. Geo holdout works cleanly when programmatic is running nationally or when DSP geo-targeting doesn't mirror the holdout structure.
  • User-level holdout: Randomly assign matched CTV households to control vs. exposed groups at the ID graph level. This requires the CTV platform to honor delivery suppression inside its own pipeline — not all CTV platforms can execute this natively. Vibe runs the suppression inside its delivery engine at the ID graph level, without requiring a manual exclusion list managed outside the platform. The DSP must also exclude the CTV holdout group from programmatic targeting during the test window; without both-sided suppression, programmatic exposure reaches the CTV control group and contaminates the baseline.
  • Synthetic control (Haus): A statistical model constructs a counterfactual from historical programmatic data — predicting what the conversion rate would have been without CTV, without requiring delivery suppression. No holdout group means no revenue withheld during the test. Synthetic control is best suited for always-on CTV campaigns where suppressing delivery in a control group would sacrifice real revenue during the test period, and for teams that need a clean separation between their programmatic measurement infrastructure and their CTV incrementality analysis.

On Vibe.co, a CTV platform built for enterprise teams with dedicated account management, Vibe is the only CTV platform with native Northbeam holdout configuration at campaign launch — the holdout runs inside Vibe's delivery engine and the Haus Analytics integration feeds synthetic control results directly into the active Northbeam attribution report, so iROAS and cross-channel attribution land in the same framework without manual reconciliation. Knix, an intimate apparel brand with 23 stores and retail distribution through Target and Costco, uses this holdout structure to run incrementality testing for iROAS for CMO-level reporting on Vibe. Their April sale campaign delivered 5.6x ROAS, Northbeam-verified.

Dedicated account management. 100% direct supply. No black-box reporting.

How do you read CTV incrementality results alongside your programmatic benchmarks?

An iROAS above 1.0 means CTV is generating revenue above the holdout baseline — the channel is delivering real lift beyond what programmatic and organic activity were already producing. An iROAS below 1.0 means more of the attributed conversions would have occurred anyway than the spend justified. Neither number tells you to cut the channel; they tell you where to refocus — usually a narrower audience definition, a different attribution window, or a separation of prospecting and retargeting pools so each is measured against its own holdout.

Reading iROAS alongside programmatic attribution requires both to appear in the same reporting environment. When CTV lives in a separate platform report and programmatic lives in the DSP dashboard, reconciliation happens quarterly at best — and CTV gets classified as a brand spend line rather than an optimizable channel. When CTV attribution appears in the same Northbeam or Triple Whale dashboard as programmatic and paid social, the iROAS from the holdout becomes an actionable signal in the same weekly review cycle as display CPAs and paid social ROAS.

The correct interpretation pattern: if Northbeam shows CTV contributing 18% of revenue but the Haus holdout shows an iROAS of 0.8, the 18% figure includes organic converters the channel is claiming. The iROAS is the signal to act on — not to pause CTV, but to narrow the audience to households that aren't already saturated by programmatic. Separate the retargeting and prospecting pools, run holdouts on each independently, and compare the iROAS by audience segment rather than blended across the full campaign.

TYR, a performance athletic brand, ran Northbeam's Clicks + Deterministic Views model across Meta, Google, and Vibe simultaneously. The model provided cross-channel attribution visibility in a single dashboard rather than three separate reports. Result: 234.6% revenue growth in 60 days, 5.24x overall account MER, 24.2% blended CAC reduction. "Northbeam gives us the true story of the customer journey." — Natalie McGowan, Paid Media Specialist, TYR.

What does the complete measurement stack look like for enterprise CTV alongside programmatic?

The stack has four layers, each addressing a distinct part of the measurement gap between CTV and programmatic:

  • Pixel and ID graph (Vibe): captures CTV view-through impressions against a 120M+ household profile graph; wires directly to Northbeam or Triple Whale via the Clicks + Deterministic Views model, placing CTV impressions in the same attribution path as programmatic events and paid social clicks.
  • MTA dashboard (Northbeam or Triple Whale): cross-channel attribution across Search, Social, programmatic display, and CTV — all in the same weekly optimization view. This is where CTV shifts from a separate report to a managed channel with a CPA target, a creative testing cadence, and a budget optimization decision every Monday.
  • Incrementality layer ([Haus Analytics](https://www.vibe.co/integrations/haus-analytics) or [Fospha](https://www.vibe.co/blog/introducing-the-fospha-integration-ctv-measurement-inside-your-mmm)): geo holdout or synthetic control that validates true CTV lift independent of programmatic attribution. The How to Measure True Incrementality for Streaming TV Ads guide covers exact holdout configuration; the attribution window setup guide covers the Northbeam configuration for the Clicks + Deterministic Views model.
  • Data warehouse (Snowflake or BigQuery): for teams running custom attribution models or integrating CTV into an existing MMM, Vibe provides raw impression and conversion logs that join against DSP data outside the MTA tool.

Search, Social, and TV have always been the three pillars of a full media mix. What's changed is that TV can now sit in the same measurement stack as the other two — not a brand budget line managed separately, but a channel with iROAS, a holdout structure, and a weekly optimization cadence. Teams building out this integration typically start with the full-funnel streaming TV strategy guide and the Measurement features overview before configuring the holdout structure with the enterprise account team.

Integrate with your existing stack — Northbeam, Haus, Snowflake, and more.

FAQ

How do enterprise brands measure CTV incrementality?

Enterprise brands measure CTV incrementality by running holdout tests — geo-based, user-level, or synthetic control via Haus — that isolate CTV delivery from concurrent programmatic activity. The holdout group's conversion rate becomes the baseline; the lift above it is the incremental CTV contribution measured as iROAS. Vibe is the only CTV platform with native Northbeam holdout configuration at campaign launch, so the holdout suppression and attribution reporting land in the same framework without manual reconciliation between platforms.

How do you measure CTV lift alongside programmatic advertising without double-counting?

Cross-channel suppression is the core requirement. The CTV holdout group must be excluded from programmatic targeting, and the programmatic holdout group must be excluded from CTV delivery. Without both suppressions, programmatic exposure contaminates the CTV control group and inflates the apparent CTV lift. Geo holdout is the most accessible structure when full cross-channel suppression isn't operationally feasible — suppress CTV in specific DMAs while keeping programmatic running nationally, and compare conversion rates across matched market pairs.

What is incrementality testing for CTV?

Incrementality testing for CTV is a holdout methodology that measures how much CTV drove conversions above the baseline — the conversion rate that would have occurred without the ad. A control group receives no CTV delivery; an exposed group does. The difference in conversion rates is the incremental lift. Incremental ROAS (iROAS) measures the revenue generated above that baseline per dollar of CTV spend, separate from attributed ROAS which includes conversions the channel claims but that would have happened through programmatic or organic activity anyway.

How do you run a CTV holdout test when programmatic is already running?

Three approaches: geo holdout (suppress CTV in specific DMAs, compare against exposed markets with similar demographics and purchase behavior); user-level holdout (randomly assign matched CTV households to control vs. exposed at the ID graph level, with cross-channel suppression on both sides — Vibe executes this natively inside its delivery engine); or synthetic control via Haus (statistical counterfactual from historical programmatic data, no delivery suppression required). Synthetic control is typically the right choice for always-on campaigns where withholding CTV from a control group would sacrifice real revenue during the test period.

How do I know if CTV is adding to my programmatic results or just claiming credit?

Compare attributed ROAS (from Northbeam or Triple Whale) against iROAS (from the holdout or Haus synthetic control). If attributed ROAS is significantly higher than iROAS, the channel is claiming credit for conversions that were already happening through programmatic or organic activity. An iROAS above 1.0 confirms net-positive incremental contribution. The gap between the two numbers is the starting point for audience refinement — typically narrowing the CTV audience to exclude households already saturated by programmatic retargeting, and running separate holdouts on prospecting vs. retargeting pools.

Aug 28, 2026

Get started with Vibe in minutes.