pixellint

Parse.ly collect beacons need idsite and url

Not the cdn.parsely.com loader. The pixel server is p1.parsely.com, or p1-irl.parsely.com for EU. idsite is the Site ID. url is a required absolute URL, not a relative path. action=pageview is the page view.

What this pack matches

Hosts
p1.parsely.com, p1-irl.parsely.com
Vendor docs
docs.parse.ly/tracker-details/

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
idsite required It is the Parse.ly Site ID. Parse.ly documents it as the site identifier on every collect beacon. Fix: Set `idsite` to the Site ID from Parse.ly Support, such as `example.com`. vendor.parsely-collect.param.idsite.missing
vendor.parsely-collect.param.idsite.empty
docs
url required It is the page URL. Parse.ly documents it as a full URL, not a relative path. Fix: Send the absolute page URL in `url`. vendor.parsely-collect.param.url.missing
vendor.parsely-collect.param.url.empty
vendor.parsely-collect.param.url.invalid
docs
action recommended Built-in events and custom event names are supported. A leading underscore on custom names is recommended to avoid collisions. Fix: Send `action=pageview` for a page view. vendor.parsely-collect.param.action.missing
vendor.parsely-collect.param.action.empty
docs
rand… optional It is an integer tracker field. Parse.ly documents `rand` / `sts` / `slts` as millisecond timestamps, `plid` / `pvid` / `sid` as ids, and `inc` as heartbeat seconds. `slts` is `0` on a first session. Fix: Send an integer, such as `0` or a millisecond timestamp. vendor.parsely-collect.param.rand.empty
vendor.parsely-collect.param.rand.invalid
docs
urlref optional It is the HTTP referrer. Parse.ly documents a full URL, or blank when the reader typed the address. Fix: Send an absolute referrer URL in `urlref`, or leave it blank. vendor.parsely-collect.param.urlref.empty
vendor.parsely-collect.param.urlref.invalid
docs
sref optional It is the session's first referrer. Parse.ly documents that it can be blank. Fix: Send an absolute URL in `sref`, or leave it blank. vendor.parsely-collect.param.sref.empty
vendor.parsely-collect.param.sref.invalid
docs
surl optional It is the session's first pageview URL. Fix: Send the absolute first-page URL in `surl`. vendor.parsely-collect.param.surl.empty
vendor.parsely-collect.param.surl.invalid
docs
screen optional It is the client resolution. Parse.ly documents `WIDTHxHEIGHT|availableWIDTHxavailableHEIGHT|pixelDepth`. Fix: Send `screen` as `1920x1080|1920x1040|24`. vendor.parsely-collect.param.screen.empty
vendor.parsely-collect.param.screen.invalid
docs
data optional It is optional JSON. Parse.ly documents conversions, audience segments, and custom data here, and allows a blank value. Fix: Send a JSON object in `data`, or leave it blank. docs
title optional It is the content title shown in the Parse.ly dashboard. Fix: Send the headline in `title`, or drop the empty pair. vendor.parsely-collect.param.title.empty docs
date optional The live SDK sends Date.toString event time. Older tracker examples also use ISO 8601. Fix: Send `date` as ISO 8601, such as `2026-09-20T15:41:53.000Z`. vendor.parsely-collect.param.date.empty
vendor.parsely-collect.param.date.invalid
docs
u optional It is the pseudonymous device UUID. Fix: Send the device UUID in `u`, or drop the empty pair. vendor.parsely-collect.param.u.empty docs
sid optional The vendor documents `sid` in the request contract. Minimum numeric value: 0. vendor.parsely-collect.param.sid.empty
vendor.parsely-collect.param.sid.invalid
docs
sts optional The vendor documents `sts` in the request contract. Minimum numeric value: 0. vendor.parsely-collect.param.sts.empty
vendor.parsely-collect.param.sts.invalid
docs
slts optional The vendor documents `slts` in the request contract. Minimum numeric value: 0. vendor.parsely-collect.param.slts.empty
vendor.parsely-collect.param.slts.invalid
docs
plid optional The live SDK emits UUID or 32 hexadecimal correlation IDs. Older tracker documentation describes integer IDs. vendor.parsely-collect.param.plid.empty
vendor.parsely-collect.param.plid.invalid
docs
pvid optional The live SDK emits UUID or 32 hexadecimal correlation IDs. Older tracker documentation describes integer IDs. vendor.parsely-collect.param.pvid.empty
vendor.parsely-collect.param.pvid.invalid
docs
inc optional Elapsed engaged seconds on heartbeat and video heartbeat events. Minimum numeric value: 0. vendor.parsely-collect.param.inc.empty
vendor.parsely-collect.param.inc.invalid
docs
js optional The published dynamic tracking example supplies js=1. vendor.parsely-collect.param.js.empty
vendor.parsely-collect.param.js.invalid
docs
metadata optional Metadata supplied in tracker requests. docs
vsid optional vendor.parsely-collect.param.vsid.empty
vendor.parsely-collect.param.vsid.invalid
docs
tt optional Total engaged milliseconds from the SDK sampler. Minimum numeric value: 0. vendor.parsely-collect.param.tt.empty
vendor.parsely-collect.param.tt.invalid
docs
tpab optional Third-party analytics blocked flag. vendor.parsely-collect.param.tpab.empty
vendor.parsely-collect.param.tpab.invalid
docs
sl_xp optional vendor.parsely-collect.param.sl_xp.empty docs
sl_x optional vendor.parsely-collect.param.sl_x.empty
vendor.parsely-collect.param.sl_x.invalid
docs
sl_y optional vendor.parsely-collect.param.sl_y.empty
vendor.parsely-collect.param.sl_y.invalid
docs
sl_h optional vendor.parsely-collect.param.sl_h.empty
vendor.parsely-collect.param.sl_h.invalid
docs
conversion_needs_data required Conversion events carry their type and label in data. vendor.parsely-collect.conversion_needs_data docs
heartbeat_needs_inc recommended A heartbeat without elapsed inc seconds cannot communicate engaged time. vendor.parsely-collect.heartbeat_needs_inc docs
invalid_site_id required genericconfigfree indicates an invalid Site ID. vendor.parsely-collect.invalid_site_id docs
root optional Decoded body source: data. Encoding: json. Native JSON type: object. vendor.parsely-collect.body.root.invalid docs
parsely_uuid optional The SDK supplies this reserved identity value itself. Decoded body source: data. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.parsely_uuid.invalid docs
parsely_site_uuid optional The SDK supplies this reserved identity value itself. Decoded body source: data. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.parsely_site_uuid.invalid docs
_conversion_type required Decoded body source: data. Encoding: json. Applies when {"kind":"value_in","param":"action","values":["conversion"]}. Native JSON type: string. vendor.parsely-collect.body._conversion_type.missing
vendor.parsely-collect.body._conversion_type.empty
vendor.parsely-collect.body._conversion_type.invalid
docs
_conversion_label required Decoded body source: data. Encoding: json. Applies when {"kind":"value_in","param":"action","values":["conversion"]}. Native JSON type: string. vendor.parsely-collect.body._conversion_label.missing
vendor.parsely-collect.body._conversion_label.empty
vendor.parsely-collect.body._conversion_label.invalid
docs
body.conversion_label_underscore recommended Underscores in conversion labels cause unexpected Dashboard behavior. Decoded body source: data. Encoding: json. Applies when {"kind":"value_in","param":"action","values":["conversion"]}. vendor.parsely-collect.body.conversion_label_underscore docs
root optional Decoded body source: metadata. Encoding: json. Native JSON type: object. vendor.parsely-collect.body.root.invalid docs
title optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.title.invalid docs
link optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.link.invalid docs
image_url optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.image_url.invalid docs
pub_date optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.pub_date.invalid docs
section optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.section.invalid docs
post_id optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.post_id.invalid docs
network_id optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.network_id.invalid docs
network_canonical optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.network_canonical.invalid docs
amphtmlurl optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.amphtmlurl.invalid docs
page_type optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.page_type.invalid docs
pub_metadata optional The SDK assigns leftover publication metadata as a native object. Caller custom metadata is open JSON; its nested metadata string is normalized separately. Do not infer a string-only wire field. Decoded body source: metadata. Encoding: json. Native JSON type: string or number or boolean or object or array or null. vendor.parsely-collect.body.pub_metadata.invalid docs
authors optional Decoded body source: metadata. Encoding: json. Native JSON type: array. vendor.parsely-collect.body.authors.invalid docs
tags optional Decoded body source: metadata. Encoding: json. Native JSON type: array. vendor.parsely-collect.body.tags.invalid docs
authors[] optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.authors[].invalid docs
tags[] optional Decoded body source: metadata. Encoding: json. Native JSON type: string. vendor.parsely-collect.body.tags[].invalid docs
pub_metadata.metadata optional Custom metadata may contain arbitrary values. Published custom metadata strings over2000characters are ignored. This advisory counts Unicode characters of the normalized string. Decoded body source: metadata. Encoding: json. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded characters: 2000. vendor.parsely-collect.body.pub_metadata.metadata.invalid docs
body.custom_metadata_json_recommended recommended Custom metadata is stored as an arbitrary string. Parse.ly recommends valid JSON. Decoded body source: metadata. Encoding: json. vendor.parsely-collect.body.custom_metadata_json_recommended docs

Validate a payload

pixellint validate url "$ARTIFACT" --rulepack vendor/parsely-collect

Try this failing payload in the playground. Parse.ly collect missing idsite.

https://p1.parsely.com/?url=https://example.com/page&action=pageview

cargo install pixellint · npm install pixellint