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
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.missingvendor.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.missingvendor.parsely-collect.param.url.emptyvendor.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.missingvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.parsely-collect.param.inc.invalid |
docs |
js |
optional | The published dynamic tracking example supplies js=1. | vendor.parsely-collect.param.js.emptyvendor.parsely-collect.param.js.invalid |
docs |
metadata |
optional | Metadata supplied in tracker requests. | docs | |
vsid |
optional | vendor.parsely-collect.param.vsid.emptyvendor.parsely-collect.param.vsid.invalid |
docs | |
tt |
optional | Total engaged milliseconds from the SDK sampler. Minimum numeric value: 0. | vendor.parsely-collect.param.tt.emptyvendor.parsely-collect.param.tt.invalid |
docs |
tpab |
optional | Third-party analytics blocked flag. | vendor.parsely-collect.param.tpab.emptyvendor.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.emptyvendor.parsely-collect.param.sl_x.invalid |
docs | |
sl_y |
optional | vendor.parsely-collect.param.sl_y.emptyvendor.parsely-collect.param.sl_y.invalid |
docs | |
sl_h |
optional | vendor.parsely-collect.param.sl_h.emptyvendor.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.missingvendor.parsely-collect.body._conversion_type.emptyvendor.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.missingvendor.parsely-collect.body._conversion_label.emptyvendor.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