pixellint

Chartbeat pings carry engagement and activity state.

The exact /ping collector adds advisory SDK checks for counters, viewport measurements, capability masks and activity flags. Each ping sets exactly one of R, W and I to 1.

Empty referrers, internal cached paths, empty titles and configured metadata remain accepted. Case-distinct fields retain separate checks. Account configuration and engagement truth require external context.

What this pack matches

Hosts
ping.chartbeat.net
Paths
/ping
Vendor docs
docs.chartbeat.com/cbp/tracking/standard-websites/qa-web-integration

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
h required It is the Chartbeat site id, the host where traffic appears in the dashboard. Chartbeat documents it as the `config.domain` value on the ping. Fix: Set `h` to the site id from the Chartbeat snippet, usually the site's root domain. vendor.chartbeat.param.h.missing
vendor.chartbeat.param.h.empty
docs
g required It is the numeric Chartbeat account UID from `config.uid`. Fix: Set `g` to the numeric uid from the Chartbeat snippet. vendor.chartbeat.param.g.missing
vendor.chartbeat.param.g.empty
vendor.chartbeat.param.g.invalid
docs
p recommended It is the page path. Chartbeat documents it as a ping key to check in QA, from `config.path` or the canonical path. Fix: Set `p` to the canonical path Chartbeat should report. vendor.chartbeat.param.p.missing
vendor.chartbeat.param.p.empty
docs
d recommended It is the actual domain of the page, which may differ from `h`. Chartbeat documents it as a ping key to check in QA. Fix: Set `d` to the page's domain, or the canonical domain when `useCanonicalDomain` is true. vendor.chartbeat.param.d.missing
vendor.chartbeat.param.d.empty
docs
t recommended It is the unique identifier for the page-session. Chartbeat documents each distinct `t` as a separate pageview. Fix: Send a stable page-session id in `t` so successive pings on the same view stay together. vendor.chartbeat.param.t.missing
vendor.chartbeat.param.t.empty
docs
g0 optional It is the comma-delimited list of sections from `config.sections`. Chartbeat documents it as a ping key to check in QA. vendor.chartbeat.param.g0.empty docs
g1 optional It is the comma-delimited list of authors from `config.authors`. Chartbeat documents it as a ping key to check in QA. vendor.chartbeat.param.g1.empty docs
i optional It is the page title. Chartbeat documents it as present on the first ping of a page-session. vendor.chartbeat.param.i.empty docs
r optional The vendor documents `r` in the request contract. vendor.chartbeat.param.r.empty
vendor.chartbeat.param.r.invalid
docs
v optional Internal referrer. The SDK sends either a URL or a cached previous page path. docs
c optional Elapsed seconds since the page-view start. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.c.empty
vendor.chartbeat.param.c.invalid
docs
x optional Current scroll position, floored by the SDK. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.x.empty
vendor.chartbeat.param.x.invalid
docs
m optional Maximum observed scroll position. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.m.empty
vendor.chartbeat.param.m.invalid
docs
y optional Document scroll height. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.y.empty
vendor.chartbeat.param.y.invalid
docs
o optional Document scroll width. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.o.empty
vendor.chartbeat.param.o.invalid
docs
w optional Viewport client height. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.w.empty
vendor.chartbeat.param.w.invalid
docs
j optional Scheduled ping interval in seconds. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.j.empty
vendor.chartbeat.param.j.invalid
docs
E optional Cumulative engaged seconds. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.E.empty
vendor.chartbeat.param.E.invalid
docs
e optional Engaged seconds since the previous ping. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.e.empty
vendor.chartbeat.param.e.invalid
docs
tz optional Signed timezone offset in minutes. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.tz.empty
vendor.chartbeat.param.tz.invalid
docs
sn optional Ping sequence counter. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.sn.empty
vendor.chartbeat.param.sn.invalid
docs
V optional Producer version number. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.V.empty
vendor.chartbeat.param.V.invalid
docs
b optional Navigation timing value when available. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.b.empty
vendor.chartbeat.param.b.invalid
docs
R optional Producer activity or HUD flag, encoded as 0 or 1. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.R.empty
vendor.chartbeat.param.R.invalid
docs
W optional Producer activity or HUD flag, encoded as 0 or 1. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.W.empty
vendor.chartbeat.param.W.invalid
docs
I optional Producer activity or HUD flag, encoded as 0 or 1. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.I.empty
vendor.chartbeat.param.I.invalid
docs
L optional Producer activity or HUD flag, encoded as 0 or 1. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.L.empty
vendor.chartbeat.param.L.invalid
docs
nc optional Optional producer marker encoded as 1. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.nc.empty
vendor.chartbeat.param.nc.invalid
docs
vp optional Optional producer marker encoded as 1. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.vp.empty
vendor.chartbeat.param.vp.invalid
docs
C optional Optional producer marker encoded as 1. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.C.empty
vendor.chartbeat.param.C.invalid
docs
l optional Optional producer marker encoded as 1. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.l.empty
vendor.chartbeat.param.l.invalid
docs
im optional Producer image capability mask. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.im.empty
vendor.chartbeat.param.im.invalid
docs
l1 optional Cached internal page counter. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.param.l1.empty
vendor.chartbeat.param.l1.invalid
docs
activity_flags_conflict recommended The pinned producer sets exactly one of R, W and I to 1 per ping. Evidence: vendor template. vendor.chartbeat.activity_flags_conflict docs
method recommended Pinned browser collector transport. Complete HTTP capture contract. Presence diagnostic severity: warning. Evidence: vendor template. vendor.chartbeat.http.method.missing
vendor.chartbeat.http.method.empty
vendor.chartbeat.http.method.invalid
docs

Validate a payload

pixellint validate url "$ARTIFACT" --rulepack vendor/chartbeat

Try this failing payload in the playground. A Chartbeat ping with conflicting activity flags.

https://ping.chartbeat.net/ping?h=example.test&g=123&p=/a&d=example.test&t=opaque&R=1&W=1&I=0

cargo install pixellint · npm install pixellint