Summary
AdCP recognizes affiliate as a valid channel in the media channel taxonomy, but has no pricing model that expresses an affiliate commission rate (percentage of attributed sale value). The closest model, cpa, requires a fixed_price per acquisition — it does not support a percentage-of-revenue rate.
This issue asks the working group to decide whether AdCP should add a revenue_share pricing model, extend cpa, or formally treat affiliate commission as out-of-band.
The Gap
The pricing-model enum currently contains:
cpm, vcpm, cpc, cpcv, cpv, cpp, cpa, flat_rate, time
The affiliate commercial model is:
Advertiser pays a percentage of attributed sale value (e.g. "4% of each purchase attributed to a publisher click")
There is no commission_rate or revenue_share_pct field anywhere in the schema. cpa-option.json requires fixed_price — a fixed dollar amount per event, not a percentage of order value.
This gap was surfaced during a real integration: a campaign brief stated Budget Type: Affiliate / Commission: 4%. There is no AdCP pricing option that maps to this. The workaround was to treat the commission rate as a commercial term between the advertiser and the affiliate network (out-of-band), and select a cpc or cpm pricing option from the seller's product instead.
Why This Is Worth Discussing
affiliate appears as a first-class channel in the AdCP channel taxonomy alongside display, olv, ctv, retail_media, etc. If a seller declares channels: ["affiliate"] on a product, there is currently no pricing model that reflects how affiliate inventory is actually priced. That's an internal consistency gap.
The question is whether AdCP should close it at the protocol layer, or whether affiliate commission is inherently a network-layer commercial term that sits above AdCP — with AdCP only seeing the resulting CPC/CPM media buy.
There's also an open architectural question this group should answer first: who is the seller in an AdCP affiliate relationship?
- If the publisher/placement is the seller,
revenue_share means "publisher earns X% of attributed sale value per placement." This is a clean seller-declared pricing model.
- If the affiliate network is the seller (acting as operator/SSP), the network's payout structure is what
revenue_share would express. This raises a broader question about whether affiliate networks belong in AdCP's seller model at all.
The answer shapes the schema design.
Options
Option A — Add revenue_share pricing model (new enum value + schema)
{
"pricing_model": "revenue_share",
"event_type": "purchase",
"commission_rate": 0.04,
"currency": "USD"
}
Sellers that support affiliate commission expose revenue_share pricing options on their products. Sellers that don't simply omit it. Follows the same discriminated-union pattern as existing pricing models.
Precedent exists: signals pricing already includes percent_of_media (a percentage-of-value model). This would be the equivalent for media buy.
Pro: Protocol-native, consistent with channel taxonomy, enables buyer agents to reason about commission-based inventory.
Con: Requires measurement infrastructure to attribute sale value and calculate payouts — more complex than fixed-price models.
Option B — Extend cpa-option.json with optional commission_rate
Make fixed_price optional and add commission_rate as an alternative, using oneOf:
"oneOf": [
{ "required": ["fixed_price"] },
{ "required": ["commission_rate"] }
]
Pro: Smaller change, reuses existing cpa model identifier.
Con: Breaks the discriminated-union pattern of the pricing model schema set. Validation tooling will struggle. Conflates two commercially distinct models under one identifier. Not recommended.
Option C — Treat as out-of-band (no protocol change)
Affiliate commission rates are negotiated between the advertiser and the affiliate network. AdCP only sees the resulting media buy (CPC/CPM on placements). The commission rate is not protocol-visible.
Pro: No schema change required. Works today.
Con: Leaves affiliate as a channel with no native pricing model, creating an internal consistency gap in the taxonomy. Buyer agents cannot reason about commission-based inventory natively.
Questions for the Working Group
- Should the
affiliate channel have a native AdCP pricing model, or is commission always a network-layer concern?
- Who is the canonical AdCP seller in an affiliate relationship — the publisher, or the affiliate network?
- If Option A: should
revenue_share be scoped to affiliate channel products only, or available broadly (e.g. influencer, sponsored content)?
- If Option A: what measurement provider declares the attributed sale value that governs billing? Does AdCP need to express this, or is it inherited from the network?
Affected Schema Files
enums/pricing-model.json — new enum value revenue_share
pricing-options/revenue-share-option.json — new schema (Option A only)
pricing-options/cpa-option.json — if Option B
docs/reference/media-channel-taxonomy.mdx — affiliate channel section
docs/media-buy/advanced-topics/pricing-models.mdx — new model documentation
Summary
AdCP recognizes
affiliateas a valid channel in the media channel taxonomy, but has no pricing model that expresses an affiliate commission rate (percentage of attributed sale value). The closest model,cpa, requires afixed_priceper acquisition — it does not support a percentage-of-revenue rate.This issue asks the working group to decide whether AdCP should add a
revenue_sharepricing model, extendcpa, or formally treat affiliate commission as out-of-band.The Gap
The
pricing-modelenum currently contains:cpm,vcpm,cpc,cpcv,cpv,cpp,cpa,flat_rate,timeThe affiliate commercial model is:
There is no
commission_rateorrevenue_share_pctfield anywhere in the schema.cpa-option.jsonrequiresfixed_price— a fixed dollar amount per event, not a percentage of order value.This gap was surfaced during a real integration: a campaign brief stated
Budget Type: Affiliate / Commission: 4%. There is no AdCP pricing option that maps to this. The workaround was to treat the commission rate as a commercial term between the advertiser and the affiliate network (out-of-band), and select acpcorcpmpricing option from the seller's product instead.Why This Is Worth Discussing
affiliateappears as a first-class channel in the AdCP channel taxonomy alongsidedisplay,olv,ctv,retail_media, etc. If a seller declareschannels: ["affiliate"]on a product, there is currently no pricing model that reflects how affiliate inventory is actually priced. That's an internal consistency gap.The question is whether AdCP should close it at the protocol layer, or whether affiliate commission is inherently a network-layer commercial term that sits above AdCP — with AdCP only seeing the resulting CPC/CPM media buy.
There's also an open architectural question this group should answer first: who is the seller in an AdCP affiliate relationship?
revenue_sharemeans "publisher earns X% of attributed sale value per placement." This is a clean seller-declared pricing model.revenue_sharewould express. This raises a broader question about whether affiliate networks belong in AdCP's seller model at all.The answer shapes the schema design.
Options
Option A — Add
revenue_sharepricing model (new enum value + schema){ "pricing_model": "revenue_share", "event_type": "purchase", "commission_rate": 0.04, "currency": "USD" }Sellers that support affiliate commission expose
revenue_sharepricing options on their products. Sellers that don't simply omit it. Follows the same discriminated-union pattern as existing pricing models.Precedent exists: signals pricing already includes
percent_of_media(a percentage-of-value model). This would be the equivalent for media buy.Pro: Protocol-native, consistent with channel taxonomy, enables buyer agents to reason about commission-based inventory.
Con: Requires measurement infrastructure to attribute sale value and calculate payouts — more complex than fixed-price models.
Option B — Extend
cpa-option.jsonwith optionalcommission_rateMake
fixed_priceoptional and addcommission_rateas an alternative, usingoneOf:Pro: Smaller change, reuses existing
cpamodel identifier.Con: Breaks the discriminated-union pattern of the pricing model schema set. Validation tooling will struggle. Conflates two commercially distinct models under one identifier. Not recommended.
Option C — Treat as out-of-band (no protocol change)
Affiliate commission rates are negotiated between the advertiser and the affiliate network. AdCP only sees the resulting media buy (CPC/CPM on placements). The commission rate is not protocol-visible.
Pro: No schema change required. Works today.
Con: Leaves
affiliateas a channel with no native pricing model, creating an internal consistency gap in the taxonomy. Buyer agents cannot reason about commission-based inventory natively.Questions for the Working Group
affiliatechannel have a native AdCP pricing model, or is commission always a network-layer concern?revenue_sharebe scoped toaffiliatechannel products only, or available broadly (e.g. influencer, sponsored content)?Affected Schema Files
enums/pricing-model.json— new enum valuerevenue_sharepricing-options/revenue-share-option.json— new schema (Option A only)pricing-options/cpa-option.json— if Option Bdocs/reference/media-channel-taxonomy.mdx— affiliate channel sectiondocs/media-buy/advanced-topics/pricing-models.mdx— new model documentation