Smart lead routing for new Cal.com bookings
When someone books a meeting, an agent figures out who they are, scores them, and routes the booking to the right rep in Slack and HubSpot.
Build me an agent workflow that routes every new inbound Cal.com booking to the right rep before the meeting starts. Trigger: poll Cal.com for the new_booking event.
When a new booking fires, the agent should pull full booking details from Cal.com using Get a Booking so it has the attendee email, event type, scheduled time, and any intake form answers.
Then the agent classifies the attendee by running HubSpot Search Contacts on the attendee email. There are three branches:
1) Existing customer (HubSpot lifecycle stage = customer): post a message in the account-management Slack channel naming the attendee, event type, scheduled time, and the existing CSM. Also use HubSpot Create Task to create a task for the existing contact owner with subject like "Cal.com booking from existing customer <name>" and a due date matching the meeting time.
2) Existing open opportunity: run HubSpot Search Deals filtered by the contact id with deal stage not in closed-won or closed-lost. If at least one open deal exists, send a Slack DM to the deal owner with the contact link, deal link, event type, scheduled time, and a one-line rationale ("open deal in stage X, you own it").
3) Brand-new contact (no HubSpot match): run Apollo People Enrichment on the email, then Apollo Organization Enrichment on the resulting company domain to pull employee count, industry, and funding stage. Score against this ICP rubric (treat these as the defaults the user can edit later):
- Enterprise: 500+ employees OR Series C+ funding OR target industries (fintech, healthcare, enterprise SaaS). - SMB: 10-499 employees and not in an excluded industry. - Not a fit: under 10 employees, consumer-only, or excluded industries (agencies, students, competitors).
For enterprise leads, post in the enterprise SDR Slack channel. For SMB, post in the SMB SDR Slack channel. For not-a-fit, post in a low-priority triage channel with a note that the rep can disqualify. In all three new-contact cases, also call HubSpot Create Contact with email, name, lifecycle stage = lead, and a custom property source = "Cal.com inbound" plus the event type.
Every Slack message (channel post or DM) must name: attendee full name and email, company (if known), event type, meeting time in the attendee's local timezone if available otherwise UTC, segment classification (Existing customer / Open deal / Enterprise / SMB / Not a fit), and a one or two sentence rationale explaining why the agent classified it that way (e.g. "500-person fintech, Series D, matches enterprise rubric"). Include the Cal.com booking link and the HubSpot contact link.
If anything fails (HubSpot lookup error, Apollo no match, missing email), the agent should fall back to posting a minimal message in the SMB SDR channel with whatever it does know plus a note about what went wrong, so no booking ever falls through silently.
Make the Slack channel names, the ICP rubric, and the HubSpot custom property names easy to edit at the top of the agent instructions so the user can tune routing without rewriting the whole prompt.
Additional information
What does this prompt do?
- Watches Cal.com for every new booking and pulls the attendee email, event type, and intake form answers.
- Looks the attendee up in HubSpot to decide if they are an existing customer, an open opportunity, or a brand-new contact.
- Enriches new contacts with Apollo so the agent knows company size, industry, and funding before scoring against your ICP.
- Routes the booking to the right Slack channel or DM with a clear summary of who is coming, why they matter, and who should own the meeting.
What do I need to use this?
- A Cal.com account where inbound meetings are booked
- A HubSpot login with permission to read contacts and deals and to create contacts and tasks
- A Slack workspace with the channels you use for SDRs, account managers, and deal owners
- An Apollo account for company and person enrichment
- Your ICP rubric (the few traits that make a lead enterprise vs SMB vs not a fit) so the agent can score consistently
How can I customize it?
- Adjust the ICP rubric: company size bands, target industries, funding stage, geography, or anything else your team uses to separate enterprise from SMB.
- Change which Slack channel each segment goes to, or add a DM to the deal owner when an existing opportunity is detected.
- Edit the HubSpot fields written for new contacts (lead source, segment, event type) and the task wording assigned to the existing CSM.
Frequently asked questions
How is this different from a pre-meeting brief workflow?
What happens if the attendee is already in HubSpot as a customer?
What happens if there is already an open deal for this contact?
How does it decide enterprise vs SMB for new leads?
Will it create duplicate contacts in HubSpot?
Stop manually triaging inbound bookings.
Connect Cal.com, HubSpot, Slack, and Apollo once, and Geni routes every new meeting to the right rep with the context they need.