Skip to navigation

Acuity Scheduling

Check open times and book appointments in Acuity Scheduling with webhook tools.

With the webhook tools below, your receptionist can check when an appointment type is free and book the caller into an open slot. Acuity sends the client its usual confirmation email.

Before you start

1

Check your plan

Acuity only includes API access on its top plan (Premium, previously called Powerhouse). On other plans, the tools below fail with a 403 error.

2

Get your API credentials

In Acuity, open Integrations, find API, and copy your User ID and API Key.

3

Build the authorization header

Acuity uses your User ID as the username and the API key as the password. Encode them in a terminal, replacing both placeholders:

printf 'USER_ID:API_KEY' | base64

The header value is Basic followed by the output.

Don’t paste your API key into an online encoder. Anyone with it can read and change your appointments and client details.

4

Find the appointment type ID

Copy the direct scheduling link for the appointment type you want your receptionist to book. The number after appointmentType= in the link is its ID. The tools below use it in place of APPOINTMENT_TYPE_ID.

Create the tools

For each tool, go to Integrations, select Add integration, choose Webhook Tool, and set Assign to agents to Receptionist.

Check open times

FieldValue
Namecheck_acuity_availability
Description”List the open appointment times on one date. Use it before offering the caller a time.”
MethodGET
URLhttps://acuityscheduling.com/api/v1/availability/times
Request HeadersAuthorization: Basic followed by the encoded credentials
Query ParametersappointmentTypeID (number, required): “Always the exact value APPOINTMENT_TYPE_ID.”
date (string, required): “The date to check, as YYYY-MM-DD.”

Book an appointment

FieldValue
Namebook_acuity_appointment
Description”Book the caller into an open time once they have chosen one. Confirm the date and time with them first.”
MethodPOST
URLhttps://acuityscheduling.com/api/v1/appointments
Request HeadersAuthorization: Basic followed by the encoded credentials
Body Parametersdatetime (string, required): “The chosen time, exactly as returned in a time value by check_acuity_availability.”
appointmentTypeID (number, required): “Always the exact value APPOINTMENT_TYPE_ID.”
firstName (string, required): “The caller’s first name.”
lastName (string, required): “The caller’s last name.”
email (string, required): “The caller’s email address. Ask them to spell it.”
phone (string): “The caller’s phone number.”

Select Enable on each tool, then test your receptionist by asking for an appointment. The booking appears in your Acuity calendar.

To book several appointment types, replace “Always the exact value” in both tools with a list, for example: “Use 111 for a 30-minute consultation and 222 for a 60-minute session.”

Limitations

  • Acuity requires an email address for every booking, so your receptionist asks callers to spell theirs.
  • Intake form answers are sent as a list, which webhook tools can’t send. Booking notes can only be set by an admin booking, which skips Acuity’s availability checks, so the tools above don’t set either.
  • The tools can’t cancel or reschedule appointments. Those need the appointment ID in the URL.

Troubleshooting

ProblemWhat to check
401 from AcuityEncode USER_ID:API_KEY with the colon, and start the header value with Basic and a space.
403 from AcuityYour plan doesn’t include API access.
No times are returnedCheck the appointment type ID, and that the type has open hours on that date.
Booking fails with not_availableThe time was taken or isn’t open. Tell the receptionist to check open times again before booking.
Booking fails because a field is missingYour account may require a phone number. Make phone required in the booking tool.