Automated daily schedule summary via Telegram. Every day at 10 PM (Asia/Jerusalem), this Make.com scenario fetches tomorrow's events from two Google Calendars and sends a formatted summary to your Telegram.
Schedule (10 PM daily)
│
▼
Google Calendar: Search Events (personal)
│
▼
Array Aggregator 1 (filter cancelled/declined)
│
▼
Google Calendar: Search Events (work)
│
▼
Array Aggregator 2 (filter cancelled/declined)
│
▼
Set Variable (merge + sort)
│
▼
Router ──────────────────────┐
│ │
│ has events │ no events
▼ ▼
Iterator Telegram: Send
│ "No events scheduled"
▼
Text Aggregator
│
▼
Telegram: Send Message
10 modules, approx. 10 operations per run, approx. 300 ops/month (30% of free tier).
Tomorrow's Schedule (Thu, Apr 9):
• All day -- Birthday: Alex
• All day -- Company Holiday
• 09:00-09:30 -- Standup (https://zoom.us/j/123456)
• 11:00-12:00 -- 1:1 with Alex
• 15:00-16:00 -- Design Review (Room 3)
- Each event is prefixed with a bullet (
•) - All-day events appear first, formatted as
• All day -- Title - Timed events follow in chronological order, formatted as
• HH:mm-HH:mm -- Title - Meeting links (Zoom, Google Meet, Teams) are shown as clickable URLs in parentheses
- Physical locations are shown in parentheses if no meeting link exists
- Empty days send: "No events scheduled for tomorrow (Thu, Apr 9)."
Before importing the blueprint, set up these three things:
- Open Telegram and search for @BotFather.
- Send
/newbotand follow the prompts to create a bot. Save the bot token (looks like123456789:ABCdefGhi...). - Send
/setjoingroupsto BotFather, select your bot, and choose Disable (security hardening). - Open a chat with your new bot in Telegram and send any message (e.g., "hello").
- Get your chat ID by opening this URL in a browser (replace
YOUR_BOT_TOKEN):Look forhttps://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates"chat":{"id":123456789}in the response. That number is your chat ID.
- Sign up at make.com (free tier, no credit card required).
- The free plan includes 1,000 operations/month and 2 active scenarios.
You need OAuth access to both Google accounts (personal and work). Make.com handles the OAuth flow -- you just sign in when prompted.
Important: Some Google Workspace organizations restrict third-party OAuth apps. If your work account connection fails, see Limitations for the workaround.
- In Make.com, click Create a new scenario.
- Click the ... menu (bottom of the editor) and select Import Blueprint.
- Open
scenario-blueprint.jsonfrom this repository, copy its contents, and paste into the import dialog. - Click Save.
After import, the two Google Calendar modules will show connection errors (expected -- connections can't be included in blueprints).
- Click the first Google Calendar module (Module 1 -- personal).
- Click Add next to the Connection field.
- Sign in with your personal Google account.
- Verify the permission dialog requests read-only calendar access (
calendar.readonly). Do not grant write access. - Click the second Google Calendar module (Module 3 -- work).
- Click Add and sign in with your work Google account.
- Same read-only verification.
- Click each Telegram Bot module (Module 9 and Module 10).
- Click Add next to the Connection field.
- Enter your bot token from the prerequisites.
- In the Chat ID field, replace
__PLACEHOLDER_CHAT_ID__with your numeric chat ID. - Do this for both Telegram modules (the "has events" path and the "no events" path).
- Click the clock icon at the bottom-left of the scenario editor.
- Set the schedule to Every day at 22:00 (10 PM).
- Verify the timezone shows Asia/Jerusalem. If not, change it in Scenario settings > Scheduling > Timezone.
- Click Run once at the bottom of the scenario editor.
- Check your Telegram -- you should receive tomorrow's schedule summary.
- If no events exist for tomorrow, you should see "No events scheduled for tomorrow."
- If a module shows an error, click it to see the details. Common issues:
- Google Calendar connection failed: Re-authorize the connection.
- Telegram 401 Unauthorized: Verify the bot token is correct.
- Telegram 400 Bad Request: Verify the chat ID is correct and you've sent at least one message to the bot.
- Toggle the scenario ON (bottom-left switch).
- The scenario will now run automatically every day at 10 PM.
| ID | Module | Purpose |
|---|---|---|
| 1 | Google Calendar: Search Events | Fetch tomorrow's events from personal calendar |
| 2 | Array Aggregator | Collect personal events, filter out cancelled/declined |
| 3 | Google Calendar: Search Events | Fetch tomorrow's events from work calendar |
| 4 | Array Aggregator | Collect work events, filter out cancelled/declined |
| 5 | Set Multiple Variables | Merge both arrays, sort by start time |
| 6 | Router | Branch: has events vs. no events |
| 7 | Iterator | Loop through merged events |
| 8 | Text Aggregator | Format each event into a message line |
| 9 | Telegram: Send Message | Send the formatted summary |
| 10 | Telegram: Send Message | Send "no events" message |
The free tier allows 1,000 operations/month. Each module execution counts as 1 operation.
| Daily events | Ops/run | Monthly (30 days) | % of free tier |
|---|---|---|---|
| 0 (empty day) | 8 | 240 | 24% |
| 5 | 10 | 300 | 30% |
| 10 | 10 | 300 | 30% |
| 15 | 10 | 300 | 30% |
The operation count is roughly constant regardless of how many events you have, because the Array Aggregators and Text Aggregator each count as 1 operation (they collect all bundles internally).
The blueprint provides the complete module structure and logic. A few things may need manual tuning after import:
Both Google Calendar modules use "primary" as the calendar ID, which corresponds to the main calendar of each connected account. If you want to pull events from a specific sub-calendar, replace "primary" with that calendar's ID (found in Google Calendar Settings > Integrate calendar).
- Work calendar data passes through third parties. Event titles, attendee names, meeting links, and locations flow through Make.com servers and are delivered to a personal Telegram account. Be aware of your organization's data policies.
- Google OAuth scope must be read-only. When connecting accounts, verify the requested permission is
calendar.readonly. This scenario never writes to your calendars. - Telegram bot token is the primary secret. Never commit it to version control or paste it into any file. It should only exist inside Make.com's encrypted connection storage.
- Telegram bot discoverability. The bot only sends messages -- it does not process incoming ones. Disable group invites via BotFather (
/setjoingroups> Disable) to reduce exposure.
- Google Workspace admin restrictions. Some organizations block third-party OAuth apps. If your work account connection fails, the workaround is to share the work calendar with your personal Google account (Settings > Share with specific people > "See all event details" permission), then use a single Google connection for both calendar modules.
- Make.com free tier cap. 1,000 ops/month, 2 active scenarios. This scenario uses approximately 300 ops/month, leaving room for one more scenario.
- Blueprint does not include credentials. OAuth connections and bot tokens must be configured manually after import (covered in the setup steps above).