Amazon Ad Tag events carry their tag and event identities.
The main Amazon Ad Tag collector uses s.amazon-adsystem.com/iu3. The pack checks requests against the official browser SDK and server GTM template.
Custom events remain open. Browser UUID guidance is scoped to amzn.js requests, while server-template identities remain opaque. Producer checks are advisory.
What this pack matches
Rules
Codes are stable. A finding in CI, MCP, or the playground lands on the same id.
| Field | Required | What it checks | Rule ids | Source |
|---|---|---|---|---|
pid |
recommended | The producer sends its configured tag identity. The browser SDK accepts UUIDs; the server template leaves identity grammar open. Presence diagnostic severity: warning. | vendor.amazon-ad-tag.param.pid.missingvendor.amazon-ad-tag.param.pid.empty |
docs |
event |
recommended | The event name is open and limited to 256 UTF-16 code units by both pinned producers. Presence diagnostic severity: warning. Maximum decoded UTF-16 code units: 256. | vendor.amazon-ad-tag.param.event.missingvendor.amazon-ad-tag.param.event.emptyvendor.amazon-ad-tag.param.event.invalid |
docs |
eventSource |
optional | The browser SDK marks its requests with amzn.js. Other producers remain open. | docs | |
items |
optional | Array-style event attributes are serialized as JSON. | docs | |
amazonConsentString |
optional | The producer serializes the optional consent object as JSON. | docs | |
reporting_attributes… |
optional | Both producers normalize these reserved reporting attributes to ASCII letters, digits and underscores. Presence diagnostic severity: warning. Maximum decoded UTF-16 code units: 256. | vendor.amazon-ad-tag.param.reporting_attributes.emptyvendor.amazon-ad-tag.param.reporting_attributes.invalid |
docs |
clientDedupeId |
optional | The browser SDK retains nonempty deduplication strings through 256 UTF-16 code units. Cross-event uniqueness is external. Applies when {"kind":"value_in","param":"eventSource","values":["amzn.js"]}. Presence diagnostic severity: warning. Maximum decoded UTF-16 code units: 256. | vendor.amazon-ad-tag.param.clientDedupeId.invalid |
docs |
eventId |
optional | The browser SDK retains nonempty deduplication strings through 256 UTF-16 code units. Cross-event uniqueness is external. Applies when {"kind":"value_in","param":"eventSource","values":["amzn.js"]}. Presence diagnostic severity: warning. Maximum decoded UTF-16 code units: 256. | vendor.amazon-ad-tag.param.eventId.invalid |
docs |
uuid |
optional | The browser generates a per-request UUID when crypto.randomUUID is available. Presence diagnostic severity: warning. | vendor.amazon-ad-tag.param.uuid.emptyvendor.amazon-ad-tag.param.uuid.invalid |
docs |
ts |
optional | The SDK stamps browser events with epoch milliseconds. Applies when {"kind":"value_in","param":"eventSource","values":["amzn.js"]}. Presence diagnostic severity: warning. | vendor.amazon-ad-tag.param.ts.emptyvendor.amazon-ad-tag.param.ts.invalid |
docs |
browser.tag_id |
recommended | The browser SDK expects its configured tag identity to be a UUID. | vendor.amazon-ad-tag.browser.tag_id |
docs |
root |
optional | The pinned SDK emits this JSON type. Decoded body source: items. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"items"}. Presence diagnostic severity: warning. Native JSON type: array. | vendor.amazon-ad-tag.body.root.invalid |
docs |
root |
optional | The pinned SDK emits this JSON type. Body scope: []. Decoded body source: items. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"items"}. Presence diagnostic severity: warning. Native JSON type: object. | vendor.amazon-ad-tag.body.root.invalid |
docs |
root |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: object or null. | vendor.amazon-ad-tag.body.root.invalid |
docs |
geo |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: object. | vendor.amazon-ad-tag.body.geo.invalid |
docs |
geo.countryCode |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: string. | vendor.amazon-ad-tag.body.geo.countryCode.invalid |
docs |
geo.ipAddress |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: string. | vendor.amazon-ad-tag.body.geo.ipAddress.emptyvendor.amazon-ad-tag.body.geo.ipAddress.invalid |
docs |
consent |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: object. | vendor.amazon-ad-tag.body.consent.invalid |
docs |
consent.amazonConsentFormat |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: object. | vendor.amazon-ad-tag.body.consent.amazonConsentFormat.invalid |
docs |
consent.amazonConsentFormat.amzn_ad_storage |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: string. | vendor.amazon-ad-tag.body.consent.amazonConsentFormat.amzn_ad_storage.invalid |
docs |
consent.amazonConsentFormat.amzn_user_data |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: string. | vendor.amazon-ad-tag.body.consent.amazonConsentFormat.amzn_user_data.invalid |
docs |
consent.gpp |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: string. | vendor.amazon-ad-tag.body.consent.gpp.invalid |
docs |
consent.tcf |
optional | The pinned SDK emits this JSON type. Decoded body source: amazonConsentString. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"amazonConsentString"}. Presence diagnostic severity: warning. Native JSON type: string. | vendor.amazon-ad-tag.body.consent.tcf.invalid |
docs |
method |
recommended | The pinned producer uses these transport methods. Complete HTTP capture contract. Presence diagnostic severity: warning. | vendor.amazon-ad-tag.http.method.missingvendor.amazon-ad-tag.http.method.emptyvendor.amazon-ad-tag.http.method.invalid |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/amazon-ad-tag
Try this failing payload in the playground. An Amazon collector event without tag identity.
https://s.amazon-adsystem.com/iu3?event=Purchase
cargo install pixellint
·
npm install pixellint