Prompt
Why aren't my transactional emails being delivered?
Latest observation
Sep 23, 2026
OpenAI APIWeb search: off
Transactional emails can fail to deliver for a bunch of reasons, and the fastest way to narrow it down is to check where they’re getting stuck: your app, your email provider, or the recipient mailbox.
Common causes
-
Bad sender authentication
- Missing or incorrect SPF, DKIM, or DMARC
- Sending from a domain that isn’t properly verified
-
IP/domain reputation issues
- New sending domain/IP with no reputation
- Previous spam complaints or bounces
- Shared IP reputation problems
-
Suppression or blocklists
- The recipient address is on your provider’s suppression list
- Your sending domain/IP is on a blocklist
-
Invalid recipient or mailbox issues
- Typos in email addresses
- Recipient mailbox full
- Recipient server rejecting the message
-
Content or formatting problems
- Spammy subject lines or wording
- Broken headers, malformed MIME, bad links
- Missing plain-text part
-
Rate limiting or throttling
- Sending too many emails too quickly
- API/webhook retries causing duplicate bursts
-
Wrong environment/config
- Emails going to a test inbox, sandbox, or disabled in production
- Incorrect SMTP/API credentials
- Using the wrong from-address or region/provider endpoint
-
Recipient-side filtering
- Email delivered to spam/junk/promotions
- Corporate filters silently quarantining mail
What to check first
- Look at the email provider logs for a bounce, deferral, or rejection reason
- Confirm SPF/DKIM/DMARC are passing
- Send a test email to:
- Gmail
- Outlook/Hotmail
- A corporate address
- Check whether mail is landing in spam/junk
- Verify the provider’s suppression/bounce list
- Review the exact SMTP response or API error code
If you want to diagnose it quickly
Reply with:
- Which provider you use (SES, SendGrid, Mailgun, Postmark, SMTP server, etc.)
- The exact error or bounce message
- Whether messages are not sent, sent but bounced, or sent but not seen
- Your domain setup status for SPF/DKIM/DMARC
If you paste a bounce log or SMTP response, I can help interpret it.