Calendly bookings → HubSpot contact
When someone books a call on Calendly, create the contact in HubSpot and alert your team.
How it works
Trigger: Calendly — invitee created
- Receive the new booking from Calendly.
- Create or update the contact in HubSpot with their name and email.
- Post the meeting name and time to #sales in Slack.
Diagram
Trigger App
Build it
Pick your tool — same automation, step by step.
Copy and paste straight into an n8n canvas (Ctrl+V), or download and use Import from File. Then connect your own credentials and replace every YOUR_… placeholder.
Show code (107 lines)
{
"name": "Calendly bookings → HubSpot contact (Flowngn)",
"nodes": [
{
"parameters": {
"content": "## Calendly bookings → HubSpot contact\nWhen someone books a call on Calendly, create the contact in HubSpot and alert your team.\n\n**Setup**\n1. Open each node and connect your own credentials.\n2. Replace every YOUR_… placeholder.\n3. Test once, then activate.\n\nFree template from Flowngn",
"height": 260,
"width": 340
},
"id": "2c528f90-acda-4c36-af0c-4bffeef76555",
"name": "Setup notes",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-420,
-60
]
},
{
"parameters": {
"events": [
"invitee.created"
]
},
"id": "2c528f90-acda-4c36-af0c-4bffeef76555",
"name": "New booking",
"type": "n8n-nodes-base.calendlyTrigger",
"typeVersion": 1,
"position": [
0,
0
],
"webhookId": "2c528f90-acda-4c36-af0c-4bffeef76555"
},
{
"parameters": {
"authentication": "appToken",
"resource": "contact",
"operation": "upsert",
"email": "={{ $json.payload.email }}",
"additionalFields": {
"firstName": "={{ ($json.payload.name || '').split(' ')[0] }}"
}
},
"id": "2c528f90-acda-4c36-af0c-4bffeef76555",
"name": "Create or update contact",
"type": "n8n-nodes-base.hubspot",
"typeVersion": 2.1,
"position": [
300,
0
]
},
{
"parameters": {
"select": "channel",
"channelId": {
"__rl": true,
"value": "#sales",
"mode": "name"
},
"text": "=📅 {{ $('New booking').item.json.payload.name }} booked {{ $('New booking').item.json.payload.scheduled_event?.name }} for {{ $('New booking').item.json.payload.scheduled_event?.start_time }}",
"otherOptions": {}
},
"id": "2c528f90-acda-4c36-af0c-4bffeef76555",
"name": "Ping #sales",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.2,
"position": [
600,
0
]
}
],
"connections": {
"New booking": {
"main": [
[
{
"node": "Create or update contact",
"type": "main",
"index": 0
}
]
]
},
"Create or update contact": {
"main": [
[
{
"node": "Ping #sales",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": false
},
"tags": []
}In Make, create a new scenario and add these modules in order:
- Calendly › Watch Events (invitee created)
- HubSpot CRM › Create/Update a Contact
- Slack › Create a Message
- Every module run uses Make operations — the free plan includes a monthly quota.
- Module and step names can differ slightly as Make and Zapier update their apps.
In Zapier, create a new Zap and add these steps in order:
- Calendly — Invitee Created
- HubSpot — Create or Update Contact
- Slack — Send Channel Message
- Zaps with more than two steps need a paid Zapier plan.
- Module and step names can differ slightly as Make and Zapier update their apps.
Tips
- Add a Calendly question like "Company website?" and save it to HubSpot too.
Related flows
Sales & CRMEasy
New form lead → CRM contact + team ping
Leads from your website form go straight into HubSpot and your team is notified.
Typeform → HubSpot → Slack5h/mo
Sales & CRMAdvanced
AI lead qualifier
AI scores each new lead and fast-tracks the hot ones to your sales team.
Webhook → AI model → Slack → Gmail8h/mo
Sales & CRMMedium
Welcome new subscribers from Stripe
When someone subscribes, send a personal welcome email and celebrate in Slack.
Stripe → Gmail → Slack2h/mo