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.
Example - Privacy-aware tracking:
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.
AXE Integration
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
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
- 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 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