Turn new Acuity bookings into HubSpot leads with Slack alerts

Every 15 minutes we sweep Acuity for freshly booked appointments and open a matching HubSpot contact and deal, then ping the sales channel in Slack.

Deterministic Code
Acuity SchedulingHubSpotSlackSalesLead EnrichmentData SyncNotifications & Alerts
PromptCreate

Every 15 minutes on a cron schedule, sweep Acuity Scheduling for newly booked appointments and push each one into HubSpot as a tracked lead, then notify sales in Slack. This is a deterministic pipeline: same steps for every appointment, no drafting or judgement.

Step 1. Use the Acuity Scheduling List Appointments action with minDate set to the current time and a lastModified (or created) filter covering the last 15 minutes so we only pick up appointments booked in this window. Cron is the trigger because Acuity is not a first-class poll provider on this platform and does not have a supported webhook surface here.

Step 2. For each new appointment, call the HubSpot Search Contacts action to look up the client by email. If a contact exists, reuse the returned contact id. If no contact is found, call HubSpot Create Contact with the client name, email, phone number, and lifecycleStage set to lead.

Step 3. Call HubSpot Create Deal in the intake pipeline. Use the appointment type as the deal name, the appointment price as the amount, and store the appointment datetime on a custom deal property (default name: acuity_appointment_at). Associate the deal with the HubSpot contact from Step 2.

Step 4. Post to the sales channel with the Slack Send a Message action. Include the client name, the appointment type, the appointment time formatted in the account timezone, and a direct link to the new HubSpot deal (built from the deal id returned by Create Deal).

Configuration inputs the workflow should expose: the HubSpot intake pipeline id and stage id, the custom deal property name for the appointment datetime, the Slack channel id or name, and the display timezone. Skip appointments that are missing an email address, and log any HubSpot or Slack error without failing the whole sweep so a single bad row does not block the rest.

What does this prompt do?

  • Watches your Acuity calendar every 15 minutes for appointments booked since the last check
  • Finds each client in HubSpot by email, or creates a new contact if they are not there yet
  • Opens a new HubSpot deal in your intake pipeline tagged with the appointment type, price, and time
  • Posts a Slack message to your sales channel with the client, the appointment, and a link to the new deal

What do I need to use this?

  • An Acuity Scheduling account with the calendar you take bookings on
  • A HubSpot account with an intake or new-lead pipeline set up
  • A Slack workspace with a channel where your sales team wants to see new bookings

How can I customize it?

  • Change how often the sweep runs (default every 15 minutes) if you want faster or slower checks
  • Point deals at a different HubSpot pipeline, or map extra fields like appointment notes or the calendar name
  • Change the Slack channel, mention specific reps, or tweak the message copy

FAQs

Does this work with a free HubSpot account?
Yes. Deals and contacts are available on every HubSpot tier, so a free CRM account is enough to run this.
What happens if the client already exists in HubSpot?
We look them up by email first and reuse the existing contact, so you will not end up with duplicates. Only the new deal is added.
Will old appointments get re-posted every 15 minutes?
No. Each sweep only looks at appointments booked in the last 15 minutes, so anything already handled stays put.
Can I send the alert somewhere other than Slack?
The default is Slack. Ask the workflow author to swap in a different channel or messaging tool and it can post there instead.
What if a client reschedules or cancels their appointment?
This workflow reacts to brand new bookings. Reschedules and cancellations are not synced, so the deal will keep the original appointment time until you edit it.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App
Chat quality review board for LiveChat support leads

Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.

LiveChat
Slack
General Input Database
App
A searchable RFP answer library your bid team drafts from

Every proposal you have ever submitted in one searchable archive, with the closest past answers lined up against each question in a new RFP.

General Input Storage
General Input Database
Mistral AI
+2
App

Stop copy-pasting Acuity bookings into your CRM.

Route every fresh appointment straight into HubSpot and give your sales team a heads-up in Slack the moment it lands.