Skip to main content
5 min read

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

EventWhat's recordedWhat's NOT recorded
Video progress
(HTML5, YouTube, Vimeo)
Source URL, provider, milestone (25 / 50 / 75 / 100 %), durationVideo content
Form submissionForm id, name, action URL, field countForm input values
File uploadFile type (e.g. application/pdf), file sizeFile content
ClickCSS 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.

event_data shapeJSON
{
"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's id
  • form_name — the <form> element's name
  • form_action — the action attribute URL
  • field_count — the number of named inputs in the form

Input values are never read or transmitted.

event_data shapeJSON
{
"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:

event_data shapeJSON
{
"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 only
  • tag — 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.

event_data shapeJSON
{
"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.

Was this page helpful?