communication
email_delivery
ai_generated
partial
SendGrid batch send returns 202 Accepted but some recipients don't receive email
ID: communication/sendgrid-batch-partial-failure-silent
70%Fix Rate
82%Confidence
3Evidence
2023-01-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| any | active | — | — | — |
Root Cause
SendGrid's v3 mail/send API returns 202 Accepted (queued) not 200 (sent). A 202 means SendGrid accepted the request, not that delivery succeeded. Batch sends with invalid/bounced recipients silently skip those recipients. No per-recipient status in the API response.
genericWorkarounds
-
95% success Set up Event Webhooks to track per-recipient delivery status
SendGrid Settings -> Event Webhooks -> Enable delivered, bounced, dropped events. Track delivery per recipient.
-
88% success Check suppression list before sending batches
GET /v3/suppression/bounces, /v3/suppression/blocks, /v3/suppression/spam_reports # check before sending
-
85% success Use personalizations array for per-recipient tracking
Each personalization gets a unique message_id. Use this to track delivery status per recipient group.
Dead Ends
Common approaches that don't work:
-
Assume 202 response means all recipients will receive the email
88% fail
202 = queued for sending, not delivered. Invalid addresses, bounced domains, and spam-flagged recipients are silently dropped after queuing.
-
Send to large batches without checking bounce/suppression lists
82% fail
SendGrid maintains a suppression list. Addresses on it are silently skipped. Sending to previously-bounced addresses hurts your sender reputation.