1. Opening Problem Statement
Meet Aitor, an event coordinator who schedules dozens of client meetings weekly using Cal.com. Every time a new booking happens, Aitor spends at least 30 minutes manually copying attendee information into a Google Sheet for record-keeping, adding the attendees to the company newsletter hosted on Beehiiv, and notifying his team on Telegram about new bookings. This repetitive process is error-prone and time-consuming, causing delays in communication and missed opportunities for marketing outreach.
Without automation, Aitor risks inconsistent data entry, lost subscriber leads to his newsletter, and slow team updates. Manually managing these tasks for multiple attendees per meeting means wasted hours each week that could be spent on higher-value activities.
2. What This Automation Does
This specific n8n workflow connects Cal.com booking events directly to your newsletter management on Beehiiv, stores attendee details in Google Sheets, and notifies your team on Telegram—all automatically when a meeting is booked. Here’s what happens:
- When a new meeting is scheduled on Cal.com, the booking data triggers the workflow immediately.
- The list of attendees from the booking is split into individual entries for processing.
- Each attendee’s details (name, email, timezone, meeting info) are appended as a new row in a Google Sheet for organized tracking.
- The attendee’s email is used to subscribe them to your Beehiiv newsletter automatically, expanding your mailing list effortlessly.
- A formatted Telegram message posts details about the new booking and attendees to a specified Telegram channel or group to keep your team instantly informed.
- This entire process runs without manual intervention, saving hours per week and preventing human errors in data handling.
3. Prerequisites ⚙️
- Cal.com account — to create and manage your meeting bookings.
- Google Sheets account 📊 — for storing booking attendee data.
- Beehiiv account 🔑 — to manage and send newsletters.
- Telegram account 💬 — for instant team notifications.
- n8n account 🔧 — to build and run the workflow (self-hosting supported for advanced users).
- API credentials for Google Sheets OAuth2, Cal.com API, Beehiiv API key, and Telegram Bot API token.
4. Step-by-Step Guide
Step 1: Set up Cal.com Webhook Trigger “on New Booking”
Navigate to n8n → Create a new workflow → Add Calendar Trigger node from the node list.
Configure it to listen for the BOOKING_CREATED event. Enter your Cal.com API credentials here.
Copy the webhook URL provided by n8n. Then, go to your Cal.com settings → Webhooks → Add a new webhook using this URL and test the connection by making a test booking.
Once you see test data collected in the node’s output, proceed. Common mistake: forgetting to activate the webhook in Cal.com or using the wrong event type.
Step 2: Split Attendees List
Add the SplitOut node and connect it from the Calendar Trigger node.
In the node parameters, set the field to split as attendees, which contains all meeting guests.
This splits one booking event with multiple attendees into individual attendee objects for further processing.
Outcome: You’ll see multiple executions, one per attendee.
Step 3: Store Attendee Data in Google Sheets “Add users” Node
Add a Google Sheets node and link it to the output of the node where you set individual attendee data (after “Set Attendee” node).
Set operation to Append for adding new rows.
Configure columns such as title (event title), length (meeting duration), timeZone, createdAt, attendeeName, meetingStart, and attendeeEmail.
Use expressions to dynamically populate these fields based on the incoming booking data, e.g., {{ $('on New Booking').item.json.eventTitle }}.
Expected result: Each attendee’s info recorded as a new row in the specified Google Sheet.
Common mistake: Incorrect Google Sheets document or sheet ID setup.
Step 4: Subscribe Attendees to Beehiiv Newsletter “Add subscriber” Node
Configure an HTTP Request node for the POST method to the endpoint:
https://api.beehiiv.com/v2/publications/{{ publicationId }}/subscriptionsUnder Body Parameters, send attendee’s email extracted with expression {{ $('Split Attendees').item.json.email }}.
Add Authorization header with Bearer token as your Beehiiv API key configured in a prior Set node.
This adds each attendee automatically to your newsletter mailing list.
Common mistake: Wrong API key or missing publication ID.
Step 5: Notify Team in Telegram “notify in channel” Node
Add the Telegram node connected to the ‘Add subscriber’ node.
Prepare a message template including booking details (event name, start time, attendee name/email, timezone) using expressions to dynamically fill content, for example:
📅 New meeting booked
Event name: {{ $('Add users').item.json.title }}
Start Date: {{ $('Add users').item.json.meetingStart }} UTC
Name: {{ $('Add users').item.json.attendeeName }}
Email: {{ $('Add users').item.json.attendeeEmail }}
User time zone: {{ $('Add users').item.json.timeZone }}Set your Telegram Chat ID where you want to receive notifications.
Common mistake: Not adding the bot as admin in your Telegram channel or incorrect Chat ID.
Step 6: Define Static Data “set data” Node
Use a Set node to define static details like your Telegram chat ID, Beehiiv API key, and publication ID which you reuse across nodes using expressions.
This avoids hardcoding secrets in multiple nodes and centralizes configuration.
Step 7: Prepare Attendee Data “Set Attendee” Node
After splitting attendees, use another Set node to pick and rename fields such as name, email, and timeZone so downstream nodes can access them cleanly.
Step 8: Testing Your Workflow
Make a test booking on Cal.com with multiple attendees.
Check Google Sheets for new rows, verify newsletter subscription using Beehiiv’s dashboard or API, and confirm Telegram notification arrives as expected.
5. Customizations ✏️
- Add Custom Meeting Data: In the Google Sheets node, add extra columns like “Meeting Location” or “Meeting Type” by mapping additional Cal.com booking data fields.
- Send Customized Welcome Email: Add a Gmail or Email node after subscriber creation to send personalized welcome emails to attendees.
- Notify Multiple Telegram Channels: Duplicate the Telegram node and set different chat IDs to notify multiple teams or stakeholders.
- Filter Attendees by Domain: Add an IF node before subscription to only add attendees with specific email domains to the newsletter.
- Extend to CRM: Integrate another node like HubSpot or Salesforce to add attendees as CRM contacts after Google Sheets addition.
6. Troubleshooting 🔧
Problem: “Webhook test data not triggering workflow”
Cause: Webhook URL not correctly set in Cal.com or webhook inactive.
Solution: Confirm webhook URL matches exactly from the calendar trigger node, reactivate webhook in Cal.com, and resend test booking.
Problem: “Google Sheets append fails with permission error”
Cause: Incorrect Google Sheets OAuth credentials or wrong spreadsheet ID.
Solution: Re-authenticate Google Sheets credentials in n8n, verify spreadsheet permissions, and ensure correct document ID is used.
Problem: “Beehiiv API 401 Unauthorized”
Cause: Invalid API key or missing Bearer token.
Solution: Double-check Beehiiv API key in the set node, ensure usage of Bearer token format, and verify presence of publication ID.
Problem: “Telegram messages not sent”
Cause: Bot not admin of the channel or wrong Chat ID.
Solution: Add your Telegram bot as admin in the channel and confirm chat ID; test sending messages manually through node.
7. Pre-Production Checklist ✅
- Verify Cal.com webhook is activated and test booking triggers workflow.
- Ensure Google Sheets node appends rows correctly with expected columns.
- Confirm Beehiiv API and publication ID are correct by testing subscription requests.
- Test Telegram notifications arrive in intended chat/channel.
- Backup your Google Sheet data before first run to avoid accidental overwrites.
8. Deployment Guide
Activate your workflow in n8n by toggling the active switch after all configurations.
Monitor executions via n8n’s dashboard to ensure bookings are processed smoothly.
Set error workflows to handle issues gracefully for uninterrupted automation.
For self-hosting, consider using services such as Hostinger for reliable uptime and control.
9. FAQs
- Can I use other calendar services? This workflow relies on Cal.com for its booking webhook event; substituting other calendars may require different triggers.
- Does Beehiiv API usage cost extra? Beehiiv API calls typically are included in your plan but check API limits for large subscriber volumes.
- Is my subscriber data secure? Using OAuth and API keys securely in n8n ensures data privacy; avoid exposing keys publicly.
- Can this workflow handle bulk attendee bookings? Yes, the SplitOut node manages multiple attendees efficiently by processing them one at a time.
10. Conclusion
By following this guide, you have created a customized n8n automation that transforms new meeting bookings on Cal.com into organized Google Sheets entries, added newsletter subscribers in Beehiiv automatically, and keeps your team informed via Telegram notifications.
This reads booking data accurately and saves at least 30 minutes per booking session from tedious manual data entry while reducing errors and improving communication.
Next, you might want to explore adding automated follow-up emails, CRM integration for deeper contact management, or analytics tracking to measure your meeting engagement and newsletter growth.
Happy automating!