Book an appointment
create_appointmentBook an appointment on behalf of the business (for example one that came in by phone). For a restaurant table or an activity, pass partySize (how many people). Paid services are NOT charged when booked from here: the business takes the payment itself (only the public booking page charges online). Checks the slot is still free, assigns a person or room, creates the Google Calendar event, stores the customer details on their contact card (phone and custom answers as custom fields, plus the "booking" tag; the contact is created if it does not exist) and, if an email was given, sends the customer a confirmation with the appointment attached (.ics), branded as the business. Confirm the details with the user before calling it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Customer name. | |
| with | No | Person or room (name or id). Omit to assign whoever is free (for restaurants, the smallest table that fits). | |
| No | Customer email (reminders go there). | ||
| phone | No | Customer phone. | |
| start | Yes | Start, "YYYY-MM-DD HH:MM" in the business time zone (from get_booking_availability). | |
| answers | No | Answers to the business's own questions, keyed by the intake field key (see get_booking_settings). | |
| service | Yes | Service name or id. | |
| partySize | No | How many people (diners, participants), within the service partyMin-partyMax. Defaults to the minimum (1 for normal appointments). | |
| workspaceId | No | Defaults to the workspace this connection is scoped to. | |
| idempotencyKey | No | Optional. A unique id for this action (16-128 chars: letters, digits, _ : . -). If you are unsure whether a call went through (timeout, network error), repeat it with the SAME idempotencyKey and the same arguments: you get the original result and nothing is done twice. |