Quick overview
This workflow finds B2B decision-maker emails using Tavily and web scraping, drafts outreach and follow-up messages with OpenAI based on your offer page, queues and sends emails via Brevo with Google Sheets controls, and processes Gmail replies plus Brevo bounce/unsubscribe webhooks.
How it works
- Runs on a schedule or on-demand via an n8n form to either find leads, send queued emails, or create follow-ups.
- Searches for target-market company sites with Tavily, scrapes relevant pages (with a Tavily domain-search and Jina Reader fallback), and extracts decision-maker emails that match your role criteria.
- Deduplicates against existing Google Sheets entries, verifies each email is on the company domain, checks the domain’s MX records via Google DNS-over-HTTPS, and keeps the best candidates per company until the lead target or time/round limits are reached.
- Fetches and cleans your offer page text, then uses OpenAI to generate a small set of reusable outreach variants and builds an HTML email for each lead.
- Appends new outreach emails to a Google Sheets “Send Queue” (and logs leads in “Leads”) where messages must be approved before sending unless auto-approval is enabled.
- On the sender schedule, reads caps/pause settings and the suppression list from Google Sheets, then sends approved queued emails one at a time through the Brevo API and updates both queue and lead status with next follow-up dates.
- On the follow-up schedule, finds due leads with no reply/bounce/unsubscribe, generates OpenAI follow-up variants, and appends follow-up emails to the Send Queue.
- Monitors Gmail for replies and classifies them with OpenAI to update lead status, notify you on interested replies, add interested contacts to Brevo, and suppress “unsubscribe” or “not interested” addresses, while also accepting Brevo webhook events to log bounces/unsubscribes and auto-pause sending after repeated bounces.
Setup
- Create a Google Sheets spreadsheet with tabs named exactly Leads, Send Queue, Suppression, and Settings using the required header rows, then paste the spreadsheet ID into the workflow settings.
- Add credentials for Google Sheets OAuth2, Gmail OAuth2 (reply monitoring and owner notifications), Brevo (Sendinblue) API, OpenAI API, and an HTTP Header Auth credential for Tavily (Bearer token).
- In the workflow’s settings values, fill in your sender identity, reply-to inbox, notify email, offer page URL (and fallback text), postal address, target search keywords/countries, and the industry/role regex filters.
- In Brevo, verify your sender domain (SPF/DKIM) and configure a webhook pointing to the workflow’s Brevo webhook URL with a matching token for bounce, spam/complaint, blocked/invalid, and unsubscribe events.
- Test by running the control-panel form, review generated rows in Send Queue, manually set approved=yes for test rows (or enable auto_approve), and confirm sending and reply handling before activating the schedules.