Privacy

Privacy policy

What notifi stores, for how long, and what our server can read.

Last updated 25 September 2026

Who runs notifi

Maximilian Mitchell, based in the United Kingdom, runs notifi and is the data controller for everything this policy describes. Contact: hello@notifi.it, or github.com/notifi-it/notifi/issues for anything you are happy to discuss in public.

There is no account

notifi has no sign-up, no email address, no password and no device linking. On first launch the app generates two keypairs on the device. The private halves never leave it: the Secure Enclave holds the signing key and cannot export it, and the keychain holds the decryption key, marked to stay out of iCloud backups and off your other devices.

The server identifies a device only by its public key. Nothing in the system links that key to a name, an email address or any other identity.

What the server stores

Your device

Your send keys

Your notifications

What the server cannot read

The server encrypts notification content (the title, body, link and image URL) to your device’s public key before writing it to the database, using HPKE (P-256 / HKDF-SHA256 / AES-256-GCM). The server holds no private key that can undo this. Someone holding a full copy of the database and every server secret could not read a single notification. The server encrypts your send key names the same way.

A /send request arrives at the server as plaintext, so for the instant between arrival and encryption the content passes through the server’s memory in the clear. The server encrypts it before storing it and leaves it out of notifi’s error reports. If you send with a POST body rather than the URL, the logs don’t record it either. The claim "neither we nor Apple can read your notifications" covers stored and delivered notifications.

What the server can see

Encryption does not hide that a notification happened. The server observes:

Because the sender and the recipient both talk to the same server, that server can correlate the two. If your threat model does not allow for that, notifi is the wrong tool.

How long the server keeps it

Server logs

The service runs on Cloudflare Workers, and two logs record its requests. Cloudflare records the metadata of requests reaching its network, including source IP address, timestamp and the full request URL; those logs are Cloudflare’s own. notifi also enables Cloudflare’s request-log stream for the Worker, which records the same metadata for notifi to read; Cloudflare keeps it for a few days. Neither log contains notification content unless you put it in the URL.

Do not put the key in a URL. The /send endpoint accepts a key and a body as URL query parameters, which is convenient for a one-off curl. Anything you put in a URL appears in both logs in the clear, before encryption, and in your shell history and any proxy between you and Cloudflare.

Send the key as an Authorization: Bearer header and the body in a POST body instead. Neither appears in the logs.

When the server hits an error it cannot handle, it sends a report to Sentry, an error-tracking service, so that notifi can fix the error. A report carries the failure itself (what broke, and where in the code) and the request’s method and route. It does not carry notification contents, request bodies, headers, the source IP address, or any identifier of your device or your notifications. Before a report leaves the server, the server replaces any send key involved in the failed request with a short one-way fingerprint of it. The fingerprint shows that several reports concern the same key, and no one can reverse it to recover the key.

Images in notifications

A notification can carry a link to an image, and whoever sent the notification chooses the host that serves it. To load the image, your device requests it from that host, which reveals your IP address, your rough location, and the exact moment the notification reached you. A sender can use this to tell whether and when you received something.

The app shows a placeholder until you tap it. To load images on arrival, turn on Load images automatically in Settings.

On your device

Tracking, analytics and third parties

The app contains no analytics, no crash reporting and no advertising identifiers. The error reporting under Server logs is the server’s own, and the app takes no part in it. The app talks to notifi.it and Apple’s push service, and to an image host only when you ask it to load an image. The Mac app you download from this site also embeds Sparkle, an open-source updater. Once a day Sparkle asks notifi.it for the latest release, and notifi.it redirects it to github.com to fetch it; each check exposes your IP address and its timing to those two hosts and carries nothing else about you.

This website sets no cookies and serves its fonts from notifi.it. Cloudflare, which hosts the site, injects its Web Analytics script into the pages: it counts visits without cookies, without a persistent identifier and without following you to other sites, and notifi reads the counts as daily totals. It is the site’s one analytics tool and its one third-party request. Nothing on the site tracks you across sites or over time, so a Do Not Track signal changes nothing: there is no tracking to turn off, and no third party collects data about your activity elsewhere through this site.

Four parties handle data in the ordinary running of the service: Cloudflare (hosting, logs, site analytics), Apple (push delivery), Sentry (error reports, limited as above) and GitHub (serving Mac app updates). notifi sells, rents and shares no data with anyone else, and uses none of it to build a profile or to advertise.

The service also fetches public App Store reviews of notifi from Apple (reviewer name, country, rating and text) and shows them on this site. They are public on the App Store already, and if you ask Apple to remove a review, it disappears here too.

The legal bases

Under UK and EU law, notifi registers your device, stores your keys, and holds and delivers encrypted notifications as performance of the agreement in the terms: that processing is the service itself. It runs IP-based rate limiting, the request logs and the error reporting under legitimate interests: keeping the service available and preventing abuse. No law requires you to provide any of this data, but delivery needs it, and the service cannot work without it. notifi makes no automated decisions about you and builds no profiles.

Where the data lives

Cloudflare answers requests at whichever of its data centres is nearest, which may be outside the UK or the EEA; the database is a single Cloudflare D1 instance. Sentry (Functional Software, Inc.) is a US company. Both are certified under the EU-US Data Privacy Framework and its UK extension, and both process data under their standard data-processing agreements (Cloudflare’s, Sentry’s), which include EU standard contractual clauses and the UK addendum as fallback.

Your rights

UK and EU law gives you rights over data notifi holds about you: access, correction, erasure, restriction, portability and objection. The server cannot tell which records are yours without your device’s public key, so include it in your request; the app can show it. Send requests to hello@notifi.it. Deleting the app is faster and more complete for everything except the device row itself. You can also complain to the Information Commissioner’s Office or the supervisory authority where you live.

Children

notifi is not directed at children. It has no accounts and no profiles; the closest things to identifiers it handles are an IP address and a device’s public key, and it handles them the same way for everyone.

Changes and contact

This policy may change with the law, Apple’s requirements or the service. The date at the top changes with it, and the git history keeps old versions. notifi announces material changes here first.

Email hello@notifi.it or open an issue at github.com/notifi-it/notifi/issues.