How to keep every email bounce in one sheet
4 min read · Updated 5 October 2026On this page
An address that bounces once will usually bounce again, and every bounce counts against how mail providers see your sending. SendGrid records each one, but in its own dashboard, where the person who looks after the mailing list rarely goes.
This guide puts them where that person already works. SendGrid may report a bounce, or an email it dropped without sending. Each time, a workflow adds a row to a Google Sheet with the address, SendGrid's reason and the time. Cleaning the list becomes a matter of reading one sheet.
- SendGrid · Email eventwhen an email bounces
- Google Sheets · Add a rowadded it to the Bounces sheet
What you need
- A SendGrid connection — an API key from the SendGrid account that sends your email. (An API is a way for software to connect to a service.) Connect SendGrid
- Someone who can change Mail Settings in SendGrid, usually the account's owner or an administrator. You paste one address there, once.
- A Google Sheet called Bounces, with Email, Event, Reason and When in its first row, and a Google Workspace connection. Connect Google Workspace
SendGrid and Google Sheets work on every plan, Free included.
Build it
In Bizomate, choose New workflow, then SendGrid · Email event as its trigger — Browse all triggers, then under SendGrid, Email event. Choose your SendGrid connection. In Event, choose Bounced or dropped: bounces, and emails SendGrid dropped without sending. Every other event is left out, so it never becomes a run. Start a workflow from a SendGrid email event
Give SendGrid the trigger's address. Under One step in SendGrid, select Copy beside Webhook address. In SendGrid, open Settings, then Mail Settings, then Event Webhook. (A webhook is how SendGrid sends each event to an address you give it.) Paste the address as the webhook's URL, tick the bounce and dropped events, and save.
SendGrid sends only the events ticked there; Event in Bizomate then chooses among them. The address stays the same every time you publish, so this is done once. How instant triggers work
Let Bizomate check that each batch is SendGrid's. On the same page in SendGrid, enable Signed Event Webhook and copy the verification key it shows. Paste it in the trigger's Verification key.
With the key, Bizomate checks the signature on every batch SendGrid sends. A batch that does not match is turned away, and none of its events start a run. Without it, the long code in the address is the only check, so the key is worth the extra minute.
Add a row for each bounce. Add Google Sheets · Add a row, choose your connection, select Choose to pick the spreadsheet, and choose the tab. Each heading appears with a box beside it:
- Email:
{{ trigger.email }} - Event:
{{ trigger.event }}— bounce or dropped - Reason:
{{ trigger.reason }}— SendGrid's own words, such as a mailbox that does not exist - When:
{{ trigger.timestamp }}— in UTC (Coordinated Universal Time)
- Email:
Publish. Events can reach the trigger before you publish, and show on its panel, but they start runs only once the workflow is published and switched on. Publish a workflow
Test it on a real bounce
On SendGrid's Event Webhook page, use Test Your Integration. Or send an email through SendGrid to an address that does not exist on a domain you own. Within seconds the trigger's panel changes from Waiting for the first event to Listening — instant, with the last event and its address. On Output, select Use the last event, then Test run. A real row is added to the sheet; test runs never count towards your monthly runs.
If it does not work. The usual causes:
- The panel stays on Waiting for the first event. The URL was not saved in SendGrid, the event is not ticked there, or the verification key does not match. Copy the key again, or clear Verification key to test without it.
- SendGrid's test reports 401. A verification key is filled in, but Signed Event Webhook is off in SendGrid, or the key is from another webhook.
- Google refused. The spreadsheet was unshared or deleted. Pick it again, and reconnect if asked.
Each bounce leaves its own run, named after it — bounce · orders@northwind.example — with the event and the row that was added.
What it costs
Each event is one run. SendGrid sends events in batches, and every event in a batch starts its own run. With Bounced or dropped chosen, only those count: a send of 2,000 emails where 1% bounce uses about 20 runs. Choosing Every event would make every delivery, open and click a run, so keep to the events you act on. What counts as a run