Auto-Captured Events
Zenovay automatically records four user-interaction event types on every tracked website. You do not need to add any code or call zenovay('track', ...) — the tracking script handles all four out of the box.
What gets captured
| Event | What's recorded | What's NOT recorded |
|---|---|---|
| Video progress (HTML5, YouTube, Vimeo) | Source URL, provider, milestone (25 / 50 / 75 / 100 %), duration | Video content |
| Form submission | Form id, name, action URL, field count | Form input values |
| File upload | File type (e.g. application/pdf), file size | File content |
| Click | CSS selector, visible text, destination URL (for anchors) | Input values |
How each capture works
1. Video progress
For any <video> element on the page, Zenovay listens for the timeupdate event and emits a video_progress event when the visitor crosses the 25 %, 50 %, 75 %, and 100 % marks. Milestones are deduplicated per video per session so they each fire at most once.
YouTube and Vimeo iframes are supported via postMessage — Zenovay listens for state-change messages from youtube.com, youtube-nocookie.com, and player.vimeo.com. This works only if the host page already loads the YouTube or Vimeo iframe API. Zenovay does not bundle their SDKs.
Live streams (where duration === Infinity) emit play and ended only — no milestone events, since there is no fixed length to measure against.
{
"video_src": "https://example.com/intro.mp4",
"video_title": "Product intro",
"provider": "html5",
"milestone": 50,
"duration": 120,
"current_time": 60
}provider is one of "html5", "youtube", or "vimeo". milestone is one of 25, 50, 75, or 100. duration and current_time are in seconds.
2. Form submission
Zenovay attaches a capture-phase listener to submit events on every <form>. The event still fires when the page handler calls preventDefault(). Recorded fields:
form_id— the<form>element'sidform_name— the<form>element'snameform_action— theactionattribute URLfield_count— the number of named inputs in the form
Input values are never read or transmitted.
{
"form_id": "newsletter",
"form_name": "newsletter-form",
"form_action": "https://example.com/api/subscribe",
"field_count": 2
}Any field may be null if the corresponding HTML attribute is not set on the form element.
3. File upload
When a visitor selects a file via <input type="file">, Zenovay emits a file_upload event with each file's MIME type and size in bytes:
{
"files": [
{ "type": "application/pdf", "size": 10485760 }
],
"count": 1
}File contents are never read or transmitted — only the file metadata that the browser already exposes through the File interface.
4. Click
Clicks on <button>, <a href>, [role="button"], <input type="submit">, and <input type="button"> elements fire a click event. Clicks on generic <div> / <span> elements are not captured — only interactive elements. Recorded fields:
selector— a short CSS selector that uniquely identifies the element (capped at 200 characters)text— the visible text of the element (truncated at 80 characters)href— the destination URL, for anchors onlytag— the element's tag name ("BUTTON","A","INPUT")
Zenovay does not capture clicks on text/email/password inputs, so input field values are never recorded — the tracker has no listener attached to those elements.
{
"selector": "button#signup-cta",
"text": "Sign up free",
"href": null,
"tag": "BUTTON"
}Where to view this data
- Per-visitor: open Journeys (in the Behavior section of the sidebar) → click into any visitor → the Timeline tab renders each auto-captured event with its own icon (Play, FileText, Upload, MousePointer).
- Aggregate (Pro+): the Analytics tab includes two new widgets — Video Performance (top videos by completion rate) and Form Performance (top forms by submit count). Free plans see an upgrade prompt.
- Public share dashboards: anyone with a share-token URL sees the same widgets — no plan gate is applied to shared views.
Privacy
Form values, file contents, and input values never leave the browser. Zenovay records only metadata that the browser already exposes (form structure, MIME type, file size).
The tracker honours the Sec-GPC: 1 (Global Privacy Control) signal end-to-end — when GPC is present, no behavioural enrichment runs and the visitor row is flagged accordingly.
For full details on what is and isn't collected, see Privacy Compliance.
Disabling individual captures
These four captures run by default. There is no per-event opt-out flag today; if you need to disable one for compliance reasons, contact [email protected] and we can scope it to your tracking code.
Related
- Custom Events — fire your own events with
zenovay('track', ...) - Privacy Compliance — GDPR / CCPA posture and GPC support
- Goals — turn captured events into conversion goals