Counting what visitors do
A counter tells you how many people came. Events tell you what they did: pressed the contact button, downloaded the guide, sent the form. Only how often is counted, never by whom.
1. Mark an element
Add the attribute data-s4u-event to any link or button. Every click on it is counted under that name.
<a href="/contact" data-s4u-event="contact">Contact</a>
<button data-s4u-event="guide-downloaded">Download</button>2. Or call it from a script
Where there is no click to catch, such as a form that was submitted or a video that reached its end, call the function yourself:
<script>
s4u.event('form-sent');
</script>3. Or count every link automatically
Tick “Also count link clicks” in the settings of your counter (during setup, or later in the owner box of its statistics page). Each click on a link is then counted under its target, not its link text: pages of your own site by their path, links to other sites by their host. An element that carries data-s4u-event itself is counted once, under the name you gave it.
Rules for names
Names are lowercase and use only a–z, 0–9, hyphen and underscore, at most 32 characters; anything else becomes a hyphen. A counter can hold at most 100 different names. Automatic link clicks may use up to 70 of them, the rest is kept for names you set yourself. Once the limit is reached, existing names keep counting and no new ones are added. One address may send at most 300 events per hour.
What must not be in a name
A name is shown on the public statistics page. Put nothing in it that identifies a person: no name, no e-mail address, no phone number, no order or customer number, no token. Names that contain an @, a long run of digits or a long random-looking code are rejected automatically. A plain name such as “jan-kowalski” cannot be recognised and would be stored, so never build names from what a visitor typed.
What is stored
One row per counter, day and name, with a number behind it. No visitor, no address, no order of clicks. From “contact: 14” it is impossible to tell who clicked.
Where you see it
On the statistics page of your counter, in the section Pages: the card “What visitors did”, with the course over time and, once there is enough data, which events rose or fell compared with the period before.
Several counters on one page
By default an event belongs to the first counter on the page. To choose another one, add its number: data-s4u-id="12345" on the element, or s4u.event('name', '12345') in a script.
Website insights
Measurements run only for features you enable. Saving disabled settings stops future collection.
Notes are private by default. Public notes are visible to everyone who can view the statistics.
Use short campaign labels without names, email addresses or customer IDs. Campaign values are limited; unrecognized values are ignored.
Choose two to eight steps. Use page:/contact or event:contact, one per line. Steps must occur in order within a visit; other activity may occur between them. A visit ends after thirty minutes of inactivity or at the day boundary. Reports count visits, not unique people.
Only action categories and names are counted. No phone numbers, email addresses or form field values are sent. A submitted form does not prove success. Confirm success with s4u.formSuccess('contact') or a supported WordPress form integration.
<form data-s4u-form="contact">…</form>
s4u.formSuccess('contact');Sales
Connect the shop using its counter number and shop secret. Report only confirmed payments and refunds. Net sales are paid amounts less refunds; counts of paid orders remain unchanged by refunds.
My dashboard
Choose which reports appear and in what order. Hidden cards are not loaded. The arrangement is private; readers use the standard arrangement.
Saved views
Save the current period and supported filters for another visit. Only the owner can see saved views. Relative periods move with the date; custom start and end dates stay fixed.
Page groups
Group related pages, for example /blog/* for the blog. The final * matches paths starting with that prefix. Up to ten groups with eight rules each are supported. Groups may overlap, so their visitor counts must not be added together.
Page views use available stored page totals and may include bots according to the counter setting. Group visitors and goals start being recorded when the group is created. Visitors count once per group per day, not once across the entire period.
Event properties
Define up to ten property names and up to twenty allowed values per property before sending them. Use fixed categories such as plan=basic, never names, email addresses, order numbers or form input. Each property is counted separately; combinations are not inferred.
At most five properties are accepted per event and 500 event/property/value combinations per counter/day.
Core Web Vitals
Measures loading (LCP), response to interactions (INP) and layout shifts (CLS) in supported browsers. Missing measurements are not zero. No INP is reported without interaction. Measurements start after enabling.
The 75th percentile is estimated from bounded histogram buckets. Up to 100 page/device combinations are retained per counter/day. Values at the last bucket mean at least that value. Browser measurements do not include all cross-origin iframe activity and are not identical to Google's CrUX data.
Enable optional Web Vitals measurement
Website statistics report
Choose a period and cards, then use your browser's print dialog to print or save a PDF. Owner-only notes are included only when opened with the owner key.
Dashboard and tools
Connect your own counter with its owner key. You can also paste the complete management link. Connected counters are remembered in this browser session; changing the owner key removes access.
Scheduled reports
Choose a saved view and weekly or monthly delivery to your confirmed owner email address. Filters and selected reports are reused; the report covers the previous complete week or month in the counter's timezone. Private notes are omitted. No mail is sent until you enable a schedule.
Embed a statistics card
Choose one report and its filters. The generated iframe uses a separate read-only key, expires on the selected date and can be revoked here. Private notes and owner actions are never included.
Statistics API
Create a separate read-only API key with selected reports. Send it as an Authorization: Bearer header; never use your owner key in scripts. API keys can be revoked and expire. JSON and CSV contain aggregate data only.
Exports cover at most 400 days and 500 rows per report. Counts of visitors and goal visitors are daily totals; overlapping groups must not be added together. Web Vitals percentiles use histogram estimates and require enough samples.