Reducing your bounce rate in SendGrid

Written for developers sending transactional and marketing mail over an API.

SendGrid
Their stated thresholdSendGrid's guidance targets a bounce rate under 5% for transactional traffic, and their compliance team reviews accounts that stay above it.
What happens if you cross itSendGrid can suspend an account for sustained high bounce or complaint rates, and because their shared IP pools carry many customers, they act to protect other senders as well as themselves.
Where the bounce data livesSuppressions, then Bounces, which is queryable through the API as well as the dashboard. Activity Feed shows per-message events, and the Event Webhook is the only way to get bounce events into your own system in real time.
How bounces are classifiedSendGrid separates Bounces, Blocks, Invalid Emails and Spam Reports into distinct suppression lists. Blocks are usually reputation-driven and temporary; Invalid Emails failed a format or domain check before sending.

Bringing the rate down

Each step is an action inside SendGrid, in the order worth taking them.

  1. Pull the bounce suppression list through the API

    The suppression endpoints return every bounced address with the SMTP reason string. That reason is the diagnosis and the dashboard truncates it.

  2. Separate Bounces from Blocks

    A Block is your reputation with a receiver, not a bad address. Fixing a block by removing addresses is treating the wrong problem entirely.

  3. Turn on the Event Webhook

    Without it you are reading bounces days later in a dashboard. With it, your application knows within seconds and can mark the user's address as failing at the source.

  4. Fix the signup path in your application

    Transactional bounces mean your database holds addresses that do not exist. A verification call at signup is the fix, and it belongs in the code rather than in a cleaning pass.

  5. Separate marketing traffic from transactional

    Use different subusers or IP pools. A marketing campaign damaging the reputation that carries your password resets is the worst version of this problem.

The mistake people make here

A bounce report mixes two causes that need opposite responses: addresses that do not exist, and receivers refusing mail they could have delivered. The first is fixed by checking the list. The second is a sending problem and no amount of cleaning will move it.

Questions people ask

What is the difference between a Bounce and a Block in SendGrid?

A Bounce is the receiving server rejecting the address. A Block is the receiver refusing your mail for reputation or policy reasons. Blocks are about you and bounces are about the address.

How do I get bounce data into my own system?

The Event Webhook. It posts delivery events to your endpoint as they happen, which is the only way to mark an address as failing before your application sends to it again.

What bounce rate will get a SendGrid account suspended?

Their guidance points at staying under 5%. Sustained rates above that get reviewed, and the review is stricter on shared IP pools because other customers share the reputation.

Check the list before the next send

100 free checks a month, no card, and the addresses nobody can resolve come back labeled rather than guessed at.