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.