Self-hosted · One-time payment

Notion reminders that actually reach your phone

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 documentation

Add 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.

How it works

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.

You host it. That's the point.

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.

Setup is three commands

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.

It adapts to your database

Not the other way round. Whatever shape your tasks database is already in:

Your setupWorks
Done marked by a status propertyYes
Done marked by a select propertyYes
Done marked by a checkboxYes
Due date property including a timeYes
Date-only, with times in a separate text column (5:00, 7pm)Yes
Date-only, no time anywhereYes
Any timezone, DST includedYes

Details that took real running to find

This has been running against a live database with a year of history. These are in here because they had to be:

Requirements — please read this

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.

What it costs to run

Free, on free tiers, at any realistic personal volume.

ServiceFree allowanceNagger uses
Cloudflare Workers100,000 requests/day~1,440 (one per minute)
Cloudflare KV1,000 writes/dayOne per task nagged
ntfy (public server)Free
Notion APIFree

Pricing

Personal

$29 once

For yourself. Deploy to as many of your own Cloudflare accounts as you like, forever, including all future updates.

Team / Commercial

$99 once

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.

Questions

Do you ever see my Notion data?

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.

Why ntfy and not just email or SMS?

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.

Is the ntfy topic name really a password?

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.

What if the push server goes down?

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.

Will you build a hosted version I can just sign into?

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.

Can I get a refund?

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.