Warm Telegram confirmations from you for new Calendly bookings

When someone books time on Calendly, send them a short personal Telegram note from your own account, but only if they are already an active DM contact.

Agentic Task
CalendlyTelegram Secretary BotSalesPersonal ProductivityNotifications & AlertsMeeting WorkflowsEmail Automation
PromptCreate

Build me an agent workflow that sends a warm, personal Telegram confirmation from my own Telegram account the moment someone books time with me on Calendly, but only if that person is already an active Telegram DM contact of mine. If they're not, do nothing. I never want to cold-DM strangers on Telegram.

Trigger: a Calendly webhook. On first run, subscribe to Calendly's invitee.created event using calendly Create Webhook Subscription so we get a live push the instant a booking lands. The workflow runs on every invitee.created payload.

When a booking fires, the agent should:

1. Read the invitee's name, email, and event details (start time, event type name, timezone, location or join URL) from the webhook payload. If any critical field is missing or the event looks like a reschedule/cancellation rather than a fresh booking, exit.

2. Optionally enrich the event with calendly Get Scheduled Event to pull the full scheduled event (final time, location, conferencing link) so the confirmation can quote the exact meeting details. Use this when the webhook payload alone doesn't include the location or join URL.

3. Call telegram-secretary Receive Updates to fetch recent updates from my linked Telegram account. Scan the recent business_message updates for a matching sender. Match on: (a) the invitee's full name against the sender's Telegram display name, and (b) any identifier the invitee may have shared with me in that DM recently, like their email address, company, or a phone number found in the message text. Only accept the match if the confidence is high, otherwise stop. Never guess.

4. Before sending, verify the match is inside the 24 hour reply window that Telegram's Business API enforces for as-user sends. The Receive Updates payload includes the last message's timestamp per chat, and the business_connection carries the rights the account owner granted. If the last inbound message is older than 24 hours, or if can_reply is not granted for that chat, skip silently and record why.

5. Draft a short, personal confirmation in first person, referring to the meeting by day and local time (for example: "great, locked in for Thursday 3pm ET, sending you the Zoom link in the invite, talk soon"). Keep it 1 to 3 sentences, no signature, no emoji unless the recent thread uses emoji, no formal salutation. Match the tone of my last few messages in that chat when possible.

6. Send the confirmation via telegram-secretary Send Message as User to the matched chat_id, using the business_connection_id from the same update stream.

If at any step the agent cannot confidently identify an active, in-window Telegram chat for the invitee, it must exit without sending anything and log the reason (no match / window closed / rights missing). This is the important safety property: silent no-op is the default, sending is the exception.

Integrations to use: calendly (Create Webhook Subscription, Get Scheduled Event) and telegram-secretary (Receive Updates, Send Message as User).

Additional information

What does this prompt do?
  • Watches Calendly for new bookings and reads the invitee's name, email, and meeting time.
  • Scans your recent Telegram DMs to find that person's chat, matching on name or on details they shared with you recently.
  • Sends a short, warm confirmation from your own Telegram account, so it reads like you typed it, not a bot.
  • Skips silently if there's no active Telegram thread, so you never DM strangers or people who haven't opted in.
What do I need to use this?
  • A Calendly account (any paid plan that supports webhooks).
  • A Telegram account with Business features turned on.
  • A Telegram Secretary bot that you have connected to your account, with permission to reply in your DMs.
  • The chats you want the assistant to see must be granted to the bot in Telegram's settings.
How can I customize it?
  • Change the tone and template of the confirmation (playful, formal, ultra-short, add a Zoom line, add a prep question).
  • Limit it to certain event types, like only demo calls or only paid coaching bookings.
  • Loosen or tighten how the agent matches an invitee to a Telegram chat, for example by requiring a company name or a phone number to appear in the recent conversation.

Frequently asked questions

Will this ever DM someone who isn't already talking to me on Telegram?
No. If the agent can't find a matching active DM in your Telegram account, it does nothing. It never cold-messages people, and it never invents a chat.
How does the agent match a Calendly invitee to a Telegram chat?
It reads the invitee's name and email from the booking, then looks through your recent Telegram DMs for a sender that matches by name or by something they shared recently, like a company, phone number, or email. If it's not confident, it stops.
Why does it only work for people who messaged me in the last 24 hours?
Telegram's Business rules only allow a Secretary bot to send messages as you inside a 24 hour reply window from the contact's last message. If the window has closed, the agent skips and does not send.
Can the confirmation include the meeting time and Zoom link?
Yes. The agent can pull the full meeting details from Calendly, including the start time and the location or video link, and weave them into the confirmation naturally.
What if I want to review the message before it sends?
You can ask for a review step. Instead of sending automatically, the agent can draft the message and post it to you first (in Slack, email, or as a Telegram message to yourself) so you approve or edit before it goes out.

Confirm Calendly bookings on Telegram, in your own voice.

Connect Calendly and your Telegram Secretary bot once, and Geni sends a warm personal reply the moment someone you already DM books time with you.