Overview
When you provide creative assets to AdCP, you can include universal macro placeholders in:- Impression tracking URLs
- Click tracking URLs
- VAST tracking events
- Landing page URLs
Available Macros by Format
Different creative formats support different macros. Uselist_creative_formats to see which macros are available for each format.
Common Macros (All Formats)
Privacy & Compliance Macros
Critical for regulatory compliance - Use these to respect user privacy choices in your creative logic.Privacy Warning:Example - Privacy-aware tracking:{IP_ADDRESS}is considered personal data under GDPR and many privacy regulations. This macro may return an empty string or masked/truncated IP depending on user privacy settings, publisher policies, and regional regulations. Use geo macros ({COUNTRY},{REGION},{CITY}) instead when possible.
Device & Environment Macros
Geographic Macros
Identity Macros
Web Context Macros
For web-based inventory:Placement & Position Macros
Video Content Macros
For video formats with content context:Video Ad Pod Macros
For video ads in commercial breaks:
Note: Video formats also support all IAB VAST 4.x macros like
[CACHEBUSTING], [TIMESTAMP], [DOMAIN], [IFA], etc. These work natively in VAST XML.
Audio Content Macros
For audio formats with content context:AXE Integration
Catalog Item Macros
For catalog-driven creatives (carousels, dynamic product ads, job boards, store locators). These macros resolve to the identifier of the specific catalog item being rendered at serve time — the same identifiers used in conversion eventcontent_ids via the content_id_type field.
Use the macro that matches your catalog’s
content_id_type. For example, a product catalog with content_id_type: "gtin" uses {GTIN} in tracker URLs; a job catalog uses {JOB_ID}.
Creative Variant Macros
Note: Publisher-specific custom macros may be defined in individual creative format specifications as extra supported macros.
Usage Examples
Video Creative with Tracking
- Mix AdCP macros (
{MEDIA_BUY_ID}) with VAST macros ([CACHEBUSTING]) - AdCP macros use
{CURLY_BRACES} - VAST macros use
[SQUARE_BRACKETS] - Both work together seamlessly
Display Creative with Tracking
Audio Creative with Tracking
Catalog-Driven Creative with Item Tracking
{GTIN} resolves to the specific product’s GTIN at serve time. For a carousel showing 5 products, each product impression/click fires with that product’s identifier — enabling per-item attribution.
Macro Availability by Inventory Type
Not all macros are available in all inventory types. Check format specifications to see which macros are supported. Important: The columns below represent format types (Display, Video, etc.) which can run in different environments (app vs web). For example:- Display ads in mobile apps have
DEVICE_ID(✅*), but display ads on web do not - The ✅* notation means “available in-app contexts only”
- Format type + inventory environment determine actual macro availability
Legend:
- ✅ = Available
- ❌ = Not available
- ✅* = In-app only (not mobile web)
- ✅† = When location permission granted
- ✅‡ = Often restricted due to privacy regulations (may return empty or masked value)
- Privacy macros (
{LIMIT_AD_TRACKING},{DEVICE_ID}) may return empty values based on user privacy settings - Geographic macros accuracy varies by publisher’s data capabilities
{PLACEMENT_ID}refers to the IAB Global Placement ID standard
How Macros Work
1. Discovery
Querylist_creative_formats to see which macros each format supports:
2. Include Macros in Creatives
Add macro placeholders in your tracking URLs using{MACRO_NAME} syntax:
3. Sales Agent Processing
When you create a media buy viacreate_media_buy, the sales agent:
-
Replaces AdCP ID macros with your actual IDs:
{MEDIA_BUY_ID}→mb_spring_2025{PACKAGE_ID}→pkg_ctv_prime{CREATIVE_ID}→cr_video_30s
-
Translates platform macros to their ad server’s syntax:
{CACHEBUSTER}→%%CACHEBUSTER%%(GAM) or{{timestamp}}(Kevel){DEVICE_ID}→%%ADVERTISING_IDENTIFIER_PLAIN%%(GAM){DOMAIN}→%%SITE%%(GAM)
- Inserts click trackers automatically into clickable elements
- Leaves VAST macros unchanged (for video formats)
4. Impression Time
The publisher’s ad server replaces remaining macros with actual values:Best Practices
Use Macros Consistently
Include the same core set of macros across all your creatives:Check Format Support
Always querylist_creative_formats to see which macros are available. Not all formats support all macros.
Combine VAST and AdCP Macros
For video, use both systems together:- VAST macros
[CACHEBUSTING],[TIMESTAMP]- for standard video tracking - AdCP macros
{MEDIA_BUY_ID},{DEVICE_ID}- for your campaign tracking
Privacy Compliance
Critical: Always respect user privacy choices in your creative logic.GDPR Compliance (EU Traffic)
For campaigns serving in the EU:US Privacy / CCPA Compliance
For US traffic:Device-Level Privacy
Respect Limit Ad Tracking settings:Privacy Macro Behavior
Empty Values: Privacy-restricted macros return empty strings or zeros:{DEVICE_ID}→""or00000000-0000-0000-0000-000000000000when LAT enabled{GDPR_CONSENT}→""when no consent provided{IP_ADDRESS}→""or masked/truncated IP when privacy restricted
URL Encoding
No need to URL-encode macro placeholders. The ad server handles encoding of actual values automatically. Example:Implementation Notes for Sales Agents
This section is for AdCP implementers, not buyers.Macro Translation Approach
Sales agents must translate universal macros to their ad server’s native syntax. The recommended approach: Option 1: Hard-Code During Trafficking (MVP)- When creating ad server creatives, replace AdCP ID macros with actual values
- Translate platform macros to ad server syntax
- Creates one creative per line item but is simple and reliable
- Intercept ad calls and inject values dynamically
- More complex but avoids creative duplication
Translation Examples
Google Ad Manager:Click Tracker Insertion
Sales agents must automatically insert click tracking macros into clickable elements: Original creative:Mapping Storage
Store the mapping between AdCP IDs and ad server IDs for reconciliation:create_media_buy responses and make it queryable for reconciliation.
Related Documentation
- Creative Formats - Understanding format specifications and discovery
- Creative Protocol - How creatives work in AdCP
- sync_creatives - Creative management API