Skip to main content
4 min read

Download Tracking

See which files your visitors download, which devices and countries they download from, and how downloads trend over time — all captured automatically, with no code changes required.

Overview

Zenovay automatically records a download_start event whenever a visitor clicks a link to a downloadable file on your site. The data appears in your dashboard at app → open your website → Downloads tab.

The Downloads tab is visible only to authenticated website owners and team members. It is intentionally hidden on public shared dashboards because file URLs and names can reveal internal paths.

Download tracking is part of the Zenovay tracking script. It works alongside Auto-Captured Events — no separate installation or configuration is needed.

What gets captured automatically

A download_start event fires when a visitor clicks any of the following:

  • An <a> link whose path ends in a recognised file extension: pdf, zip, exe, dmg, pkg, msi, apk, csv, xls, xlsx, doc, docx, ppt, pptx, mp4, mp3, wav, mov, avi, rar, 7z, tar, gz, tgz, iso, deb, rpm
  • Any <a download> link (regardless of the file extension)
  • A JavaScript-generated blob download (e.g. dynamically generated PDFs)

Because Zenovay uses navigator.sendBeacon, the event is sent reliably even when the click triggers a file download that navigates the browser away from the page.

No code changes are required. Once the Zenovay tracking script is installed, download tracking just works.

File size

  • For same-origin downloads (files served from the same domain as your site), Zenovay captures the file size automatically.
  • For cross-origin downloads (files on a different domain), the file size is captured only when the file server's CORS policy allows it. When CORS does not permit it, the Size column shows "—".

Download completion timing

Completion timing is available only for in-app or programmatic (fetch + blob) downloads — for example, a button that fetches a PDF and triggers a Blob download in JavaScript.

For ordinary browser-managed file links (the standard <a href> to a file), the browser owns the entire transfer. The web platform provides no API for measuring how long the download takes, so the Avg Time column shows "—" for those downloads. This is a genuine browser limitation, not a Zenovay limitation.

If you need completion timing for a file, implement the download using fetch() and URL.createObjectURL(). Zenovay can then measure the full transfer.

Add the data-download attribute to any anchor element to exclude it from download tracking entirely:

Exclude a link from download trackingHTML
<!-- This link will NOT be tracked as a download -->
<a href="/internal-report.pdf" data-download>Download report</a>

Cross-browser support

Download tracking works in Chrome, Firefox, and Safari. It uses navigator.sendBeacon to send the event, which ensures delivery even when the download navigation unloads the page.

Privacy

Download tracking uses the existing Zenovay tracker. It adds no new cookies or localStorage entries, and it works in cookieless mode. Visitors who send a Global Privacy Control or Do Not Track signal are not tracked, so their downloads will not appear in the Downloads tab — this is by design.

Plan limits

PlanDownload events per website per day
Free100 (soft cap)
ProUncapped
ScaleUncapped
EnterpriseUncapped

The Free plan cap is a soft limit. Events above the daily cap are not counted toward the totals shown in the Downloads tab for that day.

Viewing download data

Open the website in the app and go to the Downloads tab. The tab contains:

PanelWhat it shows
Top downloaded filesFile URL, downloads, unique downloads, size, average completion time
Downloads over timeDownload volume trend for the selected date range
By deviceDownloads broken down by device type
By countryDownloads broken down by visitor country
By sourceDownloads broken down by traffic source
Completion summaryShare of downloads with recorded completion timing vs. browser-managed

Date range

  • 7-day and 30-day ranges are available on all plans.
  • The 90-day range requires the Scale or Enterprise plan.
Was this page helpful?