pixellint

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.

Rule: vendor.xandr.param.t.invalid

What this pack matches

Hosts
ib.adnxs.com, secure.adnxs.com
Paths
/px
Vendor docs
learn.microsoft.com/en-us/xandr/monetize/conversion-pixels-advanced

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.missing
vendor.xandr.param.id.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.missing
vendor.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