Migrating geo targeting
AdCP 3.0 replaces implicit US-centric geo targeting with named systems that support global markets. Metro targeting values are grouped by system, and postal targeting values are grouped by country plus the country-local postal system.What changed
Fields that didn’t change:
geo_countries, geo_countries_exclude, geo_regions, geo_regions_exclude all remain simple string arrays using ISO codes.
Metro targeting
v2 — flat array of codes, assumed to be Nielsen DMAs:Metro systems
Registered metro systems are
nielsen_dma, uk_itl1, uk_itl2, eurostat_nuts2, and custom.
Postal targeting
v2 — flat array of codes, assumed to be US ZIP codes:geo_postal_areas, codes grouped by country-local system:
Postal systems
Use
postal_code for the normal postal code string in countries without a more specific registered local system. Deprecated country-fused aliases such as us_zip remain accepted for compatibility and SDK backfill.
Registered country/system pairings are defined in postal-country-system.json; the published postal-system.json enum remains additive and also contains deprecated country-fused aliases for 3.x compatibility.
Exclusion targeting
v3 adds_exclude variants for metro and postal targeting:
Discovering seller capabilities
Before sending geo targeting, buyers should verify the seller supports the requested systems. Useget_adcp_capabilities:
geo_metros object uses boolean properties to indicate which metro systems are supported. The geo_postal_areas object is keyed by country and lists the supported country-local postal systems; during the 3.x migration, sellers SHOULD also emit equivalent deprecated aliases such as us_zip where one exists. Buyers and SDKs should normalize both shapes. If you request a system the seller doesn’t declare, expect a validation error.
Full targeting example
A v3 targeting overlay combining geo restrictions:_exclude variants) act as AND NOT — delivery must match inclusions and must not match any exclusion.
Migration steps
1
Identify geo targeting
Find all uses of
geo_metros and geo_postal_codes.2
Rename field
geo_postal_codes becomes geo_postal_areas.3
Restructure values
Wrap metro arrays into
{ "system": "...", "values": [...] } objects and postal arrays into { "country": "...", "system": "...", "values": [...] } objects.4
Choose systems
For US-only code, use
nielsen_dma and country: "US", system: "zip". For international, add the appropriate country-local systems.5
Verify capabilities
Call
get_adcp_capabilities to check what systems each seller supports.6
Add exclusions
If needed, use the new
_exclude variants for negative targeting.Targeting
Full targeting reference: audiences, contextual, geographic, and device targeting.
Related: Channels | Pricing | Creatives | Catalogs | Attribution | AdCP 3.0 overview