Acuity Scheduling
Acuity Scheduling (Squarespace Scheduling) is an appointment booking and scheduling platform. Advanced Form Integration creates appointments in Acuity Scheduling directly from your WordPress form submissions, so clients can be booked into your calendar without manually using the Acuity booking page.
What you’ll need
- An active Acuity Scheduling account.
- Your Acuity User ID and API Key (see below).
- At least one Appointment Type configured in Acuity.
- The Advanced Form Integration plugin installed and activated.
Get your Acuity Scheduling credentials
Acuity Scheduling authenticates API requests using HTTP Basic Auth with your User ID as the username and your API Key as the password.
- Sign in to your Acuity Scheduling account.
- Go to Integrations → API → View Credentials.
- Copy your User ID and API Key.
- In WordPress, go to AFI → Settings → Acuity Scheduling.
- Click Add Account, paste the User ID and API Key, and give the account a name.
- Click Save.
Create the integration
- Go to AFI → Add New.
- Give the integration a name, for example
Booking form to Acuity. - Under Trigger, pick the form plugin and the specific form you want to listen on.
- Under Action → Platform, select Acuity Scheduling.
- In Task, choose Create Appointment.
- Pick the saved account in the Acuity Account dropdown. AFI loads appointment types and calendars from the API.
- Select an Appointment Type (required). Click the refresh icon if your types have changed in Acuity.
- Optional: select a Calendar to force a specific calendar. Leave blank for auto-selection based on availability.
- Choose a Booking Mode (see below).
- Optional: check Disable confirmation emails/SMS to suppress Acuity’s automatic notifications for appointments created through this integration.
- Map your form fields onto the Acuity fields listed below.
- Optional: open Conditional Logic to limit which submissions are sent.
- Click Save Integration.
Booking modes
| Mode | Behavior |
|---|---|
| Book like a client | Checks real-time availability before creating the appointment. Fails if the slot is taken or outside available hours. |
| Book as admin | Bypasses availability checks. A Calendar selection is required. Use this when you trust the form’s date/time and want to override Acuity’s scheduling rules. |
Tasks supported
Create Appointment
Creates an appointment in Acuity Scheduling via POST /appointments. The appointment appears on your calendar immediately. In client booking mode, Acuity validates the time slot against your availability. In admin mode, the appointment is created regardless of availability.
Required fields
| Field | Field key | Notes |
|---|---|---|
| Appointment Date & Time | datetime |
ISO 8601 format, e.g. 2024-05-12T14:00:00-0500 |
| First Name | firstName |
|
| Last Name | lastName |
|
email |
Optional fields
| Field | Field key | Notes |
|---|---|---|
| Phone | phone |
|
| Timezone | timezone |
IANA timezone such as America/New_York. Defaults to the calendar timezone. |
| Certificate / Coupon Code | certificate |
Applies a coupon or gift certificate |
| Notes | notes |
|
| Price Override | price |
Overrides the appointment type price (for paid appointments) |
| Form Fields (JSON) | fieldDefinitions |
JSON array to populate Acuity intake forms: [{"id":123,"value":"Answer"}] |
| Addon IDs | addonIds |
Comma-separated list of addon IDs |
| Label ID | labelId |
Attaches a label to the appointment |
Populating intake form fields
If you have custom intake forms in Acuity, pass answers using the Form Fields (JSON) field. Build a JSON array where each object contains the field id (from Acuity’s form editor) and the value:
[{"id":123,"value":"Yes"},{"id":456,"value":"Blue"}]
Conditional logic example
Only create an Acuity appointment when the form’s appointment_type field equals consultation. Other form submissions are ignored, letting you use a single form for multiple purposes. Add a condition: Appointment Type is consultation.
Troubleshooting
Nothing arrives in Acuity
Open AFI → Log and find the most recent entry for this integration. AFI stores the request it sent and the raw response it got back, so the Acuity error message is right there. If there is no log entry at all, the trigger never fired: re-check the form selection and submit a real test entry from the front end rather than the form builder preview.
“Appointment type is required”
You must select an Appointment Type in the integration. Appointment types are loaded from your Acuity account after you connect. If the dropdown is empty, verify your credentials are correct and click the refresh icon next to the dropdown.
Slot unavailable in client mode
When booking like a client, Acuity checks real-time availability. If the requested time slot is taken, outside your business hours, or past the booking cutoff, Acuity rejects the request. Either switch to admin mode (which bypasses availability) or map a date/time that you know is open.
Datetime format errors
The datetime field must be in ISO 8601 format with timezone offset, e.g. 2024-05-12T14:00:00-0500. If your form captures date and time separately, combine them into a single ISO string before mapping. Mismatched timezone offsets are the most common cause of appointments landing at the wrong hour.