← All Features
Delivery

Smart Email Delivery

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.

How It Works

  1. 1

    When an envelope is created, an invitation email is sent to the first signer.

  2. 2

    When a signer completes, a notification email is sent to the next signer in the sequence.

  3. 3

    Reminders are sent automatically (configurable interval) or manually by the sender.

  4. 4

    Upon completion, all parties receive a final email with the signed PDF and Certificate of Completion.

  5. 5

    If SMTP fails, the email is queued in Redis and retried with exponential backoff.

  6. 6

    After 5 failed attempts, the email is marked as 'failed' and logged for manual review.

Technical Details

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).

Email Types

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.'

Custom Email Branding

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.

Ready to see it in action?

Create your free account and send your first document in under 3 minutes.

Get Started Free