Overview
A dimension is a Buyer Account’s named organizing axis, such as Market, Quarter, or Brand. A label is one value from that dimension attached to an advertiser or campaign. Dimensions make labels consistent across those objects: the same value means the same thing everywhere in the account. Every Buyer Account also has the built-intags dimension. It is open, so you
can apply a new tag value without creating it first. There is no separate tag
object or tag tool.
Dimensions organize work; they do not grant authority, select inventory, change
targeting, or cross an AdCP boundary.
Dimensions do not have their own screen. They appear as object labels, search
filters, and buyer campaign-delivery report axes; setup happens in your flow
when you first organize work by an axis.
Dimension fields
Create and manage dimensions
On the V3 MCP endpoint, usesave_dimension to create a dimension with a
unique key, display name, value mode, applicable object kinds, and an
idempotency key. After creation, use its returned id for updates; key is
immutable. The same tool can add or rename values, merge a value into another
value, or retire a value or the whole dimension.
mergeInto must name an existing active target value. Merging moves existing
labels to that target but does not retire the source: retire a merged source
explicitly when it should no longer be available.
There can be at most 20 dimensions in a Buyer Account, 200 values in one
dimension, and 50 labels on one advertiser or campaign. The built-in tags
dimension counts toward the account’s dimension limit and always remains open.
Apply and find labels
Passlabels to save_advertiser or save_campaign:
labels leaves labels
unchanged. get and search return the current labels as the same
{ "dimensionKey": ["value"] } shape.
Use search with kind: "advertiser" or kind: "campaign" and
filter.labels. The filter is AND across dimension keys and OR within a value
array. Use the literal "unlabeled" to find objects with no active value for
one dimension:
search({ "kind": "dimension" }), optionally using
filter.appliesTo, then read one with get({ "kind": "dimension", "id": "…" }).
You cannot narrow appliesTo while the dimension still has labels on an object
kind being removed; clear or move those labels first.
Group delivery by a label
For V3 buyer campaign delivery, pass a label axis as"labels.<dimensionKey>" in get_delivery.dimensions:
"Unlabeled" bucket. Because
labels are resolved when you query the report, a later relabeling reorganizes
historical rows too. An unknown, retired, or inapplicable key is rejected with
the account’s available dimensions.
Related
Advertiser
Advertiser ownership and fields
Campaign
Campaign ownership and fields