Skip to main content

ServiceUpdatedEventData

This is an object representing data for the service updated event.

object objectrequired

A service represents a type of appointment.

appointment_typestringrequired

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.

enabledbooleanrequired

Whether advance notice is enabled.

minimum_durationstringnullablerequired

The minimum duration of advance notice.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

allow_bookingbooleanrequired

Whether public booking is allowed for the service.

disabled_messagestringnullablerequired

The message to display when public booking is disabled.

hold objectrequired

A policy for temporarily reserving a slot during the multi-step booking flow.

durationstringnullablerequired

The duration of the hold.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

enabledbooleanrequired

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.

enabledbooleanrequired

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.

enabledbooleanrequired

Whether advance notice is enabled.

minimum_durationstringnullablerequired

The minimum duration of advance notice.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

allow_cancellationbooleanrequired

Whether public cancellation is allowed for the service.

disabled_messagestringnullablerequired

The message to display when public cancellation is disabled.

change_policy_textstringrequired

Displayed to clients in follow-up communication. Use this to explain any important rules about cancellations or rescheduling.

Example: Appointments within 48 hours cannot be canceled or rescheduled online. Please call our office.
created_atstring<datetime>required

When the service was created.

durationstringrequired

The duration of time slots in ISO-8601 duration format.

Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

Example: `PT30M`
idstringrequired

Unique identifier for the object.

Possible values: Value must match regular expression ^srv_\w{12}$

internal_namestringnullable

An optional internal label for admin use. When set, this is displayed in the admin UI instead of the public name.

namestringrequired

The name of the service.

objectstringrequired

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_recipientsstring<email>[]required

Additional email addresses that receive staff notification emails for this service.

notify_providerbooleanrequired

Whether the assigned provider receives notification emails for this service.

types object[]required

Array of enabled staff notification types for the service.

  • Array [
  • typestringrequired

    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.

    enabledbooleanrequired

    Whether advance notice is enabled.

    minimum_durationstringnullablerequired

    The minimum duration of advance notice.

    Possible values: Value must match regular expression ^PT(?:(\d+)H)?(?:(\d+)M)?$

    allow_reschedulingbooleanrequired

    Whether public rescheduling is allowed for the service.

    disabled_messagestringnullablerequired

    The message to display when public rescheduling is disabled.

    slot_rules object[]required

    Array of slot rules for the service.

  • Array [
  • 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.

    bydaystring[]

    The days of the week on which the recurrence occurs.

    Possible values: Value must match regular expression (mo|tu|we|th|fr|sa|su)$

    Example: ["mo","we","fr"]
    countintegernullable

    Number of occurrences at which to end the recurrence.

    Possible values: >= 1

    freqstringrequired

    The frequency of the recurrence.

    Possible values: [daily, weekly]

    intervalinteger

    How often the recurrence rule repeats.

    Possible values: >= 1

    Example: 2
    untildatenullable

    Date at which to end the recurrence (in ISO-8601 format).

    Example: 2024-01-02
    start_timesstring[]required

    Array of start times for slots.

    Possible values: Value must match regular expression ^\d{2}:\d{2}$

  • ]
  • updated_atstring<datetime>required

    When the service was last updated.

    typestringrequired

    The event type.

    Possible values: [service.updated]

    ServiceUpdatedEventData
    {
    "object": {
    "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"
    },
    "type": "service.updated"
    }