What YouTube Stats traffic looks like
An embedded YouTube player reports viewing back to Google on its own, without the site asking it to. Event Watcher matches those telemetry endpoints specifically, not the player script or the video stream, so a YouTube Stats entry in the stream means the embed reported engagement.
- Endpoint pattern
youtube.com/api/stats/*ands.youtube.com/api/stats/*carry playback telemetry (watchtime,playback,delayplay,qoe);youtube.com/youtubei/v1/log_eventcarries the newer client event log. The privacy-enhanced hostyoutube-nocookie.comis matched on the same two paths, because it uses the same endpoints- Transport
- GET beacons fired by the player itself, repeating during playback rather than once per video
- Key parameters
docidis the video id ·cpnis the client playback nonce, unique per playback session ·standetgive the start and end of each watched segment ·cmtthe current media time ·lenthe video length ·eithe event id- Notes
- A
watchtimebeacon is not a play event. It is a periodic report of which segments were watched, which is why one viewing produces several
A watchtime beacon, reduced to the parameters that matter:
GET https://s.youtube.com/api/stats/watchtime
?docid=dQw4w9WgXcQ
&cpn=k3Jd2p…
&len=213.041
&st=0,12.4
&et=12.4,31.8
&cmt=31.8
Debugging YouTube Stats with Event Watcher
- No dedicated parser. Each beacon is matched by URL pattern, named YouTube Stats, badged with the Video category, and shown with its parsed query parameters.
docidtells you which video reported, without opening the iframe. On a page with several embeds this is the fastest way to see which one a visitor actually played.cpnstays constant for one playback session, so beacons can be grouped into a single viewing rather than read as separate plays.- YouTube reads Google Consent Mode, so its behaviour is tied to the same signals GA4 and Google Ads use. Reading the consent state on the first beacon alongside the Consent Mode entries in the timeline shows whether the signal reached it.
YouTube Stats and consent
Analytics consentEvent Watcher checks YouTube Stats against the analytics consent category.
This is the category's most common misconception, and it is directly observable. youtube-nocookie.com is widely believed to make an embed consent-exempt. It changes cookie behaviour on the initial load; it does not stop the player reporting. Load a page with a nocookie embed, play the video, and the same /api/stats/watchtime beacons appear. If those land before consent, they count as violations regardless of which host the embed came from. The reliable fix is not loading the iframe until analytics consent resolves, usually with a click-to-load placeholder.
Common debugging scenarios
- Video events missing in GTM. GTM's YouTube trigger needs
enablejsapi=1on the embed URL. Beacons in the stream while GTM fires nothing means the player is reporting to Google but not talking to the page. - A nocookie embed still shows violations. Expected. Check the beacon host: it will be
youtube-nocookie.comand the beacon will still be there. - Which video was actually watched? Read
docid, and usestandetto see how much of it. - One play counted as several. Group the beacons by
cpn. One nonce is one playback session. - Who embedded the player? Script Tree attributes the embed to the site's template, a tag manager, or another script.