SendGrid, Mailgun, Postmark and SES suppressions to one list, soft bounces split out
In short: Reads bounce, block, spam report, unsubscribe and suppression exports from SendGrid, Mailgun, Postmark and Amazon SES, several pasted together, and sorts each address: complaints, unsubscribes and hard bounces to the suppression list, soft bounces and blocks to a re-check file. Limit: Each row is read by its reason, type or SMTP code; unusual reason text with no code can land in the wrong group, and the category column shows how it was read.
Export the bounce, block, spam report and unsubscribe lists from SendGrid, Mailgun, Postmark or Amazon SES and paste or upload them, one after another if you have several. Complaints, unsubscribes and hard bounces become one suppression list; soft bounces and blocks, which say more about the sending server than the address, go to a re-check file.
Price: this tool is free. Checking a whole email list is from $9/mo, and the first 100 checks are free with Google, no card. See pricing
Sample result
SendGrid, Mailgun and Postmark exports: 4 to suppress, 3 soft bounces and blocks to re-check.
- Address
- [email protected]
- Service
- SendGrid
- Read as
- Block
What this means for you
A Spamhaus block is about your sending IP, not the address, so it goes to the re-check file.
- SendGrid, Mailgun, Postmark, SES
- Several exports pasted at once
- Complaints and hard bounces kept out
- Soft bounces split out
- 5.1.1
- 4.2.2
- CSV
By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us
Can I take soft-bounced addresses off a suppression list?
- Download the re-check file of soft bounces and blocks.
- Upload it at /verify for a live mailbox check. The first 100 email checks are free with a Google sign-in, no card.
- Release only the valid ones in your email service; keep the rest, and every complaint and unsubscribe, suppressed.
How do I export and combine suppression lists from SendGrid, Mailgun, Postmark or SES?
- SendGrid: Suppressions > Bounces, Blocks, Spam Reports, Invalid Emails or Global Unsubscribes, then Export CSV. Mailgun: Sending > Suppressions, then download the bounces, complaints and unsubscribes. Postmark: the message stream's Suppressions tab, or the suppressions API. SES: list-suppressed-destinations, saved as CSV.
- Paste the files one under another, header rows included, or upload one. Each new header row is read as a new file.
- Choose whether soft bounces and blocks go to the re-check file (the default) or straight onto the suppression list.
- Download the suppression list for every tool you send from, and the re-check file.
Example
- You enter
- A SendGrid bounces export (a 5.1.1 user unknown, a 4.2.2 full inbox, a 5.7.1 Spamhaus block), a Mailgun bounces export (550 no such user, 421 timeout) and a Postmark suppressions export (SpamComplaint, ManualSuppression and a HardBounce for an address SendGrid also bounced), pasted one under another.
- You get
- Suppression list of 4: 2 hard bounces, 1 spam complaint, 1 unsubscribed (manual suppression); the repeated hard bounce merged. Re-check file of 3: 2 soft bounces and the Spamhaus block, which was about the sending IP.
- Limits
- Runs in your browser with no row cap; an uploaded file can be up to 25 MB.
Which suppressions are permanent and which are worth a second look?
Spam complaints and unsubscribes are a person's choice and stay suppressed for good. Hard bounces (5.x.x codes such as 5.1.1, "user unknown") mean the address doesn't exist, per RFC 3463. Soft bounces (4.x.x codes, mailbox full, timeouts) are temporary. Blocks are rejections of the sending server, often for its IP reputation; SendGrid keeps them on a separate list from bounces for that reason.
So the default here: complaints, unsubscribes and hard bounces go to the suppression list, soft bounces and blocks to a re-check file. Untick the options to suppress them too.
Which columns does each service export?
SendGrid suppression exports use email, created, reason and status. Mailgun bounces use address, code, error and created_at, its complaints and unsubscribes address and created_at. Postmark suppressions use EmailAddress, SuppressionReason (HardBounce, SpamComplaint, ManualSuppression), Origin and CreatedAt. Amazon SES's account-level suppression list gives EmailAddress, Reason (BOUNCE or COMPLAINT) and LastUpdateTime.
Columns are found by name, so a renamed or reordered file still reads. An export with no reason column, such as a global unsubscribe list, stays suppressed in full.
Who uses this tool, and for what?
- Developers
- Move from SendGrid to Postmark or SES with every bounce and complaint carried over as one suppression file.
- Marketing ops
- Load one do-not-mail list into the marketing platform so transactional bounces stop being re-mailed by campaigns.
- Support teams
- Find which customers' soft-bounced addresses can be released after a full-mailbox spell.
What can’t this tool tell you?
- Each row is read by its reason, type or SMTP code; unusual reason text with no code can land in the wrong group, and the category column shows how it was read.
- SES is read from a CSV you make from the console or CLI output, not from the API directly.
- It can't tell which re-check addresses exist; that needs a mailbox check.
Common questions
- Can I combine several exports at once?
- Yes. Paste them one under another with their header rows; each header row starts a new file, so SendGrid, Mailgun and Postmark exports can be read in one go.
- What happens when one address is in two files?
- It merges, and the strongest reason wins: a complaint beats an unsubscribe, which beats a hard bounce, which beats a soft bounce.
- Why are blocks in the re-check file?
- A block usually means the receiving server refused your sending IP or domain, not that the address is bad. Once the cause is fixed, the address may be fine.
- Does SES export a CSV?
- The SES console lists suppressed addresses and the CLI's list-suppressed-destinations returns them; save the EmailAddress and Reason fields as CSV and paste them here.
- Is my file uploaded?
- No. It is read in your browser. Nothing is sent unless you choose to check the re-check file afterwards.
Sources
A tidy list can still be full of dead addresses.
Extracting, deduplicating and syntax checks all work on the text of an address. None of them can tell whether the mailbox exists. Only the server that hosts it can answer that, through an SMTP check, and that is what the paid product does.
- Upload the cleaned file as it is: CSVs up to 100,000 rows
- A real SMTP mailbox check on every row, with catch-all detection
- Small list? Starter at $9/mo covers 2,500 emails a month, cancel anytime
Plans from $9 a month, cancel anytime, no contract. Sign in with Google and your first 100 email checks are free, no card. The free tools stay free either way.