Skip to content

Generalize paid-media-creative variants for Google Ads customizers (deprecate localeVariants) #2178

Description

@ejsuncy

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions