SendGrid Suppressions: How to Export Bounces, Blocks and Unsubscribes and Clean Your List
SendGrid splits suppressed addresses into six lists: bounces, blocks, invalid emails, spam reports, global unsubscribes and group unsubscribes. Export each one as CSV from the Suppressions section (or through the v3 suppression API), merge them into one suppression file, and never mail spam reports or unsubscribes again. Keep hard bounces and invalid emails out unless a fresh verification says the mailbox now exists. Blocks are the exception: they are often real mailboxes rejected because of your reputation, so re-verify them and retry carefully once your sending is healthy.
The six SendGrid suppression lists
| List | What put the address there | Mail it again? |
|---|---|---|
| Bounces | Permanent rejection, e.g. mailbox or domain doesn't exist | Only after a fresh check returns valid |
| Blocks | Rejection SendGrid treats as non-permanent: IP or domain reputation, content, policy | Often, after re-verifying and fixing the cause |
| Invalid emails | Malformed address or a domain that can't receive mail | Fix obvious typos, otherwise no |
| Spam reports | The recipient clicked "report spam" (via feedback loops where available) | Never |
| Global unsubscribes | Unsubscribed from all your mail | Never |
| Group unsubscribes | Unsubscribed from one unsubscribe group (newsletter, product updates) | Only for the other groups they still accept |
SendGrid stops sending to addresses on these lists automatically while they sit there. The problem starts when you move the list somewhere else: a new ESP, a cold email tool, a CRM import. The suppressions don't come with you unless you export them. That is how a team that "never bounced" on SendGrid suddenly bounces on the next platform. See deliverability dropped after an ESP migration.
How to export them
From the SendGrid app
- Go to Suppressions in the left menu.
- Open each list in turn: Bounces, Blocks, Invalid Emails, Spam Reports, Global Unsubscribes, and the unsubscribe groups.
- Use the export option on each list to download a CSV. Bounce and block exports include the reason text the receiving server returned, which is useful later.
Repeat for every subuser if your account uses subusers: suppressions are kept per subuser.
Through the v3 API
If you have many subusers or want this on a schedule, the v3 API has an endpoint for each list:
GET /v3/suppression/bouncesGET /v3/suppression/blocksGET /v3/suppression/invalid_emailsGET /v3/suppression/spam_reportsGET /v3/suppression/unsubscribes(global)GET /v3/asm/groups/{group_id}/suppressions(per group)
They accept time-range and paging parameters. Use an API key scoped to read suppressions only, and check SendGrid's API reference for current parameter names and limits before scripting against it.
Email activity logs
People searching "sendgrid export email logs" usually want delivery events for specific messages. The Email Activity feed shows them, and CSV export is available on plans that include it; retention depends on the plan. For building a clean list, the suppression exports are enough. Use activity data when you need to know which campaign produced the bounces. See find which list source caused bounces.
Read the bounce and block reasons
The reason column decides what to do with each address. Paste a batch into the bounce message analyzer and group them:
- Mailbox doesn't exist (
550 5.1.1, "user unknown", "no such user"): permanent. Keep suppressed. - Domain doesn't exist or has no mail server: permanent unless the company has moved domains.
- Mailbox full or inactive: treat repeated cases as dead. See mailbox full bounces.
- Reputation or policy (blocked by Spamhaus, "rejected due to policy", rate limiting,
421/4.7.x): this is about you, not the recipient. These addresses are often fine. - Content (message flagged as spam, URL on a blocklist): fix the message, the address may be fine.
If the reasons are buried inside raw bounce emails rather than a CSV, the bounced email extractor pulls the addresses and codes out.
The split matters because it changes how big your "dead" list really is. A block list full of policy rejections is a sending reputation problem; re-mailing those people from a clean domain later is reasonable. A bounce list full of 5.1.1 is a data problem; those addresses are gone.
Which addresses to re-verify
Never re-verify spam reports or unsubscribes to "get them back". They opted out. Keep them suppressed everywhere.
Worth a fresh mailbox check:
- Blocks. Run them through verify. Addresses that come back valid are real mailboxes; once your domain and IP are healthy again, they can return to the list in small batches.
- Old soft bounces that landed on the bounce list after repeated failures, especially mailbox-full and temporary-failure codes.
- Hard bounces older than a year, only if they are valuable contacts. Mailboxes rarely come back, but a domain that was misconfigured during a migration sometimes does.
For any address you do bring back, delete it from the SendGrid suppression list first (UI or API), or SendGrid will keep dropping it. Releasing hard bounces from suppression walks through when that is safe.
A verifier reports some addresses as catch-all or unknown: the receiving server accepts any address, so the mailbox can't be confirmed. Don't treat those as valid. Keep them out of the re-send batch or put them in a small separate segment. See catch-all emails: what to do.
Build one suppression file
You now have up to six CSVs per subuser, plus whatever other tools hold. Merge them:
- Combine every export, plus unsubscribes from other platforms, in the suppression list merger. It lowercases, trims and dedupes.
- Keep a
reasoncolumn (spam_report,unsubscribe,hard_bounce,invalid) so you know later why an address is there. - Remove the re-verified blocks you decided to keep.
- Store the file somewhere every list import goes through. Apply it before any upload to a new ESP, a cold email tool or a CRM.
Then clean the live list itself: remove everything on the suppression file with compare email lists, remove duplicates, and verify what remains. A list that was clean six months ago isn't now; mailboxes close every month. If SendGrid has already flagged your account for bounces, SendGrid account review for bounces covers what to fix before you send again.
A routine that keeps the lists short
- Verify new imports before they reach SendGrid, not after they bounce.
- Export and merge suppressions monthly, and every time you add a sending tool.
- Re-verify segments you haven't mailed in 90 days before sending to them.
- Keep spam reports and unsubscribes permanent across every platform.
What it costs
- Pro, $39 a month: Unlimited email verification.*
- Starter, $9 a month: 2,500 emails a month.
- Free: the first 100 checks with a Google sign-in, no card.
*Fair use: the first 100,000 checks a month at full speed, then slower, never cut off.
Pro also includes the email finder, an API with 10,000 calls a month included and an MCP server for AI agents. The API, phone checks and the finder are not part of Unlimited. Compare plans on the pricing page, or upload a CSV on the verify page.
More reading: hard bounce vs soft bounce, email list hygiene policy template.
Common questions
What is the difference between a SendGrid bounce and a block?
A bounce in SendGrid's sense is a permanent rejection, usually because the mailbox or domain doesn't exist. A block is a rejection that SendGrid treats as temporary or policy-based, often because the receiving server didn't like the sending IP, the domain's reputation or the content. Blocked addresses can still be real mailboxes.
How do I export my SendGrid suppression list?
In the SendGrid app, open Suppressions, pick the list (Bounces, Blocks, Invalid Emails, Spam Reports, Global Unsubscribes or Group Unsubscribes) and use the export option to download a CSV. You can also call the v3 suppression endpoints, such as /v3/suppression/bounces, with an API key that has suppression read access.
Can I remove an address from the SendGrid bounce list?
Yes, you can delete entries in the UI or through the API, and SendGrid will mail them again. Only do that after the address passes a fresh mailbox check, or you will just collect the same bounce and hurt your reputation.
Can I export SendGrid email activity logs?
The Email Activity feed can be searched and, on plans that include it, exported as CSV. Retention and export limits depend on your plan and add-ons, so check SendGrid's current docs. For list cleaning, the suppression lists are usually what you need, not the activity feed.
Check your list before you send
Real mailbox checks over SMTP, and nothing is sent to the address. Sign in with Google and your first 100 email checks are free, no card. Plans for bigger lists are on the pricing page.