channel: "mobile_web". mobile_web is not an AdCP media
channel.
Within one inventory dimension, values are alternatives (OR). Across populated
dimensions, declared values combine (AND). A group with channels: ["ctv", "olv"] and deviceTypes: ["ctv", "mobile"] therefore allows either channel
and either device, while still declaring both a listed channel and a listed
device. If you need pairwise logic such as “CTV on CTV devices OR OLV on mobile
devices”, make two channel groups.
Why groups create media-buy boundaries
One downstream AdCP media buy cannot preserve arbitrary Boolean combinations across channel, property type, device type, and format. Interchange therefore uses this compilation rule:mobile-web-display and ctv, products assigned to
those groups become separate media buys even when they use the same seller and
currency. They remain part of one campaign.
Save pre-built groups
PasschannelGroups to save_campaign on /mcp/v3. A preset is authoring
shorthand. Interchange expands and saves the full definition with the preset
version, so later preset changes do not silently change an existing campaign.
The simple channel presets deliberately make no property, device, or format
assumption. For example,
ctv means the AdCP CTV channel; it does not silently
mean only a physical television device or only a CTV app.
Define your own group
You can provide the same AdCP-aligned dimensions directly:mobile_web into channels; aliases belong in the
group name or preset ID, while the saved inventory definition stays aligned to
AdCP.
Assign products when creating a media buy
Discover products, verify that the seller evidence matches one group, then pass that group’s ID when creating the draft. Withsave_media_buy,
channelGroupId applies to all products in that creation call:
create_media_buys operation directly, put
channelGroupId on each product or proposal selection. Every selection needs a
group ID when its campaign defines channel groups. A media buy records the
group ID and name that created it. Define groups before the campaign creates
its first ungrouped media buy. Once a saved selection or media buy references a
group, keep it immutable; add a new group instead of removing or redefining it.
The batch operation also accepts fully expanded channelGroups in
campaign.create. Preset shorthand is available through V3 save_campaign;
REST clients either send the canonical saved shape inline or create the
campaign first and pass its campaignId.
REST does not accept preset shorthand. Send name, source, and the expanded
inventory snapshot:
sf1: value in the example is illustrative; do not construct or
decode it in a client.
Report by the same group
Use the V3get_delivery tool with the campaign_delivery report and the
channel_group dimension:
filters.channelGroupId. Ungrouped legacy media
buys roll up under a null channel group rather than being guessed from their
names, products, or delivery.
Channel groups answer “which coherent inventory selection did the buyer ask
for?” Campaign targeting answers “who, where, or when should it reach?” Keep
those concepts separate even when both mention a dimension such as device.