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 | Conversion pixel ID in the documented ID-based /px profile. The published mixed seg_code examples retain this conversion ID; a segment code does not replace it. 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 |
optional | Pixel type when supplied: 1 for JavaScript or 2 for an image. Microsoft publishes combined conversion/segment /px examples that omit this setting. Presence diagnostic severity: error. Fix: When supplying t, use 1 for JavaScript or 2 for an image pixel. Follow the generated tag for the intended rendering mode. | vendor.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 |
seg_code |
optional | Configured segment code for the documented combined conversion/segment /px call. Preserve its case and punctuation. Presence diagnostic severity: warning. Fix: Supply the configured segment code and its owning member, or omit seg_code when not using a code. | vendor.xandr.param.seg_code.empty |
docs |
member |
required | Member that owns the segment code. Required when seg_code is populated. Its format and account validity remain external. Applies when {"kind":"present","param":"seg_code"}. Fix: When seg_code is populated, include the member that owns that segment code. | vendor.xandr.param.member.missingvendor.xandr.param.member.empty |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/xandr
Try this failing payload in the playground. An example with a validation finding.
https://ib.adnxs.com/px?t=2
cargo install pixellint
·
npm install pixellint