Book Appointment

acuity_scheduling.create_appointment
ActionBusiness appsconnection required

Calls the Acuity Scheduling API with the connection's credentials.

Book a client onto an appointment type at a specific date and time.

Connection

Required
Yes — the node will not save without one
Auth type
Username & password
Providers
Acuity Scheduling
Secret shape
{"user_id": "123456", "api_key": "…"}
Config it needs
calendar_id
Resolved by
config.connection_id, else node.connection_id

Configuration

12 fields, 5 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
datetime
Start of the appointment, parsed in the business's own timezone; an ISO-8601 timestamp is the unambiguous form.
stringYes—iso8601 format2026-03-04T13:00:00-0800
appointment_type_id
Numeric id of the appointment type to book, from acuity_scheduling.list_appointment_types.
stringYes——12345678
first_name
The client's first name.
stringYes——Ada
last_name
The client's last name.
stringYes——Lovelace
email
The client's email address; Acuity sends the confirmation here.
stringYes—email format—
calendar_id
Numeric calendar id; overrides the calendar set on the connection.
stringNo——987654
phone
The client's phone number, used for SMS reminders when enabled.
stringNo———
timezone
IANA timezone the client booked in, such as America/New_York.
stringNo——America/New_York
fields
Intake form answers, as a JSON array of {"id": fieldId, "value": value} objects.
arrayNo—array of object[{"id":1,"value":"Referred by a friend"}]
notes
Internal notes on the appointment; Acuity only accepts these when 'admin' is on.
stringNo———
admin
Act as an administrator: availability rules are not enforced and admin-only fields such as notes become writable.
booleanNofalse——
no_email
Suppress the confirmation email and SMS Acuity would otherwise send the client.
booleanNofalse——

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "admin": false,
  "appointment_type_id": "12345678",
  "calendar_id": "987654",
  "datetime": "2026-03-04T13:00:00-0800",
  "fields": [
    {
      "id": 1,
      "value": "Referred by a friend"
    }
  ],
  "first_name": "Ada",
  "last_name": "Lovelace",
  "no_email": false,
  "timezone": "America/New_York"
}

Output

One shape.

result

FieldTypeExample
id
Numeric id of the appointment.
number—
firstName
The client's first name.
string—
lastName
The client's last name.
string—
email
The client's email address.
string—
phone
The client's phone number, empty when none was given.
string—
datetime
Start of the appointment as an ISO-8601 timestamp.
string—
endTime
End of the appointment, in the business's local format.
string—
duration
Length of the appointment in minutes.
string—
type
Name of the appointment type that was booked.
string—
appointmentTypeID
Numeric id of the appointment type.
number—
calendar
Name of the calendar the appointment sits on.
string—
calendarID
Numeric id of that calendar.
number—
price
Price of the appointment in the account's currency.
string—
paid
Whether the appointment has been paid for.
string—
canceled
True once the appointment has been canceled.
boolean—
notes
Internal notes on the appointment.
string—
forms
Intake form answers, one entry per form.
array—
confirmationPage
URL of the client-facing confirmation page.
string—
{
  "appointmentTypeID": 0,
  "calendar": "",
  "calendarID": 0,
  "canceled": false,
  "confirmationPage": "",
  "datetime": "",
  "duration": "",
  "email": "",
  "endTime": "",
  "firstName": "",
  "forms": [],
  "id": 0,
  "lastName": "",
  "notes": "",
  "paid": "",
  "phone": "",
  "price": "",
  "type": ""
}

See Book Appointment run in a workflow.

In a technical demo we add the Acuity Scheduling connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.