Daily Brevo deliverability log in Google Sheets
Every morning, a new row appears for each hard bounce, soft bounce, and unsubscribe from the last 24 hours of Brevo activity.
Build me a code workflow that runs every morning at 7am and writes my Brevo deliverability events from the last 24 hours into a Google Sheet. This is a pure deterministic ETL: list events, shape rows, append. No LLM steps, no judgement calls. Make it a code workflow, not an agent.
Trigger: daily cron at 7am in my local timezone.
Step 1. Call Brevo Get Email Event Reports for the previous calendar day, scoped to startDate = yesterday 00:00 UTC and endDate = today 00:00 UTC. I need three event types: hardBounces, softBounces, and unsubscribed. You can either call the operation three times (once per event type) or use the multi-event filter if Brevo accepts it in a single call. Paginate until every event in the window is drained, not just the first page.
Step 2. For each event, build a row with these columns in order: date (event timestamp), recipient email, event type (hardBounce, softBounce, or unsubscribed), campaign or template id (whichever the event carries), and reason text. Use the event's reason field where available; leave it blank if Brevo didn't return one.
Step 3. Use Google Sheets Append Values to append the rows to a tab called 'Brevo deliverability log' in my chosen spreadsheet. Rows should land in chronological order (oldest event first). If there are zero events for the day, log a short message and exit cleanly without writing anything.
Ask me at build time which spreadsheet to write to, and confirm the tab name and column order before finalizing.
Additional information
What does this prompt do?
- Pulls yesterday's hard bounces, soft bounces, and unsubscribes from Brevo every morning at 7am.
- Appends one row per event to a 'Brevo deliverability log' tab in your chosen Google Sheet.
- Captures the date, recipient email, event type, campaign or template, and reason for each event.
- Builds a running audit trail you can sort, filter, and review for list health trends over time.
What do I need to use this?
- A Brevo account with permission to generate an API key.
- A Google account connected to Google Sheets.
- A spreadsheet ready to receive the log (Geni will help you set up the tab when you build the workflow).
How can I customize it?
- Change the run time, the timezone, or run it twice a day instead of once.
- Add or drop event types. You can also track opens, clicks, deferreds, blocked addresses, or spam complaints.
- Scope the log to a specific campaign, template, or sender so it stays focused on the lists you actually care about.
Frequently asked questions
Will this overwrite my existing log?
Can I point it at a different spreadsheet or tab name?
What happens if there were no bounces or unsubscribes yesterday?
Does this affect my Brevo sending or pause any campaigns?
Can I add other deliverability signals like spam complaints or blocked addresses?
Stop guessing at your Brevo list health.
Connect Brevo and Google Sheets once, and Geni keeps a clean audit trail of every bounce and unsubscribe, delivered to your spreadsheet at 7am each morning.