Google Calendar to Telegram, daily agenda in one message
Your day shouldn’t start with app hopping. But if your schedule lives in Google Calendar, you’ve probably done the same morning routine: open Calendar, scan meetings, click into each event for links, then hope you didn’t miss the one call that actually matters.
This Calendar Telegram agenda automation hits busy founders hardest, because context switching steals focus fast. Marketers running campaigns and client-facing consultants feel it too, especially on days packed with short meetings. The outcome is simple: one Telegram message at 7AM with your full, readable agenda.
You’ll see how the workflow pulls events, checks if anything is scheduled, composes a clean summary (with help from AI if you want), and sends it to Telegram automatically.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Calendar to Telegram, daily agenda in one message
flowchart LR
subgraph sg0["Morning 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/code.svg' width='40' height='40' /></div><br/>Compute Event Count"]
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Morning Schedule Trigger", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Branch on Event Total", pos: "b", h: 48 }
n3["<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/>Compose Summary Text"]
n4["<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 No-Meeting Notice"]
n5@{ icon: "mdi:location-exit", form: "rounded", label: "Retrieve Calendar Events", pos: "b", h: 48 }
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/telegram.svg' width='40' height='40' /></div><br/>Dispatch Telegram Summary"]
n1 --> n5
n0 --> n2
n2 --> n3
n2 --> n4
n3 --> n6
n5 --> n0
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 n1 trigger
class n2 decision
class n0,n3 code
classDef customIcon fill:none,stroke:none
class n0,n3,n4,n6 customIcon
The Problem: Your Schedule Is Hidden in the Details
Google Calendar is great at holding information, but it’s not great at delivering it in the moment you need it. In the morning, you don’t want to “manage” your calendar. You want a quick read on what’s coming, where you need to be, and which meetings have links, notes, or locations you can’t forget. The friction is small, but constant. Miss one detail and you’re late, unprepared, or scrambling through threads while everyone else is already on the call.
It adds up fast. Here’s where it breaks down in real life.
- Checking your agenda means opening Calendar, then opening each event again for the important bits.
- Meeting links get missed because they’re buried in descriptions, and you only notice once you’re already running behind.
- Days with no meetings still cost you time because you check anyway, just to be sure.
- If you manage multiple calendars, the mental load doubles and mistakes become normal.
The Solution: A Daily Telegram Agenda Message from Google Calendar
This workflow turns your calendar into a single daily briefing delivered in Telegram. Every morning at 7AM, n8n triggers automatically, checks your Google Calendar for today’s events, then counts what it found. If there are meetings, it composes a clean summary message with the details you actually use (titles, times, and any key notes or links). If there’s nothing scheduled, it sends a simple “no events” message so you stop second-guessing your day. And because it’s Telegram, your agenda sits where you already look, not buried behind another tab.
The workflow starts with a scheduled trigger. Then Google Calendar events are retrieved and evaluated, and an If branch decides which message to send. Finally, Telegram delivers either the day’s agenda or a no-meeting notice, which means your morning planning becomes automatic.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you have 6 events today. Manually, you might spend about 2 minutes per event opening details for links, call notes, or locations, plus another few minutes scanning the day, which is roughly 15 minutes total. With this workflow, the “work” is basically zero: the trigger fires at 7AM, n8n pulls events, composes the summary, and Telegram receives it a moment later. Even if you only save 10 minutes a day, that’s close to an hour back every week.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Calendar to fetch your daily events
- Telegram to receive the agenda message
- Google account access (authorize Calendar in n8n)
Skill level: Beginner. You’ll connect accounts, pick a chat, and run one test execution.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Daily 7AM trigger. The workflow starts on a schedule (set to 7AM by default), so you get the agenda before your day ramps up.
Calendar retrieval and counting. n8n pulls today’s events from Google Calendar, then computes how many were returned. That one number decides which message you get.
Summary composition. If there are events, the workflow builds a readable text summary. In this workflow, a code step is used to format the message, and AI nodes are available if you want the agenda to sound more “human” or include smarter grouping.
Telegram delivery. You either receive the full day’s agenda or a simple no-meetings notice in Telegram, sent to the chat you choose (personal chat or a team channel).
You can easily modify the send time to match your routine based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the workflow to run automatically each morning using the scheduled trigger.
- Add the Morning Schedule Trigger node as your trigger.
- Set the schedule rule to run at
8in Trigger at Hour. - Connect Morning Schedule Trigger to Retrieve Calendar Events.
Step 2: Connect Google Calendar
Pull all calendar events for the day and sort them by start time.
- Add the Retrieve Calendar Events node.
- Credential Required: Connect your googleCalendarOAuth2Api credentials.
- Set Operation to
getAlland Return All totrue. - Set Calendar to
[YOUR_EMAIL]and keep Order By asstartTime. - Connect Retrieve Calendar Events to Compute Event Count.
[YOUR_EMAIL] with the actual calendar identifier or your email, otherwise no events will be returned.Step 3: Set Up Event Processing and Branching
Count the events and route the flow based on whether any meetings exist.
- In Compute Event Count, keep the default JavaScript code to calculate
eventCountandevents. - Add the Branch on Event Total node and connect it from Compute Event Count.
- Configure the condition to compare Left Value as
{{ $json.eventCount}}with Operationgreater thanand Right Value0. - Connect the true branch of Branch on Event Total to Compose Summary Text.
- Connect the false branch of Branch on Event Total to Send No-Meeting Notice.
Step 4: Compose and Send Telegram Messages
Build the digest message when meetings exist and deliver the correct Telegram notification.
- In Compose Summary Text, keep the default JavaScript that builds the daily summary message.
- Add Dispatch Telegram Summary and set Text to
{{ $json.text }}. - Credential Required: Connect your telegramApi credentials in Dispatch Telegram Summary.
- Set Chat ID to
[YOUR_ID]in Dispatch Telegram Summary. - Add Send No-Meeting Notice for the no-event branch and keep Text as
=👋 Hi! Your calendar is clear for today 🗓️✨. - Credential Required: Connect your telegramApi credentials in Send No-Meeting Notice.
- Set Chat ID to
[YOUR_ID]in Send No-Meeting Notice.
[YOUR_ID] unchanged will cause Telegram delivery failures. Replace it with your numeric chat ID.Step 5: Test and Activate Your Workflow
Verify the workflow sends the correct message for days with and without events.
- Click Execute Workflow to run Morning Schedule Trigger manually.
- Confirm Retrieve Calendar Events returns event items for today.
- Verify that Branch on Event Total routes to Compose Summary Text when
eventCountis greater than0. - Check Telegram for a summary message from Dispatch Telegram Summary or a no-meeting message from Send No-Meeting Notice.
- Toggle the workflow to Active to run it automatically each morning.
Common Gotchas
- Google Calendar credentials can expire or need specific permissions. If things break, check the Google connection inside n8n’s Credentials panel 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 20 minutes if you already have Google and Telegram access ready.
No. You’ll mostly connect accounts and choose where the Telegram message should go. The workflow already includes the logic for counting events and composing the message.
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 if you keep the AI nodes enabled.
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 the kind of customization that actually pays off. Change the Morning Schedule Trigger time if 7AM is too early (or too late). You can also edit the Compose Summary Text step to include locations, video-call links, attendees, or even a “first meeting starts in…” line. If you want the writing style to sound more like you, adjust the AI Agent prompt (or remove AI entirely and keep the code-based format). People also commonly route the Telegram message to a team channel on weekdays and a personal chat on weekends.
Usually it’s expired or revoked Google authorization in n8n. Reconnect your Google Calendar credential in n8n and make sure the account has access to the calendar you’re querying. Another common issue is pulling from the wrong calendar (personal vs work), which makes it look like “no events” even when your day is full.
For most calendars, dozens of events in a day is fine.
It depends, but for daily summaries n8n is often the calmer choice. You get richer formatting and logic (like branching on “no events”) without turning the automation into a pile of separate zaps or scenarios. Self-hosting is also a big deal if you hate per-task pricing. Zapier or Make can be quicker for very simple reminders, though. Talk to an automation expert if you want help choosing based on your volume and setup preferences.
One message. One glance. The workflow handles the repetitive checking so you can start the day already oriented.
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.