Notifications
Frappe has two notification systems running in parallel: the Notification DocType for document-triggered alerts, and Email Account for sending the underlying email.
Notification DocType
Configures: "when DocType X reaches state/condition Y, send a message to recipient Z".
| Trigger | When it fires |
|---|---|
| New | Document created |
| Submit | Document submitted |
| Cancel | Document cancelled |
| Save | Any save |
| Days After / Days Before | Relative to a date field (e.g., 3 days before due_date) |
| Value Change | Specific field changed |
| Method | Custom Python function returns True |
Channels: Email, SMS, System Notification (in-app bell icon), Slack, MS Teams.
The message body uses Jinja with doc and frappe available — you can interpolate any field.
Example: invoice payment reminder
| Setting | Value |
|---|---|
| DocType | Sales Invoice |
| Trigger | Days After |
| Reference Date | due_date |
| Days | 3 |
| Condition | doc.outstanding_amount > 0 |
| Recipients | doc.customer (resolves to the contact email) |
| Subject | "Reminder: Invoice {{ doc.name }} is overdue" |
Email Account
Before any email can leave, configure at least one outgoing Email Account (SMTP) and the Default Outgoing setting in Email Settings. For multi-domain setups, register one Email Account per domain.
System notifications
In-app alerts appear in the desk bell icon. Users see unread counts and can mark as read. Useful for non-urgent updates ("Your report finished generating").
Templates
Recurring email content lives in Email Template — separate from any specific trigger. A Notification can reference an Email Template instead of inline content.