Email Queue
The Email Queue serves two purposes: it is an audit log of every email OSPROV sends, and a retry mechanism for failed deliveries. Every outbound email — successful or not — is recorded here.
Email failures do not block workflow progression. The workflow continues regardless of whether the email was delivered. Failures are captured here for later retry.
Navigate to Admin → Email Queues to access it.
Tabs
- Pending / Failed — emails that have not been delivered yet
- History — emails that were sent successfully
Status Meanings
| Status | What it means |
|---|---|
pending | Send attempt failed — queued for auto-retry |
failure | One or more retry attempts also failed |
completed | Delivered successfully |
Both pending and failure appear in the Pending/Failed tab and are eligible for retry.
Auto-Retry
A background job runs every 30 minutes and automatically retries failed emails.
Rules:
- Picks up emails with status
pendingorfailurewhere retry count < 3 - Increments the retry counter on the row before attempting
- Waits 10 seconds between each email to avoid flooding the mail server
- On success → marks row as
completed - On SMTP failure → marks the original row as
completedand creates a newpendingrow with retry count reset to 0
The 3-retry cap applies per row. Because SMTP failures create a fresh row, the same logical email can re-enter the retry queue repeatedly. In practice the system keeps attempting until it succeeds or an admin intervenes. If the same email keeps reappearing in the Pending/Failed tab, check the last_error — a persistent error (invalid address, mail server misconfiguration) will not self-resolve.
When OSPROV retries an email, it does not resend the stored email body. It re-runs the original notification logic fresh from the workflow submission and task configuration. If the email template was changed after the original failure, the retried email will use the updated template content.
What Admins Can Do
View an email
Click any record in either tab to open it. You can see:
- Full rendered HTML of the email — exactly what the recipient would receive
- To / CC / BCC recipients
- Subject (already resolved)
- Email type and linked submission
- Last error message from the most recent failure attempt
- Retry count
Manual retry
From the Pending/Failed tab, click Retry on any email to immediately attempt resend. Manual retry bypasses the 3-attempt cap — an admin can retry even after auto-retry has exhausted its attempts.
After a successful manual retry, you will see two completed entries in the History tab for that email — one from the resend and one from the original attempt being closed out. This is expected, not a bug.
What Each Record Contains
| Field | What it stores |
|---|---|
| Type | Which workflow function triggered it (Notification, Approval, Reminder, Document, etc.) |
| To / CC / BCC | All recipient addresses |
| Subject | Already resolved with placeholder values |
| Body | Full HTML with all placeholders substituted |
| Attachments | Filenames of any attached files |
| Linked submission | Click-through to the source submission |
| Last error | Exact error message from the most recent failure |
| Retry count | Number of auto-retry attempts made |
Auto-Cleanup
The same background job that handles retries also deletes old records:
| Rule | What gets deleted |
|---|---|
| Completed emails older than 30 days | Removed from History |
| All emails (any status) older than 4 months | Removed regardless of status |
If you need to retain email history longer for audit purposes, this requires a configuration change — raise it with your system administrator.
Troubleshooting
| Problem | Likely cause |
|---|---|
| Email in Pending/Failed but workflow already completed | Normal — email failure does not block the workflow. Retry from the admin panel. |
Placeholder shows as literal [fieldKey] text | Field key not found in submission data. Check Technical Properties — it's case-sensitive. |
| No recipients received the email | Role on Notification task has no users matching the workflow's auth channel. Consider ticking "Ignore Authorization Channel" on the task. |
| PDF attachment missing from email | PDF generation failed silently. Email was still sent without attachment. Check submission for the PDF and investigate document generation logs. |
| Same email appearing multiple times in History | Expected after retries. Each successful resend creates an additional completed record. |
| Email repeatedly reappearing in Pending/Failed | Each SMTP failure creates a new queue row with retries reset. Check last_error — if it's always the same error, fix the underlying issue (invalid address, mail server config) and manually retry. |
| Notification task not triggering | Check the Previous Status setting. If set to approved but the preceding task completed with a different status, the notification will not fire. |