Telegram to Google Calendar, meetings handled in chat
Your calendar shouldn’t require five taps, three screens, and a mental reset just to add “Call with Alex at 3.” But that’s what happens. And then the reminder shows up with zero context, so you’re still scrambling.
This Telegram Calendar automation hits founders and marketers first because the day is already chopped into meetings. Agency operators feel it too when client calls keep shifting and nobody wants to open yet another app. The goal is simple: you message (or send a voice note), the event lands in Google Calendar, and you get a smart reminder that actually helps.
Below is how the workflow runs, what it automates, and what you can change to fit how you schedule.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Telegram to Google Calendar, meetings handled in chat
flowchart LR
subgraph sg0["Reminder 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/telegram.svg' width='40' height='40' /></div><br/>Send Typing Indicator"]
n1["<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/>Send AI Response"]
n2@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Model", pos: "b", h: 48 }
n3@{ icon: "mdi:play-circle", form: "rounded", label: "Reminder Schedule", pos: "b", h: 48 }
n4@{ icon: "mdi:location-exit", form: "rounded", label: "Get Upcoming Events", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Filter Duplicate Reminders", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Reminder Message Agent", pos: "b", h: 48 }
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/telegram.svg' width='40' height='40' /></div><br/>Send Reminder"]
n8@{ icon: "mdi:robot", form: "rounded", label: "Calendar Manage!", pos: "b", h: 48 }
n9@{ icon: "mdi:location-exit", form: "rounded", label: "Delete event", pos: "b", h: 48 }
n10@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n11@{ icon: "mdi:location-exit", form: "rounded", label: "Get events", pos: "b", h: 48 }
n12@{ icon: "mdi:location-exit", form: "rounded", label: "Create Event", pos: "b", h: 48 }
n13@{ icon: "mdi:location-exit", form: "rounded", label: "Update Event", pos: "b", h: 48 }
n14@{ icon: "mdi:robot", form: "rounded", label: "OpenAI", 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/telegram.svg' width='40' height='40' /></div><br/>📥 Download Voice"]
n16["<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/>Start"]
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/merge.svg' width='40' height='40' /></div><br/>Merge"]
n18@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n19["<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/>Typing 2"]
n20@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n17 --> n19
n16 --> n18
n14 --> n17
n18 --> n0
n18 --> n15
n19 --> n8
n11 -.-> n8
n20 --> n17
n12 -.-> n8
n9 -.-> n8
n13 -.-> n8
n10 -.-> n8
n8 --> n1
n3 --> n4
n4 --> n5
n2 -.-> n6
n2 -.-> n8
n15 --> n14
n0 --> n20
n6 --> n7
n5 --> n6
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 n3,n16 trigger
class n6,n8,n14 ai
class n2 aiModel
class n10 ai
class n18 decision
classDef customIcon fill:none,stroke:none
class n0,n1,n7,n15,n16,n17,n19 customIcon
The Problem: Calendar Updates Get Lost in the Shuffle
Scheduling looks “quick” until you count the hidden steps. You get a message, you switch apps, you hunt for the right date, you type the details, you guess the timezone, and you hope you didn’t miss a conflict. Then you do it again when the time changes. Add voice notes into the mix and it gets worse because you’re replaying audio, copying details by hand, and still second-guessing what you heard. The real cost isn’t just time. It’s the constant context switching that makes everything else feel harder than it should.
It adds up fast. Here’s where the friction usually shows up day to day.
- Small scheduling mistakes happen more than you want to admit, like the wrong day, missing a link, or forgetting to add a prep note.
- Voice messages are “convenient” until you have to listen twice and still manually build the event.
- Generic reminders don’t help much, so you end up opening the calendar anyway to remember what the meeting is for.
- When plans change, updating an event becomes another mini-task you postpone, which is how meetings slip through.
The Solution: Manage Google Calendar from Telegram (Text or Voice)
This workflow turns Telegram into your calendar front door. A message to your bot (or a voice note) kicks everything off. If you speak, the bot downloads the voice clip and transcribes it through OpenAI so it becomes clean text. Then an AI chat engine interprets what you meant (“move my 2pm to 3,” “what’s on tomorrow,” “delete Friday’s standup”) and passes that intent to a calendar agent that can create, update, delete, or fetch events directly in Google Calendar. Separately, a scheduled check runs every 15 minutes to look for upcoming meetings, removes duplicates, and generates a reminder message that sounds human and includes useful context.
The workflow starts in Telegram, then normalizes your request (text and voice follow the same path), and finally uses Google Calendar tools to take action. Reminders get delivered back into Telegram, with typing indicators so the interaction feels like a real assistant instead of a robot.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you handle 5 meetings a week that get rescheduled, plus you add another 5 new ones. Manually, it’s usually about 5 minutes to create an event and about 5 minutes to update it (open calendar, find the right event, adjust time, add notes), so you’re spending roughly 100 minutes a week just keeping things accurate. With this workflow, you drop a quick Telegram message or a 20-second voice note, wait for the bot to confirm, and you’re done in about a minute per change. That’s around an hour back each week, without trying to “get more disciplined.”
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram Bot to receive messages and voice notes
- Google Calendar to create and manage events
- OpenAI API key (get it from your OpenAI API dashboard)
Skill level: Intermediate. You’ll connect credentials, paste a few IDs (like your Telegram chat ID), and do basic testing.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A Telegram message (or voice note) triggers everything. Text goes straight into the command flow. Voice notes get downloaded from Telegram first, then prepared for transcription.
Voice becomes text, and everything gets standardized. OpenAI transcribes the audio, then a Switch routes both message types into the same processing path so you’re not maintaining two separate automations.
An AI agent turns intent into calendar actions. The Gemini chat engine interprets what you want, and the “Calendar Manage!” agent calls Google Calendar tools to create, update, delete, or fetch events. A small memory buffer keeps the conversation coherent, which means follow-ups like “make it 30 minutes later” still make sense.
Reminders run on a schedule and arrive in Telegram. Every 15 minutes the workflow checks what’s coming up (about the next hour), removes duplicate alerts, and uses a reminder agent to write a friendly, tailored message. Then Telegram delivers it, including a typing indicator for a more natural feel.
You can easily modify reminder timing to match your day. Many people change it from “about an hour before” to something like 2 hours for deep work blocks, or 15 minutes for quick calls. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
This workflow starts from both a scheduled reminder and an incoming Telegram message. Configure each trigger so the automation knows when to run.
- Add and open Scheduled Reminder Trigger, then define the schedule that should run reminders (leave defaults if already set).
- Open Telegram Entry Trigger and connect it to your Telegram bot so user messages can initiate calendar actions.
- Verify the trigger flow: Scheduled Reminder Trigger → Retrieve Upcoming Events and Telegram Entry Trigger → Route by Condition.
Step 2: Connect Google Calendar
Google Calendar powers both scheduled reminders and conversational calendar edits.
- Open Retrieve Upcoming Events and connect your Google Calendar account.
- Ensure calendar tools are attached to Calendar Control Agent: Fetch Calendar Entries, Generate Calendar Entry, Modify Calendar Entry, and Remove Calendar Entry.
- Confirm the reminder flow: Retrieve Upcoming Events → Remove Duplicate Alerts → Compose Reminder Agent.
Step 3: Set Up AI Agents and Language Models
Two AI agents generate reminders and handle interactive calendar requests, with connected language models and memory.
- Open Gemini Chat Engine and connect it as the language model for both Compose Reminder Agent and Calendar Control Agent.
- Open OpenAI Chat Engine to handle voice-driven requests after 📥 Retrieve Voice Clip.
- Ensure Compact Memory Buffer is connected as memory for Calendar Control Agent so the agent can retain conversational context.
Step 4: Configure Routing, Mapping, and Parallel Merges
Telegram requests are routed, mapped, and merged with AI outputs before reaching the calendar agent.
- Open Route by Condition and define rules for message types (text vs voice) to direct to Dispatch Typing Signal or 📥 Retrieve Voice Clip.
- Configure Dispatch Typing Signal and Typing Indicator B to show typing status in Telegram before replying.
- In Map Data Fields, map any needed fields for message context before the merge step.
- OpenAI Chat Engine outputs to both Combine Streams inputs in parallel.
- Map Data Fields outputs to both Combine Streams inputs in parallel.
- Confirm the merge flow: Combine Streams → Typing Indicator B → Calendar Control Agent.
Step 5: Configure Output and Telegram Notifications
Final responses and reminders are delivered through Telegram after AI processing.
- Connect the output of Calendar Control Agent to Post AI Reply to send interactive responses.
- Ensure the reminder branch runs: Compose Reminder Agent → Deliver Reminder Notice.
- Connect Telegram credentials to all Telegram nodes (5+ nodes handle typing indicators, message retrieval, and replies).
Step 6: Test and Activate Your Workflow
Validate each branch, then activate the workflow for production use.
- Click Execute Workflow to run a manual test and verify the scheduled reminder branch reaches Deliver Reminder Notice.
- Send a Telegram message to trigger Telegram Entry Trigger and confirm a response is posted by Post AI Reply.
- Check that Calendar Control Agent can create, modify, and remove events using its tool nodes.
- When tests pass, switch the workflow to Active to enable live reminders and conversational calendar management.
Common Gotchas
- Google Calendar OAuth credentials can expire or lose permissions after a security update. If events stop being created, check the n8n Credentials screen and re-auth the Google account first.
- If you’re using Wait nodes or external processing (like transcription), processing times vary. Bump up the wait duration if downstream nodes fail on empty responses, especially when Telegram voice files are longer.
- Default AI prompts are generic. Add your preferred tone and formatting early (formal vs casual, how to write titles, what details to include) or you will keep rewriting the bot’s messages.
Frequently Asked Questions
About 30 minutes if you already have your Telegram bot and Google account ready.
No. You’ll mostly connect accounts and paste a few values like chat IDs and timezone preferences.
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 for voice transcription, which are usually a few cents per transcription depending on length.
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 more control but you’ll handle updates and uptime.
Yes, and it’s one of the easiest tweaks. Change the Scheduled Reminder Trigger interval (it runs every 15 minutes by default), and adjust the “upcoming window” used when retrieving events (it checks roughly the next hour). You can also customize the reminder message style in the Compose Reminder Agent prompt, like adding location, call links, prep questions, or a more formal tone. If you want reminders in a group chat, you can swap the Telegram chat ID handling so it routes to different chats.
Usually it’s the bot token or chat ID being wrong, or the bot hasn’t “seen” the chat yet. Regenerate or re-copy the BotFather token, then confirm you’re using the right chat ID for where you’re testing. If your bot works for messages but not voice, double-check that the workflow can download voice files (Telegram permissions and the node settings) before it hits transcription.
A typical setup can handle dozens of commands a day without drama, and the reminder loop just runs every 15 minutes. On n8n Cloud Starter, you’re limited by monthly executions; self-hosting removes that cap and shifts the limit to your server. If you plan to run this for a whole team with lots of chats, you’ll want to add basic rate limiting and smarter routing so one busy day doesn’t spike your AI usage.
Often, yes. This workflow relies on an AI agent with memory plus multiple calendar actions (create, update, delete, fetch) and that’s awkward to model as a bunch of separate Zaps or Make scenarios. n8n also gives you a self-host option, which matters when reminders run on a schedule and execution counts add up. The tradeoff is setup: you’re configuring a “real” workflow, not a two-click template. If you want, Talk to an automation expert and you’ll get a straight answer for your situation.
Once this is in place, your calendar stops being another app you manage and starts behaving like a system that keeps up with you. Set it up once, then let Telegram handle the busywork.
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.