Privacy policy

Two kinds of data

There is data about you, our customer, and data your apps send us about their own usage. They are handled differently and stored separately.

Data about you

Your email address, so we can sign you in and contact you about the service. When paid tiers launch, payment details will be held by Stripe, not by us. Sign-in rate-limit records store an HMAC of your address and IP rather than either value in the clear, so the table holds nothing readable. The dashboard also stores what you enter into it: your display name if you set one; the email addresses of people you invite to an app (held before they have an account of their own); each app’s name, icon if you upload one, bundle id and platforms; event-catalog labels and descriptions and saved flow paths, with who created them; and short-lived sign-in link records, which expire after 15 minutes.

Data your apps send

Event names, timestamps, sequence numbers, flat properties you choose, a session id and a salted hash install id; and, once per batch, the app’s bundle id, version and build, the SDK version, OS name and version, device model, CPU architecture, locale, the device’s region setting and a debug-build flag; plus screen size and scale, light or dark mode and TestFlight status, which are real values only if your app supplies them (otherwise placeholders are sent). No IP addresses are retained with events. No advertising identifiers are collected at all. Nothing links one app to another. If your app calls identify(), the value you pass is hashed on the device with your salt before it is sent, so we never hold it in the clear — but the hash is the same on every device where your app identifies that account, so those devices’ events are linked. See the privacy and data handling page for the full list, including what the schema forbids outright.

This website

No cookies, no analytics scripts, no third-party embeds on the marketing site. It stores one thing on your device — your light/dark theme choice, in localStorage — and that never leaves the browser. The app sets one session cookie after you sign in, which is strictly necessary to keep you signed in. If you use the contact form, it collects the name, email address and message you type and mails them to hello@swiftstats.co so we can reply; the form also holds your IP address in memory to rate-limit submissions — until its ten-minute counter is pruned or the server instance is recycled, whichever comes first — and it is never written to storage. Sign-in sessions record neither your IP address nor your browser’s user agent.

Where it lives, and who else touches it

The site, the app and the ingest API run on Cloudflare Workers; your data is in a Cloudflare D1 database, and sign-in email goes out through Cloudflare. When paid tiers launch, payments will run through Stripe, which will hold your card details rather than us. Cloudflare and Stripe are our only subprocessors; nobody else is sent your data.

How long

Raw events for at least 90 days — the default and the shortest window we run, set per project up to 400. Daily rollups indefinitely, and each hashed install id with the first day it was seen, until you delete the app, which deletes all of them. Account records until you ask us to delete the account, after which they go within 30 days.

Your requests

Email hello@swiftstats.co to see, correct, export or delete what we hold about you. One caveat worth stating plainly: because install ids are salted hashes of a random id that never leaves the device, we cannot locate one of your app's end users from anything they could tell us. You, the developer, can do more: if your app calls identify(), you hold the account id and the salt and can recompute that user's hash; and you can ask us to erase every event and the first-seen record for a given install id (self-hosters run the backend's delete-install command). Those requests come to us from you, not from your users.

Children

The service is for app developers and is not directed at children.

Changes to this policy

Material changes will be announced by email and dated at the top of this page. Questions about anything here: hello@swiftstats.co.