Calendly bookings into HubSpot with WhatsApp confirmations via Heyy

When someone books on Calendly, log them in HubSpot, open a deal in the matching stage, and trigger a WhatsApp confirmation through Heyy.

Agentic Task
CalendlyHubSpotHeyySalesOperationsMeeting WorkflowsData SyncLead Enrichment

Build an agent workflow that fires whenever someone books a meeting through Calendly. The trigger is a Calendly webhook for the invitee.created event.

From the Calendly payload, pull the invitee's email, full name, phone, the event type name (for example 'Sales Demo' or 'Intro Call'), the scheduled start time, and the booking page link.

Step 1, one-time lookups at the start of every run. Call List Contact Attributes in Heyy so you know the correct externalIds for our custom attributes meeting_time, meeting_link, and event_type. Also keep a small mapping of Heyy label IDs the user provides for each event type (for example booked_demo, booked_intro, booked_discovery). These labels are what Heyy's own automations watch to send the matching WhatsApp confirmation template. If the user has not provided the label IDs yet, ask them once and remember the mapping; if a needed label does not exist, use Create Label in Heyy to make it and tell the user to wire it to their WhatsApp template.

Step 2, HubSpot. Use Get Contact with idProperty=email to look up the invitee. If a contact exists, run Update Contact to refresh phone, full name, and any meeting-related properties. If no contact exists, run Create Contact with email, name, and phone. Either way, run Create Deal in a pipeline stage matched to the Calendly event type (demo stage for a demo booking, intro-call stage for an intro, and so on). Set the deal name to something like 'Demo with {{name}} on {{meeting_time}}' and associate the deal to the contact.

Step 3, Heyy, only if the Calendly payload has a phone number. Run Create Contact in Heyy with the invitee's name and phone. Set the custom attributes meeting_time, meeting_link, and event_type using the externalIds you resolved in Step 1. Attach the matching label ID (booked_demo, booked_intro, etc.) so Heyy's native automation fires the right WhatsApp confirmation template. Do not try to send a WhatsApp message yourself; Heyy does not expose a send-message operation, the label is the trigger.

Step 4, no-phone fallback. If the Calendly payload has no phone number, skip the entire Heyy step and instead run Create Note in HubSpot, associated with the deal you just created, with text like 'No phone on file from Calendly. Follow up by email at {{email}} to confirm {{event_type}} on {{meeting_time}}. Booking link: {{meeting_link}}.' so the rep knows to confirm manually.

Ask the user once for: the Calendly event-type-name to HubSpot-deal-stage mapping, the Calendly event-type-name to Heyy-label-id mapping, and the HubSpot pipeline id to use. Cache these decisions in the workflow config so reruns do not re-prompt.

Additional information

What does this prompt do?
  • Catches every new Calendly booking the moment it happens, no manual exports.
  • Finds or creates the invitee in HubSpot, then opens a fresh deal in the pipeline stage that matches their event type (demo vs intro call vs discovery).
  • Adds the invitee to Heyy with their meeting time, link, and event type so Heyy fires the matching WhatsApp confirmation template automatically.
  • If the booking has no phone number, skips WhatsApp and leaves a note on the HubSpot deal so the rep follows up by email instead.
What do I need to use this?
  • A Calendly account that can send webhooks when invitees book (paid plan).
  • A HubSpot login with permission to read and write contacts, deals, and notes.
  • A Heyy workspace with WhatsApp connected, an API token, and the confirmation automations already set up against your labels (such as booked_demo and booked_intro).
How can I customize it?
  • Map your Calendly event types to the right HubSpot deal stage and Heyy label so a demo booking and an intro call get the right treatment.
  • Change the wording of the rep follow-up note that gets pinned to the HubSpot deal when no phone number is on file.
  • Add more custom fields (referrer, UTM source, intake answers) into the Heyy contact so your WhatsApp template can personalize the message.

Frequently asked questions

Does this send the WhatsApp message itself?
No. Heyy does the sending. This workflow creates the Heyy contact with the right label, and Heyy's own automation fires the WhatsApp confirmation template against that label. You set those templates up once in Heyy.
What happens if the invitee already exists in HubSpot?
We refresh their phone and name, then open a new deal for this specific meeting. We do not create a duplicate contact.
What if the Calendly booking has no phone number?
The workflow skips the Heyy and WhatsApp step entirely and leaves a note on the HubSpot deal telling the rep to follow up by email.
Can I use this for more than two event types?
Yes. The workflow looks at the Calendly event type name and routes to a matching deal stage and Heyy label, so you can add as many pairs as you want (sales demo, customer onboarding, support call, partnership intro).
Do I need a paid Calendly plan?
Yes. Real-time webhooks for new bookings are a paid Calendly feature.

Turn every Calendly booking into a confirmed deal and a WhatsApp reply.

Connect Calendly, HubSpot, and Heyy once, and Geni handles the CRM record and the WhatsApp confirmation the moment the meeting is booked.