Gmail + Brevo: replies sent, leads captured fast
Your inbox fills up with “quick questions” that aren’t quick at all. You open one inquiry, then another, then you realize you still haven’t replied to yesterday’s best lead, and now it’s buried under newsletters and “Re:” threads.
This Gmail Brevo automation hits hardest when you’re the person responsible for revenue follow-up. A marketing manager trying to keep response quality consistent feels it. A small business owner doing sales between meetings definitely feels it. Even a freelancer juggling inbound requests gets dragged into the same loop.
This workflow categorizes new Gmail inquiries, replies with the right HTML template, then labels the email and logs the sender into Brevo so you can follow up later without hunting through your inbox.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Gmail + Brevo: replies sent, leads captured fast
flowchart LR
subgraph sg0["Incoming Gmail Watcher Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Incoming Gmail Watcher", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Internal Senders", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Non-Reply Check", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Categorize Message", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "Gemini Chat Engine", pos: "b", h: 48 }
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Guest Post Response", pos: "b", h: 48 }
n6@{ icon: "mdi:message-outline", form: "rounded", label: "YouTube Review Reply", pos: "b", h: 48 }
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Course Info Reply", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Mark Message Read", pos: "b", h: 48 }
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Tag Message", pos: "b", h: 48 }
n10@{ icon: "mdi:location-exit", form: "rounded", label: "Brevo Contact Upsert", pos: "b", h: 48 }
n2 --> n3
n7 --> n8
n8 --> n9
n8 --> n10
n0 --> n1
n3 --> n5
n3 --> n6
n3 --> n7
n5 --> n8
n6 --> n8
n4 -.-> n3
n1 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n3 ai
class n4 aiModel
class n1,n2 decision
The Problem: Slow, inconsistent replies that leak leads
Inbound email sounds simple until you’re doing it at volume. One day it’s a guest post pitch, the next day it’s a YouTube review request, then someone asks about your course. They all need different info, different tone, and different next steps. So you either copy-paste from old threads (and accidentally leave the wrong price), or you type from scratch and waste about 10 minutes per email just getting back to “professional.” Meanwhile, you forget to add the sender to your CRM, so follow-up depends on your memory. Honestly, that’s not a system.
The friction compounds, because the mess isn’t one big mistake. It’s a dozen small ones.
- You reply late because every message requires a mini decision tree in your head.
- Templates live in random places (old emails, docs, notes), so consistency disappears the moment you get busy.
- Leads don’t get logged into Brevo, which means future campaigns miss people who already showed intent.
- You mark emails “done” mentally, then they show up again because they were never labeled or marked as read.
The Solution: AI-classify Gmail, reply instantly, and upsert into Brevo
This workflow watches your Gmail inbox on a schedule (once per hour) and grabs new, eligible inquiries. It first filters out internal senders so you don’t auto-reply to your own team, then it avoids replying to email threads that are already in progress (like subjects starting with “Re:”). After that, an AI classifier reads the message and routes it into a category you define, such as Guest Post, YouTube Review, or Udemy Course Inquiry. Based on the category, n8n sends a polished HTML email via SMTP using the template you’ve already approved. Finally, it marks the original email as read, applies a Gmail label (so it’s clearly handled), and creates or updates the sender as a contact in Brevo for future nurturing.
The workflow starts with the Gmail trigger and a couple of safety checks. Then the AI classification chooses the correct reply path, sends the right response, and closes the loop by labeling the email and pushing the lead into Brevo. No extra tabs. No “I’ll do CRM later.”
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get 20 inbound inquiries a week across 3 common categories (guest posts, YouTube reviews, course questions). Manually, even a “fast” reply takes about 8 minutes when you include reading, choosing a template, editing, sending, then remembering to add the person to your CRM, which is roughly 3 hours a week. With this workflow, you spend about 20 minutes up front polishing the templates, then maybe 5 minutes a week spot-checking labels and CRM entries. The replies go out on the hourly run, and Brevo stays up to date automatically.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Gmail to detect and update incoming emails
- Brevo (Sendinblue) to create/update contacts in your CRM
- Google Gemini API key (get it from Google AI Studio / Google Cloud console)
Skill level: Intermediate. You’ll connect accounts, paste in templates, and verify a few fields like sender name and label IDs.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A new message arrives in Gmail. n8n checks your inbox every hour and pulls in new emails, then filters out internal addresses so you don’t auto-reply to your own domain.
Thread safety checks run. The workflow avoids sending replies to ongoing threads by filtering common reply patterns (like “Re:”), which prevents awkward double-responding.
AI classification decides what it is. A LangChain text classifier reads the email content and assigns it to a category such as Guest Post, YouTube, or Udemy Courses. There’s also an optional Gemini chat model step if you want better context or summarization.
The right template is sent and the lead is logged. n8n sends an HTML email through SMTP, marks the original message as read, applies your “handled” label in Gmail, then upserts the sender into Brevo so your CRM stays complete.
You can easily modify the categories and templates to match your offer, then route different inquiry types into different Brevo lists based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Gmail Trigger
Set up the workflow to watch incoming messages in Gmail before any filtering or categorization begins.
- Add the Incoming Gmail Watcher node as the trigger.
- Set Poll Times to
everyHour. - Credential Required: Connect your gmailOAuth2 credentials in Incoming Gmail Watcher.
Step 2: Filter Internal Senders and Replies
Exclude internal emails and reply chains so only new external inquiries reach the AI classifier.
- Connect Incoming Gmail Watcher to Filter Internal Senders.
- In Filter Internal Senders, set the condition to check Left Value
={{ $json.headers.from }}contains@syncbricks.com. - Connect the false output of Filter Internal Senders to Non-Reply Check.
- In Non-Reply Check, set Left Value to
={{ $json.subject }}and notStartsWithRe:.
Step 3: Set Up AI Classification
Classify each inbound message into one of the predefined categories using Gemini.
- Connect Non-Reply Check to Categorize Message.
- In Categorize Message, set Input Text to
={{ $('Incoming Gmail Watcher').item.json.subject }} {{ $('Incoming Gmail Watcher').item.json.text }}. - Verify the Categories are set to
Guest Post,Youtube, andUdemy Courseswith the provided descriptions. - Ensure Gemini Chat Engine is connected as the language model for Categorize Message.
- Credential Required: Connect your googlePalmApi credentials in Gemini Chat Engine (credentials are added on the parent model node, not the classifier).
Step 4: Configure Email Response Paths
Send tailored responses based on the category returned by the classifier.
- From Categorize Message, connect the
Guest Postoutput to Guest Post Response. - In Guest Post Response, set Subject to
=Re: {{ $('Incoming Gmail Watcher').item.json.subject }}and To Email to={{ $json.from.value[0].name }} <{{ $json.from.value[0].address }}>. - From Categorize Message, connect the
Youtubeoutput to YouTube Review Reply and set the same Subject and To Email expressions. - From Categorize Message, connect the
Udemy Coursesoutput to Course Info Reply and set Subject to=Re: {{ $('Incoming Gmail Watcher').item.json.Subject }}and To Email to={{ $json.from.value[0].name }} <{{ $json.from.value[0].address }}>. - Credential Required: Connect your smtp credentials in Guest Post Response, YouTube Review Reply, and Course Info Reply.
⚠️ Common Pitfall: Course Info Reply uses {{ $('Incoming Gmail Watcher').item.json.Subject }} with a capital Subject. If your Gmail payload uses lowercase subject, update the expression to avoid blank subjects.
Step 5: Apply Post-Response Actions
After any reply is sent, mark the thread as read, tag it, and upsert the contact in Brevo.
- Connect Guest Post Response, YouTube Review Reply, and Course Info Reply to Mark Message Read.
- In Mark Message Read, set Operation to
markAsReadand Message ID to={{ $('Incoming Gmail Watcher').item.json.id }}. - Mark Message Read outputs to both Tag Message and Brevo Contact Upsert in parallel.
- In Tag Message, set Operation to
addLabels, Message ID to={{ $('Incoming Gmail Watcher').item.json.id }}, and Label IDs to[YOUR_ID]. - In Brevo Contact Upsert, set Email to
={{ $('Categorize Message').item.json.from.value[0].address }}, Resource tocontact, and Operation toupsert. - Credential Required: Connect your gmailOAuth2 credentials in Mark Message Read and Tag Message.
- Credential Required: Connect your sendInBlueApi credentials in Brevo Contact Upsert.
Tip: The Flowpast Branding sticky note is informational only and does not affect execution.
Step 6: Test & Activate Your Workflow
Validate the end-to-end flow with a real email and then enable the automation.
- Use Execute Workflow and send a test email to the monitored inbox with a subject and body that match one category.
- Confirm that Categorize Message routes to the correct response node and the reply email is sent.
- Verify that the message is marked read in Gmail, the label is applied, and the contact appears in Brevo.
- When results look correct, toggle the workflow to Active for production use.
Common Gotchas
- Gmail credentials can expire or lose permissions. If things break, check your n8n Credentials page and Google account “Third-party access” settings first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About an hour if you already have Gmail, SMTP, and Brevo access ready.
No. You’ll mostly connect accounts and edit the email templates. The “hard part” is deciding your categories and what each reply should say.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Google Gemini API usage (usually small for simple classification).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. Update the Text Classifier categories (for example “Partnership,” “Support,” or “Pricing”), then duplicate or swap the email send nodes so each category gets the right HTML response. Common customizations include adding a “needs human review” branch, writing to a specific Brevo list, and applying different Gmail labels per category.
Usually it’s expired or revoked OAuth access in Google. Reconnect the Gmail credential in n8n, then confirm your Google account still allows third-party access and that the mailbox permissions haven’t changed. If it fails only sometimes, you may also be hitting Gmail API limits when your inbox spikes, so widening the polling window or filtering more aggressively helps.
A few hundred a day is realistic for most small teams, assuming your AI and email provider limits are reasonable.
It depends on what you mean by “better.” If you want routing logic, multiple reply templates, and the option to self-host for unlimited executions, n8n is usually the cleaner fit for this kind of inbox automation. Zapier and Make can do parts of this, but multi-branch flows plus AI classification can get pricey and fiddly. Also, email safety checks (like skipping “Re:” threads) are easier to keep explicit in n8n. If you’re unsure, Talk to an automation expert and describe your volume and risk tolerance.
Once this is running, “inbox follow-up” stops being a daily fire drill. The workflow handles the repetitive parts so you can focus on the conversations that actually move leads forward.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.