BookingIntentCreatedEventData
This is an object representing data for the booking intent created event.
object objectrequired
A booking intent that tracks the lifecycle of a booking attempt.
When the intent was abandoned
appointment objectnullable
The linked appointment (set when completed)
- Appointment
The type of appointment.
Possible values: [in_person, virtual]
cancellation_events object[]required
The actor that initiated the cancellation (user ID or bearer token ID).
cancellation_reason objectnullablerequired
The cancellation reason.
- CancellationReason
Unique identifier for the object.
Possible values: Value must match regular expression ^cr_\w{12}$
The name of the cancellation reason.
String representing the object's type.
Possible values: [cancellation_reason]
The sort order of the cancellation reason.
Custom reason text for the cancellation.
The entity that initiated the cancellation.
Possible values: [user, client]
Possible values: [cancellation_event]
The time at which the cancellation occurred (ISO-8601 format).
The source of the cancellation event.
Possible values: [client_ui, dashboard, api]
client objectrequired
This is an object representing a client.
Time at which the object was created.
The client's email address. This field will be null unless include_sensitive is true.
The client's first name. This field will be null unless include_sensitive is true.
Unique identifier for the object.
Possible values: Value must match regular expression ^clnt_\w{12}$
The client's last name. This field will be null unless include_sensitive is true.
The locale of the client.
en-USString representing the object's type.
Possible values: [client]
The client's phone number (E.164 format). This field will be null unless include_sensitive is true.
External reference identifier for the client.
The client's time zone (IANA format).
America/ChicagoTime at which the object was last updated.
client_data objectrequired
Client data provided while creating the appointment. Some fields will be null unless include_sensitive is true.
The client's email address. This field will be null unless include_sensitive is true.
The client's first name. This field will be null unless include_sensitive is true.
The client's last name. This field will be null unless include_sensitive is true.
The locale of the client booking the appointment.
en-USThe client's phone number (E.164 format). This field will be null unless include_sensitive is true.
The client's external reference identifier.
The client's time zone (IANA format).
America/ChicagoUse client_data.locale instead.
en-USUse client_data.reference_id instead.
Use client_data.time_zone instead.
America/Chicagoconfirmation_events object[]required
The actor that initiated the confirmation (user ID or bearer token ID).
end_at objectrequired
An object describing a date/time in local time and in UTC.
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00ZThe entity that initiated the confirmation.
Possible values: [user, client]
Possible values: [confirmation_event]
The time at which the confirmation occurred (ISO-8601 format).
The source of the confirmation event.
Possible values: [client_ui, dashboard, api]
start_at objectrequired
An object describing a date/time in local time and in UTC.
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00ZTime at which the object was confirmed.
Time at which the object was created.
end_at objectrequired
An object describing a date/time in local time and in UTC.
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00Zfields objectrequireddeprecated
Use client_data instead.
The client's email address. This field will be null unless include_sensitive is true.
The client's first name. This field will be null unless include_sensitive is true.
The client's last name. This field will be null unless include_sensitive is true.
The client's phone number (E.164 format). This field will be null unless include_sensitive is true.
Unique identifier for the object.
Possible values: Value must match regular expression ^appt_\w{12}$
String representing the object's type.
Possible values: [appointment]
provider objectrequired
A provider represents a staff member who can provide services to clients.
Time at which the object was created.
The provider's display name.
The provider's first name.
Unique identifier for the object.
Possible values: Value must match regular expression ^prov_\w{12}$
The provider's last name.
metadata object
Set of key-value pairs attached to this provider. Maximum size is 16 KB.
Set of key-value pairs attached to this provider. Maximum size is 16 KB.
String representing the object's type.
Possible values: [provider]
Time at which the object was last updated.
reschedule_events object[]required
Possible values: [user, client]
new_end_at objectrequired
An object describing a date/time in local time and in UTC.
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00Znew_start_at objectrequired
An object describing a date/time in local time and in UTC.
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00ZPossible values: [reschedule_event]
The time at which the reschedule occurred (ISO-8601 format).
previous_end_at objectrequired
An object describing a date/time in local time and in UTC.
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00Zprevious_start_at objectrequired
An object describing a date/time in local time and in UTC.
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00ZPossible values: [client_ui, dashboard, api]
service objectrequired
A service represents a type of appointment.
The type of appointment.
Possible values: [in_person, virtual]
booking_policy objectrequired
A booking policy defines the rules for booking a service from public booking interfaces.
advance_notice objectrequired
A policy for requiring minimum advance notice.
Whether advance notice is enabled.
The minimum duration of advance notice.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
Whether public booking is allowed for the service.
The message to display when public booking is disabled.
hold objectrequired
A policy for temporarily reserving a slot during the multi-step booking flow.
The duration of the hold.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
Whether slot holds are enabled for the service.
maximize_utilization objectrequired
Avoid presenting overlapping time slots for service providers to eliminate gaps in the schedule.
Whether maximize utilization is enabled for the service.
cancellation_policy objectrequired
A cancellation policy defines the rules for canceling a service from public booking interfaces.
advance_notice objectrequired
A policy for requiring minimum advance notice.
Whether advance notice is enabled.
The minimum duration of advance notice.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
Whether public cancellation is allowed for the service.
The message to display when public cancellation is disabled.
Displayed to clients in follow-up communication. Use this to explain any important rules about cancellations or rescheduling.
Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.When the service was created.
The duration of time slots in ISO-8601 duration format.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
`PT30M`Unique identifier for the object.
Possible values: Value must match regular expression ^srv_\w{12}$
An optional internal label for admin use. When set, this is displayed in the admin UI instead of the public name.
The name of the service.
String representing the object's type.
Possible values: [service]
provider_notifications objectrequired
Configuration for staff notification emails on a service, including which notification types are enabled and who receives them.
Additional email addresses that receive staff notification emails for this service.
Whether the assigned provider receives notification emails for this service.
types object[]required
Array of enabled staff notification types for the service.
The notification type.
Possible values: [new_appointment, rescheduled, canceled]
rescheduling_policy objectrequired
A rescheduling policy defines the rules for rescheduling a service from public booking interfaces.
advance_notice objectrequired
A policy for requiring minimum advance notice.
Whether advance notice is enabled.
The minimum duration of advance notice.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
Whether public rescheduling is allowed for the service.
The message to display when public rescheduling is disabled.
slot_rules object[]required
Array of slot rules for the service.
recurrence_rule objectrequired
A recurrence rule describes a repeating pattern of times. Recurrences rules in SavvyCal are modeled after the conventions of iCalendar recurrence rules (RRULE), but are a subset of the full specification.
The days of the week on which the recurrence occurs.
Possible values: Value must match regular expression (mo|tu|we|th|fr|sa|su)$
["mo","we","fr"]Number of occurrences at which to end the recurrence.
Possible values: >= 1
The frequency of the recurrence.
Possible values: [daily, weekly]
How often the recurrence rule repeats.
Possible values: >= 1
2Date at which to end the recurrence (in ISO-8601 format).
2024-01-02Array of start times for slots.
Possible values: Value must match regular expression ^\d{2}:\d{2}$
When the service was last updated.
start_at objectrequired
An object describing a date/time in local time and in UTC.
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00ZThe status of the appointment.
Possible values: [scheduled, canceled]
Time at which the object was last updated.
urls object
URLs for this appointment.
URLs for the client to use to add this appointment to their calendar.
URLs for the client to use to add this appointment to Google Calendar.
URLs for the client to use to cancel this appointment.
URLs for the client to use to confirm this appointment.
URLs for the client to use to download an iCal file for this appointment.
URLs for the client to use to join this appointment.
URLs for the client to use to reschedule this appointment.
client objectnullable
The linked client
- Client
Time at which the object was created.
The client's email address. This field will be null unless include_sensitive is true.
The client's first name. This field will be null unless include_sensitive is true.
Unique identifier for the object.
Possible values: Value must match regular expression ^clnt_\w{12}$
The client's last name. This field will be null unless include_sensitive is true.
The locale of the client.
en-USString representing the object's type.
Possible values: [client]
The client's phone number (E.164 format). This field will be null unless include_sensitive is true.
External reference identifier for the client.
The client's time zone (IANA format).
America/ChicagoTime at which the object was last updated.
client_data objectnullable
Progressive client data collected during the booking flow. Sensitive fields (first_name, last_name, email, phone) are redacted unless include_sensitive is true.
When the intent was completed
When the intent was created
end_at objectnullable
The end time of the selected slot
- ZonedDateTime
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00ZThe hold duration as an ISO 8601 duration string (e.g., PT10M)
Whether slot holding is enabled
When the hold expires (UTC)
The booking intent ID
Possible values: Value must match regular expression ^bi_\w{24}$
Fields that are locked and cannot be updated via the public API. Possible values: service_id, provider_id, start_at, end_at, time_zone, client_data.
metadata object
Custom metadata key-value pairs
Custom metadata key-value pairs
The object type
Possible values: [booking_intent]
provider objectnullable
The assigned provider
- Provider
Time at which the object was created.
The provider's display name.
The provider's first name.
Unique identifier for the object.
Possible values: Value must match regular expression ^prov_\w{12}$
The provider's last name.
metadata object
Set of key-value pairs attached to this provider. Maximum size is 16 KB.
Set of key-value pairs attached to this provider. Maximum size is 16 KB.
String representing the object's type.
Possible values: [provider]
Time at which the object was last updated.
service objectnullable
The selected service
- Service
The type of appointment.
Possible values: [in_person, virtual]
booking_policy objectrequired
A booking policy defines the rules for booking a service from public booking interfaces.
advance_notice objectrequired
A policy for requiring minimum advance notice.
Whether advance notice is enabled.
The minimum duration of advance notice.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
Whether public booking is allowed for the service.
The message to display when public booking is disabled.
hold objectrequired
A policy for temporarily reserving a slot during the multi-step booking flow.
The duration of the hold.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
Whether slot holds are enabled for the service.
maximize_utilization objectrequired
Avoid presenting overlapping time slots for service providers to eliminate gaps in the schedule.
Whether maximize utilization is enabled for the service.
cancellation_policy objectrequired
A cancellation policy defines the rules for canceling a service from public booking interfaces.
advance_notice objectrequired
A policy for requiring minimum advance notice.
Whether advance notice is enabled.
The minimum duration of advance notice.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
Whether public cancellation is allowed for the service.
The message to display when public cancellation is disabled.
Displayed to clients in follow-up communication. Use this to explain any important rules about cancellations or rescheduling.
Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.When the service was created.
The duration of time slots in ISO-8601 duration format.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
`PT30M`Unique identifier for the object.
Possible values: Value must match regular expression ^srv_\w{12}$
An optional internal label for admin use. When set, this is displayed in the admin UI instead of the public name.
The name of the service.
String representing the object's type.
Possible values: [service]
provider_notifications objectrequired
Configuration for staff notification emails on a service, including which notification types are enabled and who receives them.
Additional email addresses that receive staff notification emails for this service.
Whether the assigned provider receives notification emails for this service.
types object[]required
Array of enabled staff notification types for the service.
The notification type.
Possible values: [new_appointment, rescheduled, canceled]
rescheduling_policy objectrequired
A rescheduling policy defines the rules for rescheduling a service from public booking interfaces.
advance_notice objectrequired
A policy for requiring minimum advance notice.
Whether advance notice is enabled.
The minimum duration of advance notice.
Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$
Whether public rescheduling is allowed for the service.
The message to display when public rescheduling is disabled.
slot_rules object[]required
Array of slot rules for the service.
recurrence_rule objectrequired
A recurrence rule describes a repeating pattern of times. Recurrences rules in SavvyCal are modeled after the conventions of iCalendar recurrence rules (RRULE), but are a subset of the full specification.
The days of the week on which the recurrence occurs.
Possible values: Value must match regular expression (mo|tu|we|th|fr|sa|su)$
["mo","we","fr"]Number of occurrences at which to end the recurrence.
Possible values: >= 1
The frequency of the recurrence.
Possible values: [daily, weekly]
How often the recurrence rule repeats.
Possible values: >= 1
2Date at which to end the recurrence (in ISO-8601 format).
2024-01-02Array of start times for slots.
Possible values: Value must match regular expression ^\d{2}:\d{2}$
When the service was last updated.
Whether the slot has been prevalidated. When true, public completion skips slot validation.
start_at objectnullable
The start time of the selected slot
- ZonedDateTime
The local date/time in ISO-8601 format, including the UTC offset (e.g., 2025-03-01T10:00:00-05:00).
2025-03-01T10:00:00-05:00String representing the object's type.
Possible values: [zoned_date_time]
The time zone of the local time (IANA format).
America/New_YorkThe UTC date/time in Unix timestamp format (seconds).
1736461200The UTC date/time in ISO-8601 format (with time zone information).
2025-03-01T03:00:00ZThe current status of the booking intent
Possible values: [pending, slot_selected, completed, abandoned]
When the intent was last updated
The event type.
Possible values: [booking_intent.created]
{
"object": {
"abandoned_at": null,
"appointment": null,
"client": null,
"client_data": {
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe",
"locale": "en",
"phone": "+15551234567",
"reference_id": "ext_123",
"time_zone": "America/New_York"
},
"completed_at": null,
"created_at": "2026-02-22T10:00:00Z",
"end_at": {
"local": "2026-02-23T10:30:00-05:00",
"object": "zoned_date_time",
"time_zone": "America/New_York",
"unix_ts": 1771947000,
"utc": "2026-02-23T15:30:00Z"
},
"hold_duration": "PT10M",
"hold_enabled": true,
"hold_until": "2026-02-22T10:10:00Z",
"id": "bi_abc123def456abc123def456",
"locked_fields": [
"provider_id",
"start_at",
"end_at",
"time_zone"
],
"metadata": {
"source": "web"
},
"object": "booking_intent",
"provider": {
"created_at": "2017-09-12T12:34:55Z",
"display_name": "John Smith",
"first_name": "John",
"id": "prov_d025a96ac0c6",
"last_name": "Smith",
"metadata": {
"external_id": "123"
},
"object": "provider",
"updated_at": "2017-09-13T10:11:12Z"
},
"service": {
"appointment_type": "in_person",
"booking_policy": {
"advance_notice": {
"enabled": true,
"minimum_duration": "PT1H"
},
"allow_booking": true,
"disabled_message": "Booking is disabled for this service.",
"hold": {
"duration": "PT10M",
"enabled": true
},
"maximize_utilization": {
"enabled": true
}
},
"cancellation_policy": {
"advance_notice": {
"enabled": true,
"minimum_duration": "PT1H"
},
"allow_cancellation": true,
"disabled_message": "Cancellation is disabled for this service."
},
"change_policy_text": "Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.",
"created_at": "2025-02-17T17:49:19Z",
"duration": "PT1H30M",
"id": "srv_d025a96ac0c6",
"internal_name": null,
"name": "Initial Consult",
"object": "service",
"provider_notifications": {
"additional_recipients": [
"admin@example.com"
],
"notify_provider": true,
"types": [
{
"type": "new_appointment"
}
]
},
"rescheduling_policy": {
"advance_notice": {
"enabled": true,
"minimum_duration": "PT1H"
},
"allow_rescheduling": true,
"disabled_message": "Rescheduling is disabled for this service."
},
"slot_rules": [
{
"recurrence_rule": {
"byday": [
"mo",
"we",
"fr"
],
"freq": "weekly"
},
"start_times": [
"09:00",
"10:00"
]
}
],
"updated_at": "2025-02-17T17:49:19Z"
},
"start_at": {
"local": "2026-02-23T10:00:00-05:00",
"object": "zoned_date_time",
"time_zone": "America/New_York",
"unix_ts": 1771945200,
"utc": "2026-02-23T15:00:00Z"
},
"status": "slot_selected",
"updated_at": "2026-02-22T10:00:00Z"
},
"type": "booking_intent.created"
}