Context
The macros field on TMP Context Match Offer (Map<string, string>) was originally described as macro substitution values that flow through GAM custom macros into creative tracking URLs. This is incorrect — Offer macros are dynamic creative data (sponsor labels, promo codes, catalog items) that don't flow through GAM's macro system.
In #2079 we stripped the Offer macros narrative from the universal macros docs to avoid conflating tracking URL macros ({TMPX}, {CACHEBUSTER}) with dynamic creative content. The schema field remains but its usage is documented as "surface-dependent, will be refined."
What needs to happen
- Rename or restructure the Offer
macros field to reflect its actual purpose (dynamic creative data, not tracking URL macros)
- Define how dynamic creative values flow from Context Match offers to creative rendering (this is native DCO, not GAM macro substitution)
- Consider whether this belongs in
creative_manifest rather than a separate field
- Document the coordination contract: who defines the expected keys, how the creative declares what it needs
Related
🤖 Generated with Claude Code
Context
The
macrosfield on TMP Context Match Offer (Map<string, string>) was originally described as macro substitution values that flow through GAM custom macros into creative tracking URLs. This is incorrect — Offer macros are dynamic creative data (sponsor labels, promo codes, catalog items) that don't flow through GAM's macro system.In #2079 we stripped the Offer macros narrative from the universal macros docs to avoid conflating tracking URL macros (
{TMPX},{CACHEBUSTER}) with dynamic creative content. The schema field remains but its usage is documented as "surface-dependent, will be refined."What needs to happen
macrosfield to reflect its actual purpose (dynamic creative data, not tracking URL macros)creative_manifestrather than a separate fieldRelated
🤖 Generated with Claude Code