Problem
frequency_cap in AdCP is a targeting overlay — a suppression tool that says "stop showing this user after N impressions." That's useful, but it's not the same as reach optimization.
Reach-optimized campaigns have a different objective: maximize the number of unique users/households exposed at a meaningful frequency level. Frequency isn't just a ceiling to enforce — it's a signal the optimizer uses to decide whether to bid on a given impression at all ("this household has already seen this ad 3 times, it has less reach value now, lower the bid").
This distinction matters significantly for:
- CTV campaigns — household reach is often the primary KPI; every major DSP (DV360, TTD, Amazon DSP, Viant) has a first-class "maximize reach" mode for CTV
- Brand awareness campaigns — reach at 3+ frequency is a standard media planning metric
- Reach & frequency buying — many platforms offer guaranteed reach/frequency products that can't be expressed as a suppression cap
Current state
{
"targeting_overlay": {
"frequency_cap": { "max_impressions": 5, "per": "user", "window": "7d" }
}
}
This suppresses delivery after 5 impressions but doesn't tell the seller to optimize for unique reach — it just caps frequency.
Proposal
Add reach to the metric optimization goal kinds, with reach_unit and an optional target_frequency that frames frequency as an optimization parameter rather than a hard cap:
{
"kind": "metric",
"metric": "reach",
"reach_unit": "households",
"target_frequency": { "min": 2, "max": 4 }
}
target_frequency here means: the seller should treat impressions toward users/households already within the target frequency band as lower-value, and impressions toward unreach users as higher-value. It's an optimization signal, not a suppression rule. A hard cap can still be layered via targeting_overlay.frequency_cap if the buyer also wants a ceiling.
The product declares:
{
"metric_optimization": {
"supported_metrics": ["reach", "views", ...],
"supported_reach_units": ["individuals", "households", "devices"]
}
}
Why not just use frequency_cap + maximize impressions?
Maximizing impressions with a frequency cap doesn't optimize for reach — it optimizes for total delivery volume while suppressing excess. A reach optimizer actively de-prioritizes re-reaching known users and shifts budget toward fresh inventory. These produce measurably different campaign outcomes.
Related
Problem
frequency_capin AdCP is a targeting overlay — a suppression tool that says "stop showing this user after N impressions." That's useful, but it's not the same as reach optimization.Reach-optimized campaigns have a different objective: maximize the number of unique users/households exposed at a meaningful frequency level. Frequency isn't just a ceiling to enforce — it's a signal the optimizer uses to decide whether to bid on a given impression at all ("this household has already seen this ad 3 times, it has less reach value now, lower the bid").
This distinction matters significantly for:
Current state
{ "targeting_overlay": { "frequency_cap": { "max_impressions": 5, "per": "user", "window": "7d" } } }This suppresses delivery after 5 impressions but doesn't tell the seller to optimize for unique reach — it just caps frequency.
Proposal
Add
reachto the metric optimization goal kinds, withreach_unitand an optionaltarget_frequencythat frames frequency as an optimization parameter rather than a hard cap:{ "kind": "metric", "metric": "reach", "reach_unit": "households", "target_frequency": { "min": 2, "max": 4 } }target_frequencyhere means: the seller should treat impressions toward users/households already within the target frequency band as lower-value, and impressions toward unreach users as higher-value. It's an optimization signal, not a suppression rule. A hard cap can still be layered viatargeting_overlay.frequency_capif the buyer also wants a ceiling.The product declares:
{ "metric_optimization": { "supported_metrics": ["reach", "views", ...], "supported_reach_units": ["individuals", "households", "devices"] } }Why not just use
frequency_cap+ maximize impressions?Maximizing impressions with a frequency cap doesn't optimize for reach — it optimizes for total delivery volume while suppressing excess. A reach optimizer actively de-prioritizes re-reaching known users and shifts budget toward fresh inventory. These produce measurably different campaign outcomes.
Related
ReachUnitalready exists in forecasts and delivery metrics — this connects it to the optimization layerreachalready appears as a forecastable metric; sellers who can forecast reach can likely optimize toward it