Gmail + Brevo: score leads and draft replies
Your inbox is lying to you. Not on purpose, but because the signals are scattered: replies live in Gmail, opens and clicks live in Brevo, and your “lead status” is usually a half-updated note somewhere else.
This Gmail Brevo automation hits founders first (because there’s never enough time), but marketing managers and agency operators feel it too. You end up missing intent, replying too late, and letting good leads cool off while you’re busy doing admin.
This workflow connects Gmail + Brevo engagement to a living lead score, then drafts the next reply in your voice. You’ll see how it works, what you need, and where teams usually trip up.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Gmail + Brevo: score leads and draft replies
flowchart LR
subgraph sg0["Gmail Webhook Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Find Lead by Email"]
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Intent Classification", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Create Manual Review"]
n3@{ icon: "mdi:robot", form: "rounded", label: "Generate AI Response", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Natural Response Delay", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Log Interaction"]
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Update Lead Score"]
n31@{ icon: "mdi:play-circle", form: "rounded", label: "Gmail Webhook", pos: "b", h: 48 }
n32@{ icon: "mdi:message-outline", form: "rounded", label: "Send AI Response", pos: "b", h: 48 }
n33@{ icon: "mdi:message-outline", form: "rounded", label: "Notify Sales Team", pos: "b", h: 48 }
n34["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Get All Products"]
n35@{ icon: "mdi:cog", form: "rounded", label: "Aggregated Products", pos: "b", h: 48 }
n39["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Parse Response Data"]
n49["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Get Previous Exchange"]
n50["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge1"]
n51@{ icon: "mdi:cog", form: "rounded", label: "Aggregate For Response", pos: "b", h: 48 }
n52@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route By Response Type", pos: "b", h: 48 }
n53@{ icon: "mdi:cog", form: "rounded", label: "All Exchanges", pos: "b", h: 48 }
n54["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Lead Unsubscribed"]
n55["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Lead Pending Review"]
n56["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Lead Out Of Office"]
n50 --> n51
n53 --> n50
n31 --> n39
n5 --> n6
n34 --> n35
n32 --> n5
n0 --> n1
n35 --> n50
n55 --> n2
n39 --> n0
n2 --> n33
n3 --> n4
n49 --> n53
n51 --> n3
n4 --> n32
n52 --> n55
n52 --> n54
n52 --> n56
n52 --> n49
n52 --> n34
n1 --> n52
end
subgraph sg1["Generate Personalize Flow"]
direction LR
n23@{ icon: "mdi:cog", form: "rounded", label: "Hourly Trigger", pos: "b", h: 48 }
n24@{ icon: "mdi:robot", form: "rounded", label: "Generate Personalized Email", pos: "b", h: 48 }
n25["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Get Product Info"]
n26["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Log Outreach"]
n27["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Update Lead Status"]
n28["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Get Top 10 Leads"]
n29@{ icon: "mdi:cog", form: "rounded", label: "All Products", pos: "b", h: 48 }
n30["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Send Initial Outreach Email"]
n40@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n41["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n42@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Outreach Variables", pos: "b", h: 48 }
n43@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Leads", pos: "b", h: 48 }
n44["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Get Previous Correspondance"]
n45@{ icon: "mdi:cog", form: "rounded", label: "All Correspondance", pos: "b", h: 48 }
n47["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Get Current Template"]
n48@{ icon: "mdi:cog", form: "rounded", label: "Current Template", pos: "b", h: 48 }
n41 --> n40
n40 --> n42
n29 --> n41
n26 --> n27
n23 --> n28
n43 --> n25
n43 --> n44
n43 --> n47
n48 --> n41
n25 --> n29
n28 --> n43
n45 --> n41
n27 --> n43
n47 --> n48
n42 --> n24
n24 --> n30
n44 --> n45
n30 --> n26
end
subgraph sg2["Flow 3"]
direction LR
n14@{ icon: "mdi:cog", form: "rounded", label: "Daily Trigger", pos: "b", h: 48 }
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Get All Active Leads"]
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Process in Batches", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Calculate Score Decay"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Update Lead Scores"]
n19@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Needs Re-engagement?", pos: "b", h: 48 }
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Schedule Re-engagement"]
n21["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Generate Analytics Report"]
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Store Analytics"]
n37@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message", pos: "b", h: 48 }
n46@{ icon: "mdi:cog", form: "rounded", label: "Collect All Results", pos: "b", h: 48 }
n14 --> n15
n37 --> n22
n16 --> n46
n16 --> n17
n18 --> n19
n46 --> n21
n15 --> n16
n19 --> n20
n19 --> n16
n17 --> n18
n20 --> n16
n21 --> n37
end
subgraph sg3["Brevo Event Flow"]
direction LR
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Parse Event Data"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Find Lead"]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Lead Found?", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Log Engagement Event"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Calculate Score Update"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Update Lead Engagement"]
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Special Action Needed?", pos: "b", h: 48 }
n36@{ icon: "mdi:play-circle", form: "rounded", label: "Brevo Event", pos: "b", h: 48 }
n38["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/nocodb.svg' width='40' height='40' /></div><br/>Delete a row"]
n8 --> n9
n36 --> n7
n9 --> n10
n7 --> n8
n10 --> n11
n11 --> n12
n13 --> n38
n12 --> n13
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 n31,n36 trigger
class n1,n3,n24 ai
class n52,n19,n9,n13 decision
class n30 api
class n39,n17,n21,n7,n11 code
classDef customIcon fill:none,stroke:none
class n0,n2,n5,n6,n34,n39,n49,n50,n54,n55,n56,n25,n26,n27,n28,n30,n41,n44,n47,n15,n17,n18,n20,n21,n22,n7,n8,n10,n11,n12,n38 customIcon
The Problem: lead follow-ups fall apart across tools
Lead follow-up sounds simple until you’re doing it at speed. Someone replies in Gmail with “Sounds interesting, send pricing,” but you don’t see it for hours. Another person clicks your Brevo email three times, yet your CRM still shows them as “cold.” Then there are the messy ones: auto-replies, out-of-office messages, and unsubscribe requests that end up being treated like real interest. It’s not just time wasted. It’s momentum lost, and frankly, it’s hard to stay consistent when every signal lives in a different place.
The friction compounds.
- Manual triage turns into constant tab switching between Gmail threads, Brevo stats, and a CRM record that may or may not be updated.
- Replies get handled inconsistently, so prospects hear a different “voice” depending on who answered last.
- Unsubscribes and automated replies pollute your pipeline, which means your “hot lead” list stops being trustworthy.
- Without ongoing score decay and re-engagement rules, older leads sit there forever and new leads don’t get prioritized.
The Solution: AI triage + scoring + drafted replies in one loop
This workflow acts like an always-on sales assistant that watches two streams of truth: what people do (Brevo engagement events) and what people say (Gmail replies). When an email reply arrives, the workflow looks up the lead by email, pulls context from your lead database, and sends the message to an AI model to classify intent. It can spot unsubscribe requests, out-of-office messages, and real human responses, then decide what should happen next. If a reply deserves a response, it drafts a contextual email that matches tone, addresses objections, and signs off in a natural way. At the same time, engagement events from Brevo update metrics and lead scores so your “warm” and “hot” statuses are based on behavior, not gut feel.
The workflow starts with triggers from Gmail and Brevo, plus scheduled check-ins that keep your lead list clean. In the middle, scoring logic updates your CRM, drafts replies, and creates “human review” tasks when something looks sensitive. The output is simple: updated lead records, drafted emails ready to send (or auto-sent if you choose), and a daily performance report.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you run 3 outbound campaigns and get roughly 25 replies and 200 engagement events (opens/clicks/bounces) in a week. Manually, even “quick checks” add up: about 5 minutes to read and label each reply (around 2 hours), plus another minute per event to find the right record and update it (about 3 hours). With this workflow, replies and events get classified and written back automatically, and you only review edge cases. That usually means 20 minutes a day, not a couple hours.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Gmail for receiving replies and sending drafts.
- Brevo (Sendinblue) to capture opens, clicks, bounces, unsubscribes.
- NocoDB to store leads, scores, correspondence, templates.
- OpenAI API key (get it from your OpenAI dashboard).
Skill level: Intermediate. You’ll mostly connect accounts and map fields, but you should be comfortable checking a database table structure and testing webhooks.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Gmail and Brevo kick things off. A Gmail trigger listens for incoming replies, while a Brevo event trigger captures engagement events like clicks, bounces, spam flags, and unsubscribes as they happen.
Lead records get matched and enriched. The workflow locates the right lead by email in NocoDB, pulls prior correspondence and the current template, then merges that context so the next actions are based on the full thread.
AI decides what the reply “means,” then acts. The intent classification routes messages into buckets (unsubscribe, out-of-office, needs review, normal reply). For normal replies, an AI agent drafts a response that fits the tone and addresses objections, then a brief delay makes sending behavior feel less robotic.
Scores and statuses stay accurate over time. Separate scheduled runs retrieve active leads, apply score decay, update statuses (cold/warm/hot), and queue re-engagement tasks so your pipeline doesn’t quietly rot.
You can easily modify reply rules to require approval before sending, or change the scoring thresholds that define “warm” versus “hot” based on your sales cycle. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule and Email Triggers
Set up the triggers that launch daily, hourly, inbound email, and Brevo event flows.
- Open Daily Schedule Trigger and configure the schedule parameters to run your daily lead processing.
- Open Hourly Schedule Trigger and set the hourly cadence for top-lead prioritization.
- Open Gmail Incoming Trigger to capture inbound replies from your Gmail account. Credential Required: Connect your Gmail credentials.
- Open Brevo Event Trigger to listen for engagement events. Credential Required: Connect your Brevo (Sendinblue) credentials.
Step 2: Connect the Lead Database (NocoDB)
This workflow relies on NocoDB for lead records, scoring, and analytics storage. Connect credentials across all NocoDB actions.
- Open Retrieve Active Leads and connect your NocoDB credentials. Credential Required: Connect your NocoDB credentials.
- Repeat the credential connection for other database nodes such as Retrieve Top Leads, Lookup Lead via Email, Record Interaction, Modify Lead Score, and Store Analytics Data.
- Verify that database tables and fields exist for outreach logs, engagement events, lead status, and analytics before running the workflow.
Step 3: Configure Batch Processing and Lead Scoring
These nodes handle lead iteration, score decay, and re-engagement queuing from the daily schedule.
- Open Batch Processing Loop and confirm the batch size for processing lead records.
- Open Compute Score Decay and ensure the code logic matches your scoring model.
- Open Write Lead Scores to update the lead records after decay calculations.
- Open Re-engagement Needed? and verify the conditions for when leads should be sent to Queue Re-engagement.
Step 4: Prepare Outreach Context and Templates
This step builds the data context used to craft personalized outreach.
- Confirm Retrieve Top Leads feeds into Iterate Leads to process priority prospects.
- Check Fetch Product Details, Fetch Prior Correspondence, and Fetch Current Template to ensure each returns the expected data.
- Validate data shaping in Aggregate Product List, All Correspondence, and Current Template Summary before they flow into Merge Data Streams and Aggregate Records.
- Open Assign Outreach Fields and confirm the final field mapping used by Craft Personalized Email.
Step 5: Set Up AI Content and Reply Generation
Configure the OpenAI nodes that classify intent and generate personalized email content.
- Open Craft Personalized Email and connect your OpenAI credentials. Credential Required: Connect your OpenAI credentials.
- Open Intent Classification AI and connect your OpenAI credentials. Credential Required: Connect your OpenAI credentials.
- Open Compose AI Reply and connect your OpenAI credentials. Credential Required: Connect your OpenAI credentials.
- Verify that Aggregate For Reply feeds into Compose AI Reply before the Human-like Delay and Send AI Reply sequence.
Step 6: Configure Reply Parsing and Routing
Inbound replies are parsed, classified, and routed to specific lead actions.
- Open Parse Reply Data and review the code logic for extracting sender details and content.
- Verify that Lookup Lead via Email connects to Intent Classification AI, then to Route by Reply Type.
- Confirm that Route by Reply Type sends results to Mark Pending Review, Mark Unsubscribed Lead, Mark Out-of-Office, and the reply context path (Fetch Previous Exchange and Retrieve All Products).
- Ensure Mark Pending Review routes into Create Review Task and then Alert Sales Team.
Step 7: Track Engagement Events and Metrics
Engagement events are ingested from Brevo and used to update lead engagement metrics.
- Review Parse Event Payload to ensure the code extracts the correct identifiers.
- Confirm that Locate Lead Record feeds into Lead Located? before logging in Record Engagement Event.
- Verify that Compute Score Update and Update Engagement Metrics correctly update engagement data.
- Check the conditional cleanup in Special Action Required? and its action in Remove Table Row.
Step 8: Configure Outreach Delivery and Logging
This sequence sends messages and logs results to keep lead status current.
- Open Dispatch Initial Outreach and configure the HTTP request settings for your email delivery endpoint.
- Open Send AI Reply and connect Gmail credentials for outbound reply delivery. Credential Required: Connect your Gmail credentials.
- Confirm the logging chain Dispatch Initial Outreach → Log Outreach Activity → Modify Lead Status.
- Verify the analytics chain Collect Results → Create Analytics Report → Send Status Message → Store Analytics Data. Credential Required: Connect your Gmail credentials on Send Status Message.
Step 9: Test and Activate Your Workflow
Run controlled tests to ensure each path works before going live.
- Manually execute Daily Schedule Trigger and confirm leads flow through Batch Processing Loop to Create Analytics Report.
- Trigger a test email to Gmail Incoming Trigger and verify it routes through Parse Reply Data, Intent Classification AI, and Route by Reply Type.
- Send a test event to Brevo Event Trigger and verify that Record Engagement Event and Update Engagement Metrics update the database.
- When results look correct, toggle the workflow to Active for production use.
Common Gotchas
- Gmail permissions can be picky. If sending fails, check your connected Gmail credential in n8n first, then confirm the mailbox still allows API access.
- If you’re using Wait nodes or external processing, timing varies. Bump up the wait duration if downstream nodes fail on empty responses.
- Brevo webhooks only help if events map cleanly to a lead. If “Locate Lead Record” can’t match an email, inspect the webhook payload fields and your NocoDB email column formatting.
Frequently Asked Questions
About 60–90 minutes if your Gmail, Brevo, and NocoDB accounts are ready.
No. You’ll mainly connect accounts, map a few fields, and test with sample replies and events.
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 OpenAI API costs (usually a few cents per day at small volumes).
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, but you’ll want to change the behavior around “Compose AI Reply” and “Send AI Reply.” Many teams keep drafting automatic, then route anything “high risk” through “Mark Pending Review” so a human approves before it sends. You can also tighten the “Route by Reply Type” logic so anything negative, legal-sounding, or unclear always becomes a review task.
Most of the time it’s an expired or revoked credential in n8n, so reconnect Gmail and retry “Send AI Reply.” If it fails only sometimes, check for sending limits on the mailbox and make sure you’re not firing bursts from the hourly outreach run. Also confirm the workflow is listening to the same inbox you’re replying from, because mismatched accounts causes confusing “missing thread” issues.
If you self-host, there’s no fixed execution limit (it depends on your server). On n8n Cloud, capacity depends on your plan, but most small teams can comfortably handle hundreds of leads and several thousand events a month with a basic setup, since engagement events are lightweight and replies are the heavier part.
Often, yes. This workflow relies on branching, classification, score decay, and “review task” routing, and those flows get expensive or awkward in simpler automation tools. n8n also gives you the option to self-host, which matters once Brevo starts firing lots of events. Zapier or Make can still be fine for a basic “Brevo event → update a row” setup, just not for the full AI triage loop. If you’re unsure, Talk to an automation expert and you’ll get a straight answer.
Set this up once and your lead scores, statuses, and next replies stop drifting out of sync. The workflow handles the repetitive parts so you can focus on the conversations that actually close deals.
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.