vendor/google-analytics-collect · ecosystem evidence
The /g/collect hit the Google tag actually fires
Google documents the tag and the Measurement Protocol. It does not document this request format. The pack is labeled ecosystem evidence for that reason, and is scoped to what the Google tag generates.
v=1 is Universal Analytics. A tid that is not G- is a stale UA property. Both still 200.
v=1 is Universal Analytics
The collect transport for GA4 is v=2. A leftover UA hit is the usual migration artefact.
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 |
|---|---|---|---|---|
v |
required | GA4 collection uses protocol version 2. Version 1 is Universal Analytics, which stopped processing data. Fix: Send `v=2` from a Google tag configured for a GA4 property. | vendor.google-analytics-collect.param.v.missingvendor.google-analytics-collect.param.v.emptyvendor.google-analytics-collect.param.v.invalid |
docs |
tid |
required | It is the GA4 measurement ID, which starts with `G-`. A `UA-` value here is a Universal Analytics property that no longer collects data. Fix: Point the tag at a GA4 measurement ID. | vendor.google-analytics-collect.param.tid.missingvendor.google-analytics-collect.param.tid.emptyvendor.google-analytics-collect.param.tid.invalid |
docs |
cid |
required | It is the client ID that ties events to one browser. Without it, hits cannot be attributed to a session. | vendor.google-analytics-collect.param.cid.missingvendor.google-analytics-collect.param.cid.empty |
docs |
en |
recommended | It is the event name. | vendor.google-analytics-collect.param.en.missingvendor.google-analytics-collect.param.en.empty |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/google-analytics-collect
Or paste it into the playground. Same engine, in the browser, nothing sent anywhere.
cargo install pixellint
·
npm install pixellint