A Notion reminder is a reminder you might get. Nagger checks your tasks every minute and pushes the moment one comes due — with a Done ✓ button that marks it complete back in Notion.
“If you have Notion open on a mobile device or computer, you won't receive push or email notifications for reminders.”
— Notion's own help documentationAdd battery-saver mode suppressing them entirely, and you have something fine for a nice-to-have and useless for a 5am habit.
One-time payment. No subscription. Includes the full source and all future updates.
Cloudflare cron (every minute)
└── worker ──> your Notion tasks database
└──────> push ──> your phone
└── tap "Done ✓" ──> Notion ✓
That's the whole system. It runs on Cloudflare's free tier, on a schedule that fires every minute, and it costs nothing to keep running.
Every other Notion reminder tool asks you to hand over a token that can read your entire workspace, then runs it on their servers. Nagger runs in your Cloudflare account with your token.
Your tasks are never visible to me or anyone else. There is no server of mine involved at any point — I have nothing to breach and nothing to sell. That is also why there's no subscription: deploy it once and it keeps running.
npm run setup # finds your database, detects your columns
cd worker && npm install
npx wrangler deploy
npm run setup lists every database you've shared with your Notion integration,
auto-detects which columns are the task name, due date and done flag, and writes the config
for you. You don't hand-edit anything.
curl https://your-worker.workers.dev/doctor
/doctor then validates the whole setup against your real database and
tells you precisely what's wrong if anything is — wrong column name, wrong property type, a
“Done” value that isn't one of your actual options, an unreachable push server.
Not the other way round. Whatever shape your tasks database is already in:
| Your setup | Works |
|---|---|
| Done marked by a status property | Yes |
| Done marked by a select property | Yes |
| Done marked by a checkbox | Yes |
| Due date property including a time | Yes |
Date-only, with times in a separate text column (5:00, 7pm) | Yes |
| Date-only, no time anywhere | Yes |
| Any timezone, DST included | Yes |
This has been running against a live database with a year of history. These are in here because they had to be:
This is a self-host template, not an app. There's no “Connect Notion” button and no account to sign into. You deploy it yourself, to infrastructure you own. If you want something that works from an App Store download with no terminal, this isn't it — and I'd rather tell you now than take your money.
npx wrangler deploy.Free, on free tiers, at any realistic personal volume.
| Service | Free allowance | Nagger uses |
|---|---|---|
| Cloudflare Workers | 100,000 requests/day | ~1,440 (one per minute) |
| Cloudflare KV | 1,000 writes/day | One per task nagged |
| ntfy (public server) | Free | — |
| Notion API | Free | — |
For yourself. Deploy to as many of your own Cloudflare accounts as you like, forever, including all future updates.
For deploying inside an organisation. Same code, licensed for company use.
You'll be invited to the private GitHub repo immediately after purchase, and stay invited for every future update.
No. There is no server of mine anywhere in the system. Your Notion token is stored as a secret in your own Cloudflare account, and the worker talks directly to Notion's API. I have no way to see your tasks even if I wanted to.
Because it delivers a real push notification with an action button on it, for free, without you registering an app with Apple. The Done ✓ button is the part that makes this useful rather than merely noisy, and email can't do that.
Effectively, yes — anyone who knows it can read your notifications. Setup generates a long random one for you. Keep it, don't share it, and don't put it in a screenshot.
Push is isolated behind a single function in one readable file, and the README lists the alternative servers I verified as reachable from Cloudflare — Pushcut, Pushover, Telegram, Discord, Alertzy. Swapping is a small change, and you have the source.
Maybe, if enough people ask. It would mean holding your Notion token on my server, which is exactly the thing this version avoids — so it would be a different product with a different trade-off, not a replacement for this one.
Yes, if it doesn't work for you — email me. The requirements section above is deliberately blunt so you can decide before paying rather than after.