Route new Calendly bookings into Customer.io and brief the host in Slack

By General Input

When someone books on Calendly, save them in Customer.io with their intake answers, fire the right pre-meeting sequence, and ping the host in Slack with the context they need.

Integrations

  • Calendly
  • Customer.io
  • Slack Bot

Type

Agentic Task

Categories

  • Sales
  • Marketing

Build me an agent that runs every time a new meeting is booked on Calendly. The trigger should be Calendly's invitee.created webhook so this fires the moment a prospect or customer picks a time, with no polling.

What I want the agent to do, in order:

1) Read the booking. The webhook payload has the invitee's name, email, the event type they booked, the scheduled start time, and their answers to the intake questions. If anything is missing or thin, call Calendly's Get Event Invitee to enrich. Parse the intake answers into clean fields like job title, company, and what they want to discuss.

2) Classify the meeting. Look at the Calendly event type name plus the intake answers and decide which bucket this booking falls into. The buckets I care about are: demo or sales call, customer kickoff or success call, and internal (1:1, interview, recruiting, anything not customer-facing). Keep the classification logic simple and explainable.

3) Save the person in Customer.io. Call Customer.io's Identify Person via the Pipelines API with the invitee's email as the identifier. Set traits for first/last name, company, the upcoming meeting time, the Calendly event type, and each parsed intake answer as its own trait so segments and templates can use them. Do this for every booking, even internal ones, so the contact record always stays current.

4) Fire the right Customer.io flow based on the classification:

- Demo or sales booking: call Trigger Broadcast on the matching pre-meeting nurture broadcast. The broadcast should send a 'see you soon' email with the calendar invite, a couple of prep links, and any tailored case studies. Pass the parsed intake answers as personalization data so the email can reference what they want to talk about.

- Customer kickoff or success booking: call Track Event with an event name like kickoff_scheduled (or success_call_scheduled), passing the meeting details as properties. This lets my existing event-triggered campaign in Customer.io handle the rest.

- Internal booking: skip the Customer.io broadcast and event entirely. Identify Person already ran in step 3, which is fine.

Use a small configured map of Calendly event types to either a broadcast id or an event name so I can edit which meeting type fires which flow without changing the agent instructions. The map should also tell the agent which event types are internal.

5) Notify the host in Slack. Use Slack Bot's Send a Message to post into the host's deal-room or AE channel (also configurable per host or per event type, with a sensible default channel). The message should summarize: who booked (name, role, company), what they want to discuss (pulled straight from the intake answers), any quick signal you can pull from the company name like apparent size or domain, the meeting time in the host's timezone, and a link back to the Calendly event. Format it as a tight one-message brief with Slack mrkdwn, not a wall of text.

Failure handling I care about: the agent should degrade gracefully. If the broadcast lookup fails or Trigger Broadcast errors out, still complete the Identify Person and the Slack post, and call out the broadcast failure inside the Slack message so I can fix the mapping. If the Slack post fails, retry once with a short backoff. Respect Customer.io's per-broadcast rate limit (one trigger per ten seconds per broadcast) which is fine for booking volume but should not be ignored if a flood happens.

Inputs I want to be able to edit without touching the agent's logic: the event-type-to-broadcast-or-event map (including which types are internal), the default Slack channel, optional per-host channel overrides, and the set of intake question keys that should be promoted to Customer.io traits.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them