🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Sheets + Telegram: approve cold emails fast

Lisa Granqvist Partner Workflow Automation Expert

You finally block time to do outreach, then half of it disappears into copying rows, rewriting “personalized” lines, and double-checking you didn’t email the same lead twice.

Growth marketers feel this when pipeline targets loom. Founders doing sales themselves get dragged into the same chaos. And agencies? They’re stuck proving consistency across clients. This Telegram email approval automation gives you fast drafts, a simple approve/reject loop, and clean tracking without losing human control.

You’ll see exactly how the workflow pulls “Available” leads from Google Sheets, drafts emails with Gemini, routes approvals in Telegram, and only then sends and logs every message.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + Telegram: approve cold emails fast

The Problem: Cold email gets slow (or sloppy) at scale

Cold email is one of those tasks that looks quick until you actually do it daily. You pull a lead list, try to personalize without sounding weird, write a subject line that isn’t spammy, then you still need to send, log, and update statuses so you don’t hit the same person again next week. If you use AI to speed it up, quality control becomes the new bottleneck. And if you skip control, you end up with “personalized” messages that are frankly embarrassing. The time cost is bad. The mental load is worse.

The friction compounds. Here’s where it breaks down.

  • Leads sit in a sheet with “Available” status, but turning each row into a send-ready email still takes about 10 minutes of manual work.
  • AI drafts help, but without a clean approve/reject loop you either ship mediocre copy or spend forever editing.
  • Tracking becomes unreliable because updates land in the wrong tab, or not at all, so you can’t audit what was sent.
  • Sending too fast (or inconsistently) can trip spam filters, which means deliverability takes the hit instead of the workflow.

The Solution: AI drafts + Telegram approval + automatic sending and logging

This workflow starts with a simple manual launch in n8n, then grabs the current timestamp so every action is logged cleanly. It pulls leads from your Google Sheet tab called “Filtered Leads” where the status is set to “Available,” and it limits the batch (three leads by default) so you stay in control. For each lead, Google Gemini generates a subject and email body based on the lead data (name, company, job title, LinkedIn, notes, and website context). Then it posts a preview into Telegram with two buttons: approve or reject. Approve sends the email via SMTP, updates statuses, and writes to two tracking tabs plus an archive. Reject asks you for feedback in Telegram, regenerates a new version, and re-sends it for approval.

The workflow begins by fetching a small batch of leads from Google Sheets. Gemini drafts the email, then Telegram becomes the quality gate. Finally, approved emails send through your SMTP account and all three Sheets tabs get updated, so you can always prove what happened.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you run outreach in small daily batches: three leads at a time. Manually, a “quick” personalized email often takes about 10 minutes between researching, drafting, sending, and logging, which is roughly 30 minutes per batch. With this workflow, the batch fetch and drafting happens automatically, then you spend maybe 1-2 minutes per message approving or rejecting in Telegram (about 5 minutes total). The sends and sheet updates happen in the background, with a one-second pause between emails.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store leads and tracking tabs.
  • Telegram for fast approve/reject decisions.
  • Google Gemini API key (get it from Google AI Studio).

Skill level: Intermediate. You’ll connect accounts, map sheet columns, and test the approval loop end-to-end.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

Manual launch, then timestamp logging. You start the run when you’re ready, and the workflow captures the current date and time so your logs are consistent across Sheets tabs.

Lead selection from Google Sheets. It pulls rows from the “Filtered Leads” tab where Status equals “Available,” then limits the pull (three leads by default) and loops through them one by one.

Draft generation and structured parsing. Gemini creates a subject line and body using fields like CompanyName, JobTitle, Website, LinkedIn, and Notes. The output is parsed into a clean structure so it can be archived and sent without formatting surprises.

Telegram approval and branching. Each draft is posted to your Telegram chat with Approve/Reject. Approve sends via SMTP, updates the lead status, and appends rows into “Sent Leads” and “Emails Sent.” Reject asks for your feedback in Telegram, regenerates a revised draft, then requests approval again.

You can easily modify batch size and filtering rules to match your list hygiene and sending volume. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

Start the workflow on demand so you can control when lead processing begins.

  1. Add the Manual Launch Trigger node as your entry point.
  2. Connect Manual Launch Trigger to Current Time Stamp to follow the defined execution flow.

Step 2: Connect Google Sheets

Pull available leads and prepare the batch processing logic.

  1. Open Retrieve Lead List and set Document to [YOUR_ID] and Sheet to Filtered Leads (from the list fields).
  2. In Retrieve Lead List, keep the filter where Status equals Available.
  3. Configure Limit Lead Fetch with Max Items set to 3.
  4. Ensure the path flows Current Time StampRetrieve Lead ListLimit Lead FetchIterate Lead Batches.

Credential Required: Connect your Google Sheets credentials in Retrieve Lead List, Update Filtered Leads, Append Sent Leads, and Archive Draft to Sheet.

Step 3: Set Up AI Email Drafting and Parsing

Generate structured email drafts using Gemini and parse them into Subject and Body fields.

  1. In Email Draft Generator, set Prompt to Generate a personalized cold email based on the lead data provided. and keep Has Output Parser enabled.
  2. Connect Gemini Chat Engine as the language model for Email Draft Generator.
  3. Attach Parse Email Structure to Email Draft Generator as the output parser, with JSON Schema Example set to { "Subject": "Subject Line", "Body": "Body Text" } and Auto Fix enabled.
  4. Connect Gemini Parser Model as the language model for Parse Email Structure.

Credential Required: Connect your Google Gemini credentials in all Gemini nodes (grouped across 6 nodes, including Gemini Chat Engine, Gemini Parser Model, Gemini Update Model, Gemini Archive Model, Gemini Revision Model, and Gemini Revised Parser).

OpenAI/Gemini tools like Parse Email Structure are sub-nodes. Add credentials to the parent Gemini model node, not the parser itself.

Step 4: Configure Approval Routing and Parallel Outputs

Send drafts to Telegram for approval while archiving the draft data in parallel.

  1. Set Telegram Approval Prompt to Operation sendAndWait and Message to =Subject:{{ $json.output.Subject }}\n\nBody: {{ $json.output.Body }}, and set Chat ID to [YOUR_ID].
  2. Keep the route from Telegram Approval Prompt into Approval Route Switch to handle approve/reject logic based on {{ $json.data.approved }}.
  3. Note the parallel flow: Email Draft Generator outputs to both Merge Lead + Draft and Telegram Approval Prompt in parallel.
  4. In Merge Lead + Draft, pass combined lead and email data forward to Email Archive Agent.

Credential Required: Connect your Telegram credentials in Telegram Approval Prompt, Telegram Revision Query, and Telegram Batch Notice.

⚠️ Common Pitfall: If Telegram Approval Prompt doesn’t return an approval payload, the Approval Route Switch will never route to Dispatch Email. Ensure the node is set to sendAndWait and approvals are enabled.

Step 5: Configure Email Dispatch and Send Pacing

Send approved emails and pause between sends.

  1. In Dispatch Email, set To Email to {{ $('Retrieve Lead List').item.json.Email }}.
  2. Set Subject to {{ $('Email Draft Generator').item.json.output.Subject }} and Text to {{ $('Email Draft Generator').item.json.output.Body }}\n\n--\nCompany Team.
  3. Set From Email to [YOUR_EMAIL] and keep Email Format as text.
  4. Configure Pause After Send with Amount set to 1 to throttle email sends.

Credential Required: Connect your SMTP/Email credentials in Dispatch Email.

Step 6: Set Up Sheet Updates and Archiving

Record sent emails, update lead status, and archive drafts.

  1. In Sheet Update Agent, keep the prompt Update sheets: append to Sent Leads and update status to Sent in Filtered Leads..
  2. Set Session Memory Buffer with Session Key {{ $('Retrieve Lead List').item.json['Lead \nID'] }} and Context Window Length 100 to track per-lead memory.
  3. In Update Filtered Leads, keep Operation as update and mapping values like {{ $fromAI('Status', '', 'string') }} and {{ $fromAI('Lead__ID', '', 'string') }}.
  4. In Append Sent Leads, keep Operation as append and map fields to AI values like {{ $fromAI('Name', '', 'string') }} and {{ $fromAI('Sent_Date', '', 'string') }}.
  5. Use Email Archive Agent to send combined data to Archive Draft to Sheet with mapped fields {{ $fromAI('Email_Body', '', 'string') }} and {{ $fromAI('Email_Subject', '', 'string') }}.

AI tool sub-nodes like Update Filtered Leads, Append Sent Leads, and Archive Draft to Sheet inherit credentials from their parent agent nodes. Ensure credentials are added to the parent AI nodes using Google Sheets.

Step 7: Configure Revision Loop (Rejected Approvals)

When an email is rejected, collect feedback and regenerate the draft.

  1. In Approval Route Switch, keep the second output (Rejected) connected to Telegram Revision Query.
  2. Set Telegram Revision Query to Operation sendAndWait and Response Type freeText with message How to change email?.
  3. In Regenerate Email Agent, keep the prompt Regenerate email based on user feedback. and ensure Has Output Parser is enabled.
  4. Attach Parse Revised Output as the output parser with schema { "Subject": "Subject Line", "Body": "Body Text" }, and connect Gemini Revised Parser as its language model.
  5. Confirm that Regenerate Email Agent routes back to Telegram Approval Prompt for another approval cycle.

Rejected approvals create a loop: Telegram Revision QueryRegenerate Email AgentTelegram Approval Prompt. This ensures the draft is re-approved before sending.

Step 8: Test and Activate Your Workflow

Validate each branch and then enable the workflow for production.

  1. Click Execute Workflow and start from Manual Launch Trigger.
  2. Confirm leads are fetched from Retrieve Lead List and limited by Limit Lead Fetch.
  3. Verify that Telegram Approval Prompt sends the draft with the subject/body rendered from {{ $json.output.Subject }} and {{ $json.output.Body }}.
  4. Approve once to ensure Dispatch Email sends to the lead’s email and that Pause After Send runs.
  5. Reject once to ensure Telegram Revision Query and Regenerate Email Agent loop back correctly.
  6. When tests pass, toggle the workflow to Active to run it in production.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets permissions can be oddly specific. If updates fail, check the n8n Google Sheets credential and confirm it can edit all three tabs (Filtered Leads, Sent Leads, Emails Sent).
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Gemini prompts that are “good enough” on day one often drift off-brand later. Add your voice, offer, and do-not-say rules early or you will be rewriting drafts every day.

Frequently Asked Questions

How long does it take to set up this Telegram email approval automation?

About an hour if your Sheets and Telegram bot are ready.

Do I need coding skills to automate Telegram email approval?

No. You’ll mainly connect accounts and map your sheet columns into the AI prompt and email fields.

Is n8n free to use for this Telegram email approval workflow?

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 and your email provider costs.

Where can I host n8n to run this automation?

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.

Can I customize this Telegram email approval workflow for different lead rules or tone?

Yes, and you should. You can change the lead filter in the Google Sheets retrieval node so it pulls Status = “Available,” Priority = “High,” or even a Campaign tag. You can also adjust the batch limit node (it’s set to three leads per execution by default). For tone, update the Gemini prompt inside the Email Draft Generator agent, and keep your must-use offer points in the prompt so every draft stays consistent. Many teams also add extra lead context to the Telegram approval message, like JobTitle and Notes, to make approvals faster.

Why is my Telegram connection failing in this workflow?

Usually it’s a bad bot token or the chat ID is wrong. Regenerate the token in BotFather if needed, confirm you’re sending to the correct chat, and check that the bot is actually added to the group (and allowed to post). If approvals work sometimes and then fail, rate limits can also be the culprit when you crank up batch size.

How many leads can this Telegram email approval automation handle?

The template processes three leads per execution by default, but you can raise that limit as long as your sending reputation and approval capacity can keep up.

Is this Telegram email approval automation better than using Zapier or Make?

Often, yes, because the approval loop is not just a single “approve” step. You’ve got branching (approve vs. reject), a feedback-driven regeneration path, structured parsing, and multi-sheet logging, and n8n handles that kind of logic cleanly. The other big difference is control over cost and volume: self-hosting removes execution limits, which matters when you run outreach every day. Zapier or Make can still be fine if you only need a basic draft-to-send flow with no revisions. If you’re unsure, pick based on how often you expect rejections and edits, because that’s where simple automations get messy fast. Talk to an automation expert if you want a second opinion.

You get faster outreach without handing the keys to an AI. Set up the approval loop once, keep your tracking clean, and move on to work that actually grows revenue.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal