This is what I see.
So do you.

The app collects anonymous usage statistics. I think you simply deserve to know what I see — not because I'm showing off, but because you have the right to check it. This page shows the exact data model, what is not in it, and what the dashboard looks like in practice.

What's stored in the database

Every time the app is opened, it sends a small signal to the server. That signal is not stored as a separate record — it's added directly to an existing row. The table is called app_usage_daily and has one row per unique combination of the fields below, per day.

Field Meaning Example
dayDate (UTC)2026-06-03
app_versionApp version1.2.1
platformDevice typeios / ipados
countryCountry code (ISO-2)NL
regionProvinceNorth Holland
cityCity (see privacy threshold ↓)Amsterdam
license_stateLicense statustrial / free / licensed
countNumber of app opens for this combination7

Here's what a real row looks like:

app_versionplatformcountryregioncitylicense_statedaycount
1.2.1 ios NL North Holland Amsterdam free 2026-06-03 7

That count: 7 means: on 3 June 2026 the app was opened 7 times by someone (or several people) on an iPhone in Amsterdam, free version 2.1.0. There's no way to know whether this was one person or seven.

Session statistics

In addition, the app sends a second signal when a session ends. That's aggregated in a separate table: session_usage_daily. This lets me see how many real resuscitations take place, without knowing the exact duration.

Field Meaning Example
dayDate (UTC)2026-07-08
app_versionApp version1.2.1
platformDevice typeios / ipados
countryCountry code (ISO-2)NL
regionProvinceNorth Holland
cityCity (see privacy threshold)Amsterdam
session_bucketDuration categorytest / short / long
countNumber of sessions for this combination3
total_setsTotal sets (summed)12
total_shocksTotal shocks (summed)4

The three duration categories:

The exact duration is never sent. Sets and shocks are summed per bucket, not per individual session.


What I don't see


Privacy safeguards

Summed per day
No time per open — just a daily total per combination. How often you open the app in a single day looks like one number.
Small-cell suppression
A city is only shown from 5 opens onward. Smaller counts are only visible at province level. That way a single user in a small village can never be traced.
Can be turned off
You can turn this off completely via Settings → Privacy in the app. Then the app sends nothing at all.
No dev builds
Development and TestFlight builds send nothing. Only the App Store version sends statistics, so test data doesn't muddy the figures.

What my dashboard looks like

The view below is filled with example figures — not the real data. The layout, the fields and the privacy threshold are identical to the real dashboard.

Example data — not the real figures. Structure and layout are identical to the real dashboard.
Usage statistics · last 90 days · fully anonymous and aggregated · stored within the EU (Supabase)
1.847
App opens (total)
74
Active days
8
Countries
3
App versions
Per day (last 30 days) · 623 opens
5 May3 Jun
By license status
free1.102
trial498
licensed247
By app version
1.2.11.431
1.2.0318
1.1.098
By country
NL1.563
BE142
DE87
other55
By province (NL)
Noord-Holland487
Zuid-Holland341
Noord-Brabant218
Gelderland164
other353
By city (NL) — privacy threshold
Only cities with ≥ 5 opens are shown by name. Smaller counts still count toward the province score but can't be traced to an individual.
Amsterdam203
Rotterdam148
Den Haag112
Utrecht94
Alkmaar67
Eindhoven51
Breda38
Nijmegen27
Haarlem19
Zwolle12
14 smaller cities hidden (31 opens) — below the privacy threshold of 5
Session statistics · last 90 days · fully anonymous and aggregated
312
Sessions (total)
87
Real resuscitations
3.4
Avg. sets per session
0.8
Avg. shocks per session
By duration category
test (< 2 min)198
short (2-20 min)82
long (> 20 min)32
Total sets & shocks
Sets (all sessions)1.064
Shocks (all sessions)247

Questions about the data? Email info@bennit.nl. Full privacy policy: Reanimatie Timer Privacy Statement.