Redis-backed queue. Exponential backoff. Never loses a message.
Every signing event triggers a precisely timed email — invitation, next signer notification, reminder, or completion notice.
When an envelope is created, an invitation email is sent to the first signer.
When a signer completes, a notification email is sent to the next signer in the sequence.
Reminders are sent automatically (configurable interval) or manually by the sender.
Upon completion, all parties receive a final email with the signed PDF and Certificate of Completion.
If SMTP fails, the email is queued in Redis and retried with exponential backoff.
After 5 failed attempts, the email is marked as 'failed' and logged for manual review.
Email delivery handled by email_service.py using aiosmtplib (async SMTP).
Redis queue (email_queue) stores pending emails with retry count and next_attempt timestamp.
Exponential backoff: delay = 30 * 2^retry_count seconds (30s, 2m, 8m, 32m, 2h).
4 Jinja2 templates: invitation.html, next_signer.html, reminder.html, completed.html.
Graceful degradation: if Redis is unavailable, emails are sent synchronously (slower but reliable).
Invitation: 'You have a document to sign from [Sender].' Next Signer: '[Previous Signer] has signed. It's now your turn.' Reminder: 'You have a pending signature request.' Completed: 'All parties have signed. Find the signed PDF and Certificate attached.'
White-label tenants can set custom email_from_name and email_from_address. For example, instead of noreply@iusign.com, emails arrive from contracts@yourcompany.com. The email templates also include your logo, brand colors, and organization name in the header and footer.
Create your free account and send your first document in under 3 minutes.
Get Started Free