Skip to content

Events captured automatically

Searches, downloads, form submissions, video plays, uploads and outbound clicks are recorded with no code. What each carries and how to switch it off.

The moment the script is on a page it records more than pageviews. Each event below is a goal with a fixed name, so it appears under Goals › Captured automatically, can be a funnel step, a filter or an alert, and counts as one event toward your plan. Nothing here reads what a visitor typed, chose or uploaded.

The events

EventWhenProperties
site_searchA page loads with a search query in its URL, or you call statsy.search().query, page, results (when you pass it)
downloadA click on a link to a file, or on any link with a download attribute.url, file, ext
form_submitA form is submitted, including forms your code submits with fetch.form (id, name or action), fields (count)
video_playAn HTML5 video starts for the first time on the page.video (title or file), duration
video_progressThat video passes 25, 50, 75 and 100 percent. Each milestone once.video, duration, pct
file_uploadA visitor picks files in an upload field.files (count), type (image, video, application…), kb
outboundA click on a link to another domain.url
checkout_startA click on a hosted Stripe, Lemon Squeezy, Paddle, Polar or Razorpay checkout link.provider

Property values are strings, numbers or booleans. A property called results on a search counts toward the no results figure when it is 0.

What is never read

  • Form field values. The script counts fields and takes the form's id, name or action path. That is all.
  • File contents. An upload records how many files, their type family and total size, from metadata the browser already exposes.
  • Generic clicks. A click on a plain div or span is not an event. Use a click goal or a heatmap for that.
  • Text inside a video. Only the title attribute, an aria-label or the file name.

Switching any of them off

Each capture has a tag attribute. Set it to false to stop that event on the whole site.

AttributeDefaultStops
data-track-searchtruesite_search from the URL (statsy.search() still works)
data-track-downloadstruedownload
data-track-formstrueform_submit
data-track-videotruevideo_play and video_progress
data-track-uploadstruefile_upload
data-track-outboundtrueoutbound

For one element, add data-statsy-ignore to the form, link, video or upload field and the script skips it.

html
<script defer data-website-id="ws_XXXXXXXX" data-track-forms="false" src="https://statsy.co/js/script.js"></script>

<form id="newsletter" data-statsy-ignore>…</form>

YouTube and Vimeo

Embedded players live in an iframe the page cannot see into, so their plays are not captured. If their player API is on the page, forward the events yourself:

js
player.on('play', () => statsy.goal('video_play', { video: 'Launch keynote', provider: 'vimeo' }));

Tip. Every automatic event is a normal goal name. Filter the dashboard by download, build a funnel from site_search to checkout_start, or set an alert when form_submit drops.

Frequently asked questions

Do automatic events cost plan events?

Yes, one each, the same as any goal. A site that sees 300 downloads a month uses 300 events for them. Switch off any capture you do not look at.

Why did a form submission count twice?

Two submit events within a second are folded into one, so a double click is not two submissions. A page that submits the same form again later counts again, correctly.

Are these visible on a public share link?

The Goals page is not part of public dashboards, so no.

Last updated · Markdown version