Smart lead routing for new Cal.com bookings

By General Input

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.

Integrations

  • Cal.com
  • HubSpot
  • Slack
  • Apollo

Type

Agentic Task

Categories

  • Sales
  • Operations

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.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredTurn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe reveals