# 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.

Section: Tracking script  
Canonical page: https://statsy.co/docs/tracking-script/auto-captured-events  
Last updated: 2026-09-22

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

| Event | When | Properties |
| --- | --- | --- |
| `site_search` | A page loads with a search query in its URL, or you call statsy.search(). | query, page, results (when you pass it) |
| `download` | A click on a link to a file, or on any link with a download attribute. | url, file, ext |
| `form_submit` | A form is submitted, including forms your code submits with fetch. | form (id, name or action), fields (count) |
| `video_play` | An HTML5 video starts for the first time on the page. | video (title or file), duration |
| `video_progress` | That video passes 25, 50, 75 and 100 percent. Each milestone once. | video, duration, pct |
| `file_upload` | A visitor picks files in an upload field. | files (count), type (image, video, application…), kb |
| `outbound` | A click on a link to another domain. | url |
| `checkout_start` | A 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.

| Attribute | Default | Stops |
| --- | --- | --- |
| `data-track-search` | true | site_search from the URL (statsy.search() still works) |
| `data-track-downloads` | true | download |
| `data-track-forms` | true | form_submit |
| `data-track-video` | true | video_play and video_progress |
| `data-track-uploads` | true | file_upload |
| `data-track-outbound` | true | outbound |

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.

Previous: [JavaScript API](https://statsy.co/docs/tracking-script/javascript-api)  
Next: [Custom events](https://statsy.co/docs/tracking-script/custom-events)