Reminders are "fire and forget" — once a template is active and an event schedules a send, you don't think about it daily. But when a customer says "I never got my MOT reminder", the History and Scheduled tabs at Workshop Settings → Reminders are where you check what actually happened. History shows past sends; Scheduled shows queued rows that haven't fired yet.
What's in each log row
- Scheduled date — when this send is due (or was due)
- Channel — email or SMS
- Recipient — the customer's name + the address it went to
- Template — which template fired this send
- Vehicle / jobcard — for vehicle-driven reminders
- Status — one of
scheduled,sent,failed,cancelled - Error message — populated on
failed(e.g. "Insufficient credits") - Resolved body — the actual message body after placeholder resolution
Why "resolved body" matters
If a customer reports a confusing message, you can see exactly what they received — placeholders may have resolved to something you didn't expect (e.g. a missing customer name leaving "Hi ," at the top).
The four statuses
| Status | Meaning |
|---|---|
scheduled | Queued, not yet due |
sent | Successfully dispatched |
failed | Tried to send but failed. Reason in errorMessage |
cancelled | Manually cancelled (e.g. customer rebooked before the send fired) |
There's no separate bounced or insufficient_credits status — those manifest as failed with the cause in errorMessage.
"Send now"
A scheduled row exposes a manual Send now action that fires immediately instead of waiting for the cron — useful when a customer asks for the reminder right now. Note that only scheduled rows can be sent now; failed rows aren't retryable through this path (the action explicitly rejects any row whose status isn't scheduled). To re-attempt a failed send, schedule a fresh one-off.
Retention
Logs are retained indefinitely. They're cheap (one row per send, no attachments) so there's no automatic pruning.