NocoDB + Gmail: follow-ups sent, tracking stays clean
Following up shouldn’t feel like detective work. But when your “next touch” date lives in one place, your drafts live somewhere else, and your sent history is a mystery, leads slip through the cracks.
This NocoDB Gmail follow-ups automation hits sales reps first. Recruiters and agency owners feel it too, because high-volume outreach only works when the boring parts run themselves. You get consistent follow-ups, without missing touches or accidentally emailing twice.
Below, you’ll see how the workflow pulls due leads from NocoDB, personalizes the right follow-up (up to four), sends it via email, and updates your record so tracking stays clean.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: NocoDB + Gmail: follow-ups sent, tracking stays clean
flowchart LR
subgraph sg0["Schedule 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/>Get many rows"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n3@{ icon: "mdi:brain", form: "rounded", label: "Groq Chat Model", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "Groq Chat Model1", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "Groq Chat Model2", pos: "b", h: 48 }
n6@{ icon: "mdi:brain", form: "rounded", label: "Groq Chat Model3", pos: "b", h: 48 }
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Send email", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Send email1", pos: "b", h: 48 }
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Send email2", pos: "b", h: 48 }
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Send email3", pos: "b", h: 48 }
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/nocodb.svg' width='40' height='40' /></div><br/>Update a row"]
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 a row1"]
n13["<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 a row2"]
n14["<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 a row3"]
n15@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter1", pos: "b", h: 48 }
n17@{ icon: "mdi:robot", form: "rounded", label: "Follow Up Message 1", pos: "b", h: 48 }
n18@{ icon: "mdi:robot", form: "rounded", label: "Follow Up Message 2", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Follow Up Message 3", pos: "b", h: 48 }
n20@{ icon: "mdi:robot", form: "rounded", label: "Follow Up Message 4", pos: "b", h: 48 }
n1 --> n16
n2 --> n17
n2 --> n18
n2 --> n19
n2 --> n20
n16 --> n2
n7 --> n12
n8 --> n11
n9 --> n13
n10 --> n14
n0 --> n1
n3 -.-> n17
n4 -.-> n18
n5 -.-> n19
n6 -.-> n20
n15 --> n0
n17 --> n7
n18 --> n8
n19 --> n9
n20 --> n10
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 n15 trigger
class n17,n18,n19,n20 ai
class n3,n4,n5,n6 aiModel
class n1,n2,n16 decision
classDef customIcon fill:none,stroke:none
class n0,n11,n12,n13,n14 customIcon
The Problem: Follow-ups fall apart when tracking and sending are separate
Most follow-up systems break in a predictable way. You log leads in a database, set a “follow up on Friday” date, and then Friday arrives and you’re busy. So you scroll, filter, copy an email template, tweak a line, send it, and then forget to update the record. Next week you can’t remember what you sent, so you either overthink it or you send something twice. Worse, “Not Interested” leads keep showing up because nobody marked them correctly. It’s not hard work. It’s fragile work.
One missed update creates the next mess. Then the mess grows.
- Due dates get stale, so you end up following up late (or not at all).
- Template edits happen in the moment, which means your tone and offer drift across reps and campaigns.
- Manual tracking makes it easy to send the wrong stage, like a “checking in” email to someone you never emailed.
- “Not Interested” contacts keep resurfacing because the exclusion logic is never consistent.
The Solution: AI-personalized follow-ups sent on schedule, with NocoDB updated automatically
This workflow turns your lead database into a daily follow-up machine. Every morning (set to 10 AM by default), n8n pulls your lead rows from NocoDB, checks who is due today based on the “Next Follow up/Contact” date, and immediately removes anyone marked “Not Interested.” Then it routes each lead to the correct follow-up stage (1 through 4) based on what has already been sent. For that stage, an AI step personalizes the message by inserting the recipient’s name while keeping your template intact, so your emails stay consistent. Finally, the email sends via an SMTP “Send Email” node (or Gmail if you swap it), and NocoDB is updated to mark that follow-up as sent and schedule the next one.
The workflow starts with a daily schedule trigger, then NocoDB decides who is due. A switch chooses the correct follow-up, AI personalizes it, email goes out, and your NocoDB row is updated so the sequence stays reliable.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you manage 120 active leads and you follow up with 25 of them on a typical day. Manually, you spend maybe 5 minutes per lead to look up the record, choose the right template, personalize it, send it, then update NocoDB. That’s about 2 hours a day. With this workflow, it’s closer to 10 minutes to review your due list and spot-check a few messages while n8n does the sending and updates in the background.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- NocoDB for your lead table and follow-up dates
- Gmail to send follow-ups via OAuth (optional swap)
- LLM API key (get it from Groq or OpenAI) for personalization
Skill level: Intermediate. You’ll connect accounts, map a few NocoDB fields, and adjust the follow-up templates.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Daily trigger at 10 AM. n8n starts on a schedule, so follow-ups happen even when your calendar is chaos.
Due leads are pulled and cleaned up. The workflow retrieves lead records from NocoDB, filters to “due today,” and removes anyone flagged as not interested so they never enter the sending path.
The right follow-up is chosen and personalized. A routing step selects stage 1–4, then an AI composition step inserts the lead’s name into your template while keeping the rest of your message stable.
Email goes out and the record is updated. n8n sends the message (SMTP by default, Gmail if you switch nodes), then marks that follow-up as sent in NocoDB and sets the next follow-up date.
You can easily modify the follow-up timing to match your sales cycle based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
This workflow starts on a schedule and then pulls lead records for follow-up evaluation.
- Add and open Scheduled Automation Start.
- Set Rule to an interval schedule with Trigger At Hour set to
10. - Connect Scheduled Automation Start to Retrieve Lead Records.
Step 2: Connect NocoDB for Lead Retrieval
Pull all leads from NocoDB so the workflow can decide who needs a follow-up.
- Open Retrieve Lead Records.
- Credential Required: Connect your
nocoDbApiTokencredentials. - Set Operation to
getAlland Return All totrue. - Set Project ID to
psinm4yvd05vnvyand Table tomznkwe3wz0dofde. - Connect Retrieve Lead Records to Filter Due Contacts.
email, first_name, Next Follow up/Contact, and the follow-up status fields.Step 3: Filter Due Leads and Route Follow-up Stages
Filter records due for follow-up, exclude uninterested leads, and route each record to the correct follow-up stage.
- In Filter Due Contacts, set the conditions to check if
{{ $json['Next Follow up/Contact'] }}equals or is before{{ $now.format('M/dd/yy') }}. - Connect Filter Due Contacts to Exclude Uninterested.
- In Exclude Uninterested, set the condition to require
{{ $json['Not Interested'] }}to be empty. - Connect Exclude Uninterested to Route Follow-up Stage.
- In Route Follow-up Stage, configure each rule to route when the respective follow-up field is empty:
{{ $json['Follow Up 1 (Day 3) Y/N'] }},{{ $json['Follow Up 2 (Day 7) Y/N'] }},{{ $json['Follow Up 3 (Day 12) Y/N'] }}, and{{ $json['Follow Up 4 (Day 16) Y/N'] }}.
M/dd/yy format. If your NocoDB date format differs, the filters may not match correctly.Step 4: Set Up AI-Powered Personalization
Each follow-up email is personalized using Groq models connected to the chain LLM nodes.
- Open Primary Groq Model and set Model to
openai/gpt-oss-120b. - Credential Required: Connect your
groqApicredentials in Primary Groq Model. - Repeat for Secondary Groq Model and Tertiary Groq Model with Model set to
openai/gpt-oss-20b, and for Quaternary Groq Model withopenai/gpt-oss-120b. - Confirm each model is connected as the language model to its corresponding node: Primary Groq Model → Compose Follow-up One, Secondary Groq Model → Compose Follow-up Two, Tertiary Groq Model → Compose Follow-up Three, Quaternary Groq Model → Compose Follow-up Four.
- In each Compose Follow-up node, keep the personalization prompt and ensure the name variable uses
{{ $json.first_name }}.
Step 5: Configure Email Sending and Status Updates
Send the personalized email and update the lead record to mark the follow-up stage and next date.
- For each email node (Dispatch Follow-up One through Dispatch Follow-up Four), set Text to
{{ $json.text }}and To Email to{{ $('Retrieve Lead Records').item.json.email }}. - Credential Required: Connect your
smtpcredentials in all four Dispatch Follow-up nodes. - Connect each dispatch node to its status update node: Dispatch Follow-up One → Mark Follow-up One, Dispatch Follow-up Two → Mark Follow-up Two, Dispatch Follow-up Three → Mark Follow-up Three, Dispatch Follow-up Four → Mark Follow-up Four.
- In the NocoDB update nodes, set the status field values to
Yand set Id to{{ $('Retrieve Lead Records').item.json.Id }}. - Configure next contact dates: in Mark Follow-up One use
{{ $now.plus(4, 'Days').format('M/dd/yy') }}, in Mark Follow-up Two use{{ $now.plus(5, 'Days').format('M/dd/yy') }}, in Mark Follow-up Three use{{ $now.plus(4, 'days').format('M/dd/yy') }}. - Credential Required: Connect your
nocoDbApiTokencredentials to all NocoDB update nodes (Mark Follow-up One, Mark Follow-up Two, Mark Follow-up Three, Mark Follow-up Four).
{{ $('Retrieve Lead Records').item.json.email }} accordingly.Step 6: Test and Activate Your Workflow
Run a full test to verify filtering, personalization, sending, and status updates before enabling production automation.
- Click Execute Workflow and monitor data passing from Scheduled Automation Start to Retrieve Lead Records and Filter Due Contacts.
- Verify that Route Follow-up Stage sends each lead to the correct Compose Follow-up node based on empty follow-up fields.
- Confirm the Dispatch Follow-up nodes send emails and the corresponding Mark Follow-up nodes update the lead record with the correct next contact date and status.
- Once successful, toggle the workflow to Active so it runs on the schedule.
Common Gotchas
- NocoDB credentials can expire or need specific permissions. If things break, check your n8n credential settings and the NocoDB API token 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 45 minutes if your NocoDB table is ready.
No. You’ll mostly map fields (name, email, dates) and paste your email copy into the AI prompt nodes.
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 LLM API costs, which are typically fractions of a cent per personalization (this template notes about $0.001 with Groq).
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 it’s one of the first tweaks you should make. Update the “Mark Follow-up One/Two/Three/Four” NocoDB update nodes so they write your preferred next date (instead of the default cadence like day 3, 7, 12, 16). You can also change the schedule trigger time from 10 AM to whatever fits your outreach window. If you want more than four follow-ups, you’ll duplicate the route, compose, send, and mark pattern for a fifth stage.
Usually it’s an expired or wrong API token in your n8n NocoDB credentials. It can also be a base/table change (renamed fields break mappings), or missing permission to update rows. If it fails only on busy days, check for rate limits and reduce batch size by filtering more aggressively.
Hundreds per day is normal on a modest setup.
It depends on how strict you want the logic to be. This workflow uses routing for four stages, database updates, and AI personalization all in one run, which is the kind of “branchy” setup that gets expensive and annoying in many no-code tools. n8n also gives you a self-host option, which is handy when you start doing daily runs at scale. Zapier or Make can be totally fine for a two-step reminder flow, but this is more of a mini system than a single zap. Talk to an automation expert if you want help choosing.
Once this is running, your follow-up engine doesn’t depend on memory or motivation. The workflow handles the repetitive stuff, and your NocoDB tracking stays trustworthy.
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.