Skip to content

Notifications catalog

Curated index of every email template the platform sends. The list is loaded from packages/notifications/src/templates/ at build time.

TemplateProductRecipientPurposeTrigger
cycle-requestPayrollClient contactInitial monthly request for client to start the intakecycle-initiate worker job (hourly cron, per-client 09:00 local)
reminderSharedEitherGeneric reminder for an outstanding actionsend-reminder worker job
approval-requestPayrollClient contactAsk the client approver to sign off on the cyclesend-approval-request worker job, after exec marks ready
client-action-requestPayrollClient contactAd-hoc data/document request from staff to a client contactsend-client-action-request worker job
bookkeeping-batch-readyBookkeepingStaff userA journal batch is ready for senior accountant reviewclassify-and-draft worker job at batch boundary
bookkeeping-upload-fileBookkeepingStaff userUpload file is ready to download and post into the accounting platformgenerate-upload-file worker job
reconciliation-magic-linkBookkeepingClient contactMagic link for client to respond to unreconciled itemsreconciliation dispatch action
reconciliation-client-responseBookkeepingStaff userNotify staff that a client has responded in the portalprocess-client-response worker job
reconciliation-completeBookkeepingStaff userFinal reconciliation report is readygenerate-reconciliation-report worker job

How to debug a missing email

  1. Open the Outbox page (/dashboard/outbox) and find the related event.
  2. If the event isn't there, the trigger never fired — check the Audit tab for the cycle / batch / run.
  3. If the event is there but the email didn't land, check the SMTP adapter (in dev: Mailpit at localhost:8025).
  4. For magic-link emails, the recipient sees a 48h-expiring URL. Resending re-mints a new token.

See also Outbox stuck runbook.

Internal use only — BreezyCorp