Telegram to Gmail, follow-ups that stop on reply
You had a good call. You took notes. Then the day happens, the follow-up email gets delayed, and the lead quietly goes cold.
This is the kind of mess account executives feel every week, and it hits founders even harder because there’s no one else to pick up the slack. Agencies running outreach for clients deal with it too. With Telegram Gmail follow-ups automated, you can keep a consistent 3-touch sequence going without sounding like a robot.
This workflow captures leads in Telegram, writes personal emails with AI, sends them from Gmail (or SMTP), and stops the moment someone replies. You’ll see what it does, 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: Telegram to Gmail, follow-ups that stop on reply
flowchart LR
subgraph sg0["Telegram Input - Agent Submits Lead 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/telegram.svg' width='40' height='40' /></div><br/>Telegram Input - Agent Submi.."]
n1@{ icon: "mdi:robot", form: "rounded", label: "AI - Parse Lead Data", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "Gemini Model - Parser", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "JSON Output Parser", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Insert row", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Initialize Lead Tracking", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "AI - Generate Personalized E..", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "Gemini Model - Email Generator", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Email JSON Parser", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Email", pos: "b", h: 48 }
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Send email", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Update row(s)", pos: "b", h: 48 }
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/telegram.svg' width='40' height='40' /></div><br/>Notify Agent - Email Sent"]
n9 --> n10
n4 --> n5
n10 --> n11
n11 --> n12
n8 -.-> n6
n3 -.-> n1
n1 --> n4
n2 -.-> n1
n5 --> n6
n7 -.-> n6
n6 --> n9
n0 --> n1
end
subgraph sg1["Daily Follow-up Check (10 AM)1 Flow"]
direction LR
n28@{ icon: "mdi:play-circle", form: "rounded", label: "Daily Follow-up Check (10 AM)1", pos: "b", h: 48 }
n29@{ icon: "mdi:cog", form: "rounded", label: "Get row(s)2", pos: "b", h: 48 }
n30@{ icon: "mdi:brain", form: "rounded", label: "Gemini Model - Email Generat..", pos: "b", h: 48 }
n31@{ icon: "mdi:robot", form: "rounded", label: "Email JSON Parser2", pos: "b", h: 48 }
n32@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If lastSentDate was 24 hours..", pos: "b", h: 48 }
n33@{ icon: "mdi:swap-vertical", form: "rounded", label: "Initialize Lead 3rd Follow Up", pos: "b", h: 48 }
n34@{ icon: "mdi:robot", form: "rounded", label: "AI - Generate Personalized 3..", pos: "b", h: 48 }
n36@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set 3rd Follow Up", pos: "b", h: 48 }
n37@{ icon: "mdi:message-outline", form: "rounded", label: "Send email 3", pos: "b", h: 48 }
n39@{ icon: "mdi:cog", form: "rounded", label: "Update row(s) and Update Sta..", pos: "b", h: 48 }
n40["<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/telegram.svg' width='40' height='40' /></div><br/>Notify Agent - Sequence Comp.."]
n29 --> n32
n37 --> n39
n36 --> n37
n31 -.-> n34
n33 --> n34
n28 --> n29
n30 -.-> n34
n39 --> n40
n32 --> n33
n34 --> n36
end
subgraph sg2["Daily Follow-up Check (10 AM) Flow"]
direction LR
n20@{ icon: "mdi:play-circle", form: "rounded", label: "Daily Follow-up Check (10 AM)", pos: "b", h: 48 }
n21@{ icon: "mdi:cog", form: "rounded", label: "Get row(s)1", pos: "b", h: 48 }
n22@{ icon: "mdi:brain", form: "rounded", label: "Gemini Model - Email Generat..", pos: "b", h: 48 }
n23@{ icon: "mdi:robot", form: "rounded", label: "Email JSON Parser1", pos: "b", h: 48 }
n24@{ icon: "mdi:cog", form: "rounded", label: "Update row(s)1", 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/telegram.svg' width='40' height='40' /></div><br/>Notify Agent - Email Sent1"]
n26@{ icon: "mdi:swap-vertical", form: "rounded", label: "Initialize Lead Follow Up", pos: "b", h: 48 }
n27@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set 2nd Follow Up", pos: "b", h: 48 }
n35@{ icon: "mdi:robot", form: "rounded", label: "AI - Generate Personalized 2..", pos: "b", h: 48 }
n38@{ icon: "mdi:message-outline", form: "rounded", label: "Send email 2", pos: "b", h: 48 }
n21 --> n26
n38 --> n24
n24 --> n25
n27 --> n38
n23 -.-> n35
n26 --> n35
n20 --> n21
n22 -.-> n35
n35 --> n27
end
subgraph sg3["Daily Reply Check (9 AM) Flow"]
direction LR
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is This a Reply from Lead?", pos: "b", h: 48 }
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/telegram.svg' width='40' height='40' /></div><br/>Notify Agent - Reply Received"]
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Mark Lead as Replied", pos: "b", h: 48 }
n16@{ icon: "mdi:play-circle", form: "rounded", label: "Daily Reply Check (9 AM)", pos: "b", h: 48 }
n17@{ icon: "mdi:cog", form: "rounded", label: "Get row(s)", pos: "b", h: 48 }
n18@{ icon: "mdi:message-outline", form: "rounded", label: "Get many messages", pos: "b", h: 48 }
n19@{ icon: "mdi:cog", form: "rounded", label: "Mark As Replied", pos: "b", h: 48 }
n41@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n17 --> n41
n41 --> n13
n41 --> n18
n18 --> n41
n15 --> n19
n16 --> n17
n13 --> n14
n14 --> n15
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,n28,n20,n16 trigger
class n1,n3,n6,n8,n31,n34,n23,n35 ai
class n2,n7,n30,n22 aiModel
class n32,n13 decision
classDef customIcon fill:none,stroke:none
class n0,n12,n40,n25,n14 customIcon
The Problem: Follow-ups slip, and “personal” doesn’t scale
Most teams don’t lose leads because the offer is bad. They lose them because the follow-up process is uneven. One rep sends a thoughtful email right after the call, another waits two days, and someone else copies a template that feels… copy-pasted. Then replies get missed, or worse, a second follow-up goes out after the lead already answered (which is a fast way to look disorganized). It also creates a mental load you carry all day. “Did I email that prospect?” “Did they reply?” “Was I supposed to nudge them again?”
The friction compounds. Not in a dramatic way. In the slow, expensive way.
- After each call, you end up rewriting the same “great speaking with you” email for the tenth time that week.
- It’s easy to forget the 24-hour follow-up, especially when your calendar is stacked.
- Replies are scattered across inboxes, so you can’t quickly see which leads are active versus already handled.
- Manual tracking in a sheet usually gets updated “later,” which means it’s not reliable when you need it.
The Solution: Telegram lead intake → AI emails → Gmail follow-ups that stop on reply
This n8n workflow turns your post-call notes into a complete, tracked follow-up sequence. A sales agent drops lead details into a Telegram bot (name, company, email, and a few notes from the conversation). AI then extracts and structures the info, saves it to a lead table, and generates a tailored first email that matches the situation and the tone you want. n8n sends that email immediately, updates the lead status, and pings the agent in Telegram so they know it went out. After that, scheduled checks handle the follow-ups automatically: a second message after about 24 hours, then a final touch if there’s still no reply. The important part is reply detection. Each day, the workflow scans Gmail, marks leads as replied when it finds a response, and stops any future follow-ups.
The workflow starts with Telegram lead intake. In the middle, Gemini generates email copy for each step of the sequence while n8n logs content and status to your data table (and optionally Google Sheets). Finally, Gmail monitoring prevents awkward double-taps by shutting down the sequence when the lead responds.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you handle 10 leads a week from calls. Manually, you might spend about 10 minutes drafting the first email, another 5 minutes scheduling or setting reminders, and then 10 minutes across the week checking replies and updating a sheet. That’s roughly 25 minutes per lead, or about 4 hours a week. With this workflow, the “manual” part is dropping the lead into Telegram (maybe 1 minute). The sequence sends itself, and the daily Gmail scan handles reply detection in the background.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram Bot for lead submission and alerts
- Gmail account to send and detect replies
- Gemini API Key (get it from Google AI Studio)
Skill level: Intermediate. You’ll connect accounts, set a data table (or sheet), and paste an API key.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A lead comes in through Telegram. After a call, you message your bot with the lead’s name, email, company, and quick notes. That single message is the trigger that starts everything.
The workflow cleans and structures the info. Gemini extracts key fields from the notes, and n8n writes a new record to your data table (status, sequence number, last sent date, plus storage fields for email subject/body).
AI writes the email for the right moment. The first email is warm and conversational, the second adds value and context, and the third is short and respectful. n8n then sends via the email node and updates the lead record so you can audit what went out.
Reply detection stops the sequence. On a daily schedule, n8n pulls active leads, searches Gmail for responses, flags leads as replied, and sends a Telegram notification to the agent so they can take over the human part.
You can easily modify the follow-up timing or message style to match your sales motion. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Telegram Trigger
Set up the workflow entry point so new leads arrive from Telegram into the automation pipeline.
- Add and open Telegram Lead Intake.
- Connect the Telegram bot you want to use for lead intake.
- Save the node so it registers the webhook.
Credential Required: Connect your Telegram API credentials.
Step 2: Set Up Lead Extraction with AI
Configure the AI pipeline that parses incoming lead messages into structured data.
- Open AI Lead Data Extract and define the prompt or system instructions for lead parsing.
- Ensure Gemini Parsing Model is connected as the language model for AI Lead Data Extract.
- Ensure Structured JSON Parser is connected as the output parser for AI Lead Data Extract.
Credential Required: Connect your Google Gemini credentials in Gemini Parsing Model.
Note: Structured JSON Parser is an AI tool sub-node; credentials should be added to the parent node Gemini Parsing Model used by AI Lead Data Extract.
Step 3: Persist Lead Data and Compose the First Email
Store extracted lead data, initialize tracking, and generate the first email with AI.
- Open Add Table Record and map the extracted lead fields into your data table.
- Configure Init Lead Tracking to set status fields and timestamps for the lead.
- Open AI Email Composer and define the email generation instructions.
- Ensure Gemini Email Model is connected as the language model for AI Email Composer.
- Ensure Email JSON Extractor is connected as the output parser for AI Email Composer.
- Map the output in Prepare Email Fields for subject, body, and recipient.
Credential Required: Connect your Google Gemini credentials in Gemini Email Model.
Note: Email JSON Extractor is an AI tool sub-node; credentials should be added to the parent node Gemini Email Model used by AI Email Composer.
Step 4: Configure Initial Email Dispatch and Agent Notifications
Send the first email and update records, then notify your agent in Telegram.
- Open Dispatch Email and configure the sender account and email fields.
- Verify Modify Table Records updates the lead status after the email is sent.
- Open Notify Agent Email Sent and set the message format and target chat.
Credential Required: Connect your SMTP credentials in Dispatch Email.
Credential Required: Connect your Telegram API credentials in Notify Agent Email Sent.
Step 5: Configure Daily Reply Monitoring
Scan for replies daily, check each lead, and alert agents when a reply is detected.
- Set the schedule in Daily Reply Scan to control when reply checks run.
- Configure Retrieve Table Rows to pull active leads for reply checking.
- Set batch size in Iterate Items to manage volume.
- Open Fetch Gmail Messages and configure the mailbox and query for reply detection.
- Define the logic in Check Lead Reply to evaluate if a reply exists.
- Customize the alert in Alert Agent Reply, then map updates in Flag Lead Replied and Update Reply Status.
Iterate Items outputs to both Check Lead Reply and Fetch Gmail Messages in parallel.
Credential Required: Connect your Google credentials in Fetch Gmail Messages.
Credential Required: Connect your Telegram API credentials in Alert Agent Reply.
Step 6: Configure Second Follow-Up Email
Generate and send the second follow-up for leads who have not replied.
- Set the timing in Daily Followup Scan for follow-up processing.
- Configure Retrieve Followup Rows and Init Followup Data to prepare input for AI.
- Open AI Second Followup Email and define the follow-up prompt.
- Ensure Gemini Followup Model is connected as the language model and Followup JSON Parser as the output parser for AI Second Followup Email.
- Map outputs in Prepare Second Followup, then send with Dispatch Second Email.
- Update records in Modify Followup Records and notify in Notify Agent Followup Sent.
Credential Required: Connect your Google Gemini credentials in Gemini Followup Model.
Credential Required: Connect your SMTP credentials in Dispatch Second Email.
Credential Required: Connect your Telegram API credentials in Notify Agent Followup Sent.
Note: Followup JSON Parser is an AI tool sub-node; credentials should be added to the parent node Gemini Followup Model used by AI Second Followup Email.
Step 7: Configure Third Follow-Up and Completion Notifications
Run the third follow-up sequence and mark leads as complete.
- Set the schedule in Daily Second Followup Scan and load data with Retrieve Second Rows.
- Configure the timing logic in Check 24h Delay, then map fields in Init Third Followup.
- Open AI Third Followup Email and define the third follow-up prompt.
- Ensure Gemini Third Model is connected as the language model and Third JSON Parser as the output parser for AI Third Followup Email.
- Map outputs in Prepare Third Followup, then send with Dispatch Third Email.
- Update completion status in Update Records Status and notify in Notify Sequence Complete.
Credential Required: Connect your Google Gemini credentials in Gemini Third Model.
Credential Required: Connect your SMTP credentials in Dispatch Third Email.
Credential Required: Connect your Telegram API credentials in Notify Sequence Complete.
Note: Third JSON Parser is an AI tool sub-node; credentials should be added to the parent node Gemini Third Model used by AI Third Followup Email.
Step 8: Test and Activate Your Workflow
Validate the full sequence before enabling it for production.
- Manually execute Telegram Lead Intake by sending a test message from Telegram.
- Confirm that a new record is created in Add Table Record and that Dispatch Email sends an email.
- Trigger Daily Reply Scan and verify the workflow cycles through Retrieve Table Rows and Fetch Gmail Messages.
- Check that follow-up sequences run through Daily Followup Scan and Daily Second Followup Scan without errors.
- When everything is correct, switch the workflow to Active.
Common Gotchas
- Gmail credentials can expire or require the right OAuth scopes. If replies aren’t detected, check the Gmail node authentication status in n8n and reconnect the account.
- If you’re using Wait nodes or external timing logic, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Gemini prompts start generic unless you tighten them. Add your brand voice and a “do not sound salesy” instruction early, or you will be editing outputs forever.
Frequently Asked Questions
About an hour if your Telegram bot and Gmail login are ready.
No. You’ll mostly connect accounts and paste a Gemini API key. The “hard” part is deciding what you want the emails to sound like.
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 Gemini API usage costs, which are typically small for email-sized prompts.
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 keep it simple. You can add or remove follow-up steps by adjusting the scheduled follow-up checks and the “sequence number/status” fields stored in the data table. Most teams customize the timing (24 hours vs. 48), the tone per step (friendly vs. direct), and the notification channel (Telegram vs. Discord). The AI email composer and follow-up email nodes are the main places to tweak copy behavior.
Usually it’s expired OAuth credentials or missing permissions. Reconnect the Gmail node in n8n, then confirm the account has access to the inbox you’re scanning. If you’re processing lots of leads, you can also hit Gmail rate limits, so narrowing the search query and scanning less frequently helps.
Hundreds a week for most small teams, assuming your email account and n8n instance aren’t heavily loaded.
Often, yes. This workflow has multiple scheduled paths (reply scan, first follow-up scan, second follow-up scan) plus status logic, which is the kind of thing that gets pricey and fragile in simpler automation tools. n8n also gives you a self-hosted option, which means you aren’t paying per tiny step once volume grows. That said, Zapier or Make can be quicker for a basic “lead form → single email” setup. If you’re unsure, Talk to an automation expert and describe your lead volume and follow-up rules.
Set this up once, and your follow-up process stops living in your head. The workflow handles the repetitive nudges so you can focus on real conversations.
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.