Run B2B cold outreach with Tavily, OpenAI, Google Sheets, and Brevo
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.
Related Templates
Transform Gmail Newsletters into Insightful LinkedIn Posts Using OpenAI
Who Is This For? This workflow is perfect for content creators, marketers, and business professionals who receive regu...
Compare Lists and Identify Common Items & Differences Using Custom Keys
This workflow compares two lists of objects (List A and List B) using a user-specified key (e.g. email, id, domain) and ...
Subscribe to new releases of a Github repository via Gmail
This is a very simple workflow that lets you subscribe to any github repository for the latest release (using n8n as ex...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments