Why an email didn't go out
Common failure modes and how to check.
Why an email didn't go out and how to fix it.
Common reasons
- Patron has opted out of that email type
- Email bounced previously and patron is flagged as undeliverable
- Cron job hasn't run yet (scheduled for later in the day)
- Email template is disabled in Settings → Email Templates
- Stripe webhook silently failed (for billing emails)
- Resend API key expired
Check the email log
Settings → Email Log shows:
- Last 30 days of attempted sends
- Status for each (Sent, Opened, Clicked, Bounced, Spam)
- Any error message
Check Resend dashboard
For deeper investigation, log in to Resend:
- Find the email by message ID
- See the SMTP response from the receiving mail server
- Diagnose bounces (mailbox full, invalid recipient, spam filter, etc.)
Patron opted out
Check Portal → Account → Notifications for that patron. If they've turned off the email type, that's the issue.
Bounce flag
Patrons with bounced emails get flagged. Settings → Patrons → Filter "Email bouncing" → see them. To unflag:
- Verify the email is correct
- Click "Reset bounce flag" on their profile
Test send
Settings → Email Templates → [template] → Test send to yourself. Verifies the template renders and Resend can send.
Still stuck?
Email hello@tryshelfwise.com with the message ID from Settings → Email Log — we can investigate Resend logs together.
Still stuck? Email hello@tryshelfwise.comand we'll get back within one business day.