What it does
- 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
The prompt
Paste it into a new chat in General Input, and a specialist builds it with you.
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 you'll need
- 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
Make it yours
- 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