Skip to content
All documentation

Deadlines & Reminders

Set due dates on deployed assignments and send escalating reminders to members who have not finished.

What it is

Every deployed course assignment can carry an optional due date (default null = no deadline). When a due date is set, an escalating reminder schedule fires: one reminder at 7 days out, then daily at 3, 2, and 1 day(s) before the due date, and daily past-due reminders. Reminders are in-app notifications (always) and, when the org has email delivery configured, email (gated by the deadline-reminder messaging toggle).

Use

  • Set a deadline: Admin → Smart Assignments → Deadlines. Pick a deployed assignment, enter a date and time, and save.
  • Clear a deadline: click the X button on an assignment row to remove the due date (no reminders will fire).
  • The initial assignment notification (course_assigned) fires at deploy time; the reminder schedule begins after that.
  • Reminders escalate: 7 days → 3 days → 2 days → 1 day → past due (daily). Each (assignment, member, bucket) fires at most once.

Setup

Deploy an assignment under Smart Assignments, then open Deadlines and set a due date. No further config is required for in-app reminders.

For email reminders, set RESEND_API_KEY in Vercel environment variables and toggle Deadline reminders on under Admin → Settings → Messaging.

Vercel Cron: add vercel.json crons (path /api/cron/reminders, schedule daily) and set CRON_SECRET; Vercel auto-injects the header on cron invocations. A lazy fallback fires when a member loads their inbox, so reminders still work without cron.

Security

  • Reminders only fire for members who have not completed the assignment's content (all modules in the referenced tracks/courses/paths).
  • A reminder is only sent once per assignment per member, even if the schedule is checked repeatedly.
  • If no email service is configured, email is simply skipped; in-app notifications are always delivered.
  • The scheduled job is protected by a secret token and is safe to re-run; running it twice on the same day sends nothing twice.
  • Assignment content refs are resolved server-side with org-scoped queries; a member can never receive reminders for another org's assignments.