The reminder engine

Every ~5 minutes a single scheduler finds due, armed, unfired reminders and delivers them — to the assignee, over exactly the channels the task named.

What it is

One cron serves two sources: pipeline Next Actions (a note to yourself on a lead) and tasks (delivered to the ASSIGNEE, who may not be the person who set it). It also handles the stalled intake-form nudges. Delivery stamps happen AFTER sending, so a crash mid-send re-fires rather than silently swallowing the reminder.

Also called: scheduled reminders · nudge me · reminder cron · does it actually go off

See it
The reminder engine
Apr
May
Jun
Jul
Ronan Petsch — Hobby Shop
Framing
Sutter Kline — Equipment Storage
Concrete
Gideon Alt — Hobby Shop
Trim
Ronan Petsch — Barndominium
Framing
Ronan Petsch — Equipment Storage
Concrete
Framing crewConcrete crewTrim crew
A timeline strip: task created 9:00, reminder armed, cron fires at 8:30 the next morning across bell + text + email. api/cron/reminders. Sample data — no customer information appears here.
How it works
  1. 1Tasks are selected where remind_at <= now, reminded_at is null, not completed, not deleted, limit 200.
  2. 2The task's own remind_channels array turns channels on; anything it does not name is off for this reminder.
  3. 3Structured facts are passed through, with the due date appended to the list if the junction did not already include it.
  4. 4Push rides its own transport (web push) with a per-task tag, exactly as the pipeline half does.
  5. 5reminded_at is stamped after delivery; re-scheduling a reminder clears it, which is what re-arms a snoozed task.
Why we built it

Migration 162 argued the merge: 'a reminder IS a task with a time on it; a task without a time is just a reminder nobody scheduled', so tasks gained the reminder machinery instead of a third system being built. The cron header states the delivery difference plainly: 'a pipeline next-action is a note to YOURSELF… A task reminder goes to the ASSIGNEE — who may not be the person who set it.'

The problem
  • Two half-systems that each did part of the job
  • Reminders lost when a send crashed halfway
  • Double-fired reminders
Sound familiar?
What you get
One scheduler that cannot drift out of step with itself
A reminder that survives a failed send rather than disappearing
What's inside

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →