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
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.missingvendor.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.missingvendor.chartbeat.param.g.emptyvendor.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.missingvendor.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.missingvendor.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.missingvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.chartbeat.param.x.invalid |
docs |
m |
optional | Maximum observed scroll position. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.m.emptyvendor.chartbeat.param.m.invalid |
docs |
y |
optional | Document scroll height. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.y.emptyvendor.chartbeat.param.y.invalid |
docs |
o |
optional | Document scroll width. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.o.emptyvendor.chartbeat.param.o.invalid |
docs |
w |
optional | Viewport client height. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.w.emptyvendor.chartbeat.param.w.invalid |
docs |
j |
optional | Scheduled ping interval in seconds. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.j.emptyvendor.chartbeat.param.j.invalid |
docs |
E |
optional | Cumulative engaged seconds. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.E.emptyvendor.chartbeat.param.E.invalid |
docs |
e |
optional | Engaged seconds since the previous ping. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.e.emptyvendor.chartbeat.param.e.invalid |
docs |
tz |
optional | Signed timezone offset in minutes. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.tz.emptyvendor.chartbeat.param.tz.invalid |
docs |
sn |
optional | Ping sequence counter. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.sn.emptyvendor.chartbeat.param.sn.invalid |
docs |
V |
optional | Producer version number. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.V.emptyvendor.chartbeat.param.V.invalid |
docs |
b |
optional | Navigation timing value when available. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.b.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.chartbeat.param.L.invalid |
docs |
nc |
optional | Optional producer marker encoded as 1. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.nc.emptyvendor.chartbeat.param.nc.invalid |
docs |
vp |
optional | Optional producer marker encoded as 1. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.vp.emptyvendor.chartbeat.param.vp.invalid |
docs |
C |
optional | Optional producer marker encoded as 1. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.C.emptyvendor.chartbeat.param.C.invalid |
docs |
l |
optional | Optional producer marker encoded as 1. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.l.emptyvendor.chartbeat.param.l.invalid |
docs |
im |
optional | Producer image capability mask. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.im.emptyvendor.chartbeat.param.im.invalid |
docs |
l1 |
optional | Cached internal page counter. Presence diagnostic severity: warning. Evidence: vendor template. | vendor.chartbeat.param.l1.emptyvendor.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.missingvendor.chartbeat.http.method.emptyvendor.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