Xandr conversion pixels need id and t
Microsoft documents id on every exported conversion pixel, with t=2 for the image pixel and t=1 for JavaScript. value=10 is valid and value=$10 is not. order_id is letters and numbers, at most 36 characters, other is at most 20, and redir is an absolute piggyback pixel URL. seg and remove are comma-separated integer segment IDs when the conversion also adds or removes segments. Cookie sync and RTB on the same hosts are not this pack. Server-side conversion is vendor/xandr-sspx.
t is 1 or 2
Microsoft documents t=1 for JavaScript and t=2 for image. A /px call with t=3 is not an exported conversion pixel.
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 |
|---|---|---|---|---|
id |
required | It is the Monetize conversion pixel ID. Microsoft documents id on every exported conversion pixel. Fix: Set id to the conversion pixel ID from Monetize. | vendor.xandr.param.id.missingvendor.xandr.param.id.emptyvendor.xandr.param.id.invalid |
docs |
t |
required | It is the pixel type. Microsoft documents t=1 for JavaScript and t=2 for image. Fix: Set t=2 on an image pixel, or t=1 on a JavaScript pixel. | vendor.xandr.param.t.missingvendor.xandr.param.t.emptyvendor.xandr.param.t.invalid |
docs |
order_id |
optional | It is an order ID or SKU. Microsoft documents letters and numbers, with a 36 character limit. Fix: Set order_id to the order or SKU, letters and numbers only, at most 36 characters. | vendor.xandr.param.order_id.emptyvendor.xandr.param.order_id.invalid |
docs |
value |
optional | It is the dynamic revenue. Microsoft documents a purely numerical value, so 10 is valid and $10 is not. Fix: Set value to a number with no currency symbol, such as 10 or 10.50. | vendor.xandr.param.value.emptyvendor.xandr.param.value.invalid |
docs |
consent |
optional | It is binary consent when TCF signals are not available. Microsoft documents 1 for granted and 0 for denied. Fix: Send consent=1 when the user granted consent, or consent=0 when they denied it. | vendor.xandr.param.consent.emptyvendor.xandr.param.consent.invalid |
docs |
other |
optional | It is extra external data on the conversion. Microsoft documents letters and numbers, with a 20 character limit. Fix: Set other to letters and numbers only, at most 20 characters. | vendor.xandr.param.other.emptyvendor.xandr.param.other.invalid |
docs |
redir |
optional | It is a piggyback pixel URL. Microsoft documents redir as the image or JavaScript pixel to notify after conversion. Fix: Set redir to an absolute image or JavaScript pixel URL, matching the host pixel type. | vendor.xandr.param.redir.emptyvendor.xandr.param.redir.invalid |
docs |
seg |
optional | It adds the user to one or more segments when the conversion fires. Microsoft documents comma-separated segment IDs on the same conversion pixel. Fix: Set `seg` to one or more integer segment IDs, comma-separated, such as `12192,12304`. | vendor.xandr.param.seg.emptyvendor.xandr.param.seg.invalid |
docs |
remove |
optional | It removes the user from one or more segments when the conversion fires. Microsoft documents comma-separated segment IDs on the same conversion pixel. Fix: Set `remove` to one or more integer segment IDs, comma-separated, such as `23145`. | vendor.xandr.param.remove.emptyvendor.xandr.param.remove.invalid |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/xandr
Try this failing payload in the playground. Xandr conversion pixel with t=3.
https://ib.adnxs.com/px?id=1234&t=3
cargo install pixellint
·
npm install pixellint