Background
PR #2174 added xdm:localeVariants to the paid-media-creative datatype, modeled on Meta's asset_feed_spec language_label (multi-language ads).
During connector implementation review, it surfaced that Google Ads CustomizerAttribute substitution produces materially different rendered headlines/bodies that are not keyed by locale. Example: a headline Get {CUSTOMIZER.discount} on Adobe Creative Cloud Subscription with a discount attribute linked at the ad-group-criterion level can resolve to 5%, 10%, 15%, 20% across different keywords. Each of these is a distinct served impression that downstream consumers (CJA Content Analytics → feature extraction → LLM sentiment analysis) need to snapshot independently.
Storing only the unresolved template string loses fidelity for the analytics pipeline.
Proposed Change
- Soft-deprecate
xdm:localeVariants on the paidMediaCreative definition (meta:status: deprecated + description prefix "Deprecated: Use xdm:variants instead..."). Connector has not yet implemented populating this field, so deprecation cost is minimal.
- Add a more general
xdm:variants array. Each variant carries:
xdm:variantID — stable identifier
xdm:language — BCP 47 tag, optional (set for Meta-style multi-language variants)
xdm:customizers[] — optional, list of resolved customizer attributes (name, type, value, scope). scope enum: customer | account | campaign | adGroup | adGroupCriterion | asset | other
- Per-variant overrides of
title, body, callToAction, destinationURL, displayURL, trackingURLs, assets
- Add new
creativeCustomizer and creativeVariant sub-definitions.
- Migrate
paid-media-creative.example.4.json from xdm:localeVariants to xdm:variants.
- Add
paid-media-creative.example.5.json demonstrating Google Ads customizer expansion (4 rendered variants for 5 / 10 / 15 / 20 % discount).
Network Coverage
| Ad network |
Variant signal |
Stored in |
| Meta multi-language ads |
language_label |
xdm:language |
| Google Ads CustomizerAttribute |
resolved attribute name/value/scope |
xdm:customizers[] |
| Meta + Google with both axes |
both |
both fields populated |
| TikTok / Snapchat / LinkedIn |
locale and/or template substitution |
same shape |
Reference
Related
Background
PR #2174 added
xdm:localeVariantsto thepaid-media-creativedatatype, modeled on Meta'sasset_feed_speclanguage_label(multi-language ads).During connector implementation review, it surfaced that Google Ads
CustomizerAttributesubstitution produces materially different rendered headlines/bodies that are not keyed by locale. Example: a headlineGet {CUSTOMIZER.discount} on Adobe Creative Cloud Subscriptionwith adiscountattribute linked at the ad-group-criterion level can resolve to5%,10%,15%,20%across different keywords. Each of these is a distinct served impression that downstream consumers (CJA Content Analytics → feature extraction → LLM sentiment analysis) need to snapshot independently.Storing only the unresolved template string loses fidelity for the analytics pipeline.
Proposed Change
xdm:localeVariantson thepaidMediaCreativedefinition (meta:status: deprecated+ description prefix"Deprecated: Use xdm:variants instead..."). Connector has not yet implemented populating this field, so deprecation cost is minimal.xdm:variantsarray. Each variant carries:xdm:variantID— stable identifierxdm:language— BCP 47 tag, optional (set for Meta-style multi-language variants)xdm:customizers[]— optional, list of resolved customizer attributes (name,type,value,scope).scopeenum:customer | account | campaign | adGroup | adGroupCriterion | asset | othertitle,body,callToAction,destinationURL,displayURL,trackingURLs,assetscreativeCustomizerandcreativeVariantsub-definitions.paid-media-creative.example.4.jsonfromxdm:localeVariantstoxdm:variants.paid-media-creative.example.5.jsondemonstrating Google Ads customizer expansion (4 rendered variants for 5 / 10 / 15 / 20 % discount).Network Coverage
language_labelxdm:languagexdm:customizers[]Reference
Related