> ## Documentation Index
> Fetch the complete documentation index at: https://docs.morf.health/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Appointment

> Event payload details and trigger documentation for Appointment data from Acuity

<img src="https://mintcdn.com/morfhealth/EU2WCxuXGIUQcziR/images/acuity.svg?fit=max&auto=format&n=EU2WCxuXGIUQcziR&q=85&s=79bd07b287bc363d66588a4b8e013663" alt="images/acuity.svg" width="40" height="40" data-path="images/acuity.svg" />

# Events

## Triggering Webhook Types

The following event types are associated with the Appointment event payload from Acuity.

* `Acuity Appointment Scheduled`
* `Acuity Appointment Rescheduled`
* `Acuity Appointment Cancelled`
* `Acuity Appointment Updated`
* `Acuity Appointment No Show`

<RequestExample>
  ```json Example theme={null}
  {
    "appointment_confirmation_link": "https://app.acuityscheduling.com/schedule.php?owner=27553604&action=appt&id%5B%5D=5e0e1d7ed20afe3834905c2813b7b6f0",
    "appointment_created_at": "2023-08-31T16:57:18Z",
    "appointment_created_by": "drlister@example.health",
    "appointment_date": "August 16, 2023",
    "appointment_datetime": "2023-08-16T17:45:00Z",
    "appointment_datetime_raw": "2023-08-16T10:45:00-0700",
    "appointment_day_of_month": "16",
    "appointment_day_of_week": "Wednesday",
    "appointment_email_address": "example@test.com",
    "appointment_end_datetime": "2023-08-16T18:15:00Z",
    "appointment_first_name": "John",
    "appointment_id": "1109810062",
    "appointment_last_name": "Doe",
    "appointment_length_minutes": 30,
    "appointment_location_detail": "https://us06web.zoom.us/j/81866002750?pwd=bHdvZ1dLaW5LSS80QUVTckE1ZU4wUT09",
    "appointment_month": "August",
    "appointment_notes": "This is a note that could be empty",
    "appointment_patient_timezone_identifier": "America/Los_Angeles",
    "appointment_phone_number": "7083799999",
    "appointment_provider_full_name": "Joseph Lister",
    "appointment_provider_id": "7568038",
    "appointment_time": "10:45am",
    "appointment_timezone_offset": "-0700",
    "appointment_timezone_offset_seconds_east_of_utc": -25200,
    "appointment_timezone_short_name": "PDT",
    "appointment_type": {
      "active": true,
      "calendar_ids": [
        "7568038"
      ],
      "category": "Consultations",
      "description": "First consultation with a provider",
      "id": "38932233",
      "length_minutes": 30,
      "minutes_padding_after": 5,
      "minutes_padding_before": 5,
      "name": "Initial Visit",
      "private": false,
      "scheduling_url": "https://app.acuityscheduling.com/schedule.php?owner=27553604"
    },
    "appointment_type_id": "38932233",
    "appointment_type_title": "Initial Visit",
    "appointment_zoom_meeting_id": "81866002750",
    "appointment_zoom_meeting_password": "234508",
    "canceled": false,
    "customer_provided_id": "a2bb52cb-7dc7-4710-902b-245efb55ef9e",
    "labels": "number1"
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Description theme={null}
  {
    "appointment_confirmation_link": "URL to the appointment confirmation page",
    "appointment_created_at": "When the appointment was created",
    "appointment_created_by": "Email of the user who scheduled the appointment",
    "appointment_date": "Formatted date of the appointment",
    "appointment_datetime": "Start time of the appointment in UTC",
    "appointment_datetime_raw": "Raw datetime string from Acuity",
    "appointment_day_of_month": "Day of the month for the appointment",
    "appointment_day_of_week": "Day of the week for the appointment",
    "appointment_email_address": "Email address of the patient",
    "appointment_end_datetime": "End time of the appointment in UTC",
    "appointment_first_name": "Patient's first name",
    "appointment_id": "Unique identifier for the appointment",
    "appointment_last_name": "Patient's last name",
    "appointment_length_minutes": "Duration of the appointment in minutes",
    "appointment_location_detail": "Full Zoom meeting URL for the appointment",
    "appointment_month": "Month of the appointment",
    "appointment_notes": "Notes associated with the appointment",
    "appointment_patient_timezone_identifier": "IANA timezone identifier for the patient",
    "appointment_phone_number": "Patient's phone number",
    "appointment_provider_full_name": "Name of the provider's calendar",
    "appointment_provider_id": "ID of the provider's calendar",
    "appointment_time": "Formatted time of the appointment",
    "appointment_timezone_offset": "Timezone offset in ±HHMM format",
    "appointment_timezone_offset_seconds_east_of_utc": "Timezone offset in seconds east of UTC",
    "appointment_timezone_short_name": "Short name of the appointment timezone",
    "appointment_type": {
      "active": "Whether the appointment type is deleted (true = active, false = deleted)",
      "calendar_ids": "List of calendar IDs associated with this appointment type",
      "category": "The category of the appointment type",
      "description": "Optional description of the appointment type",
      "id": "Unique identifier for the appointment type",
      "length_minutes": "Duration of the appointment type in minutes",
      "minutes_padding_after": "The time padding after the appointment",
      "minutes_padding_before": "The time padding before the appointment",
      "name": "The name of the appointment type",
      "private": "Whether the appointment type is private",
      "scheduling_url": "URL for scheduling this appointment type"
    },
    "appointment_type_id": "ID of the appointment type",
    "appointment_type_title": "Title of the appointment type",
    "appointment_zoom_meeting_id": "Zoom meeting ID extracted from location",
    "appointment_zoom_meeting_password": "Zoom meeting password extracted from location",
    "canceled": "Whether the appointment has been canceled",
    "customer_provided_id": "Customer-provided identifier (e.g. patient/morf profile ID)",
    "labels": "List of label names associated with the appointment"
  }
  ```
</ResponseExample>

### Payload Field Details

<ResponseField name="Appointment" type="Event Payload">
  <Expandable title="fields" defaultOpen="true">
    <ResponseField name="appointment_id" type="string" required>
      Unique identifier for the appointment

      ```json CEL theme={null}
      appointment_id
      ```

      ```json Example theme={null}
      "1109810062"
      ```
    </ResponseField>

    <ResponseField name="appointment_email_address" type="string">
      Email address of the patient

      ```json CEL theme={null}
      appointment_email_address
      ```

      ```json Example theme={null}
      "example@test.com"
      ```
    </ResponseField>

    <ResponseField name="appointment_type_id" type="string">
      ID of the appointment type

      ```json CEL theme={null}
      appointment_type_id
      ```

      ```json Example theme={null}
      "38932233"
      ```
    </ResponseField>

    <ResponseField name="appointment_type_title" type="string">
      Title of the appointment type

      ```json CEL theme={null}
      appointment_type_title
      ```

      ```json Example theme={null}
      "Initial Visit"
      ```
    </ResponseField>

    <ResponseField name="appointment_type" type="object">
      *Description coming soon*

      ```json CEL theme={null}
      appointment_type
      ```

      ```json Example theme={null}
      {
      "active": true,
      "calendar_ids": [
      "7568038"
      ],
      "category": "Consultations",
      "description": "First consultation with a provider",
      "id": "38932233",
      "length_minutes": 30,
      "minutes_padding_after": 5,
      "minutes_padding_before": 5,
      "name": "Initial Visit",
      "private": false,
      "scheduling_url": "https://app.acuityscheduling.com/schedule.php?owner=27553604"
      }
      ```
    </ResponseField>

    <ResponseField name="appointment_type.id" type="string">
      Unique identifier for the appointment type

      ```json CEL theme={null}
      appointment_type.id
      ```

      ```json Example theme={null}
      "38932233"
      ```
    </ResponseField>

    <ResponseField name="appointment_type.active" type="bool">
      Whether the appointment type is deleted (true = active, false = deleted)

      ```json CEL theme={null}
      appointment_type.active
      ```

      ```json Example theme={null}
      true
      ```
    </ResponseField>

    <ResponseField name="appointment_type.name" type="string">
      The name of the appointment type

      ```json CEL theme={null}
      appointment_type.name
      ```

      ```json Example theme={null}
      "Initial Visit"
      ```
    </ResponseField>

    <ResponseField name="appointment_type.description" type="string">
      Optional description of the appointment type

      ```json CEL theme={null}
      appointment_type.description
      ```

      ```json Example theme={null}
      "First consultation with a provider"
      ```
    </ResponseField>

    <ResponseField name="appointment_type.length_minutes" type="uint64">
      Duration of the appointment type in minutes

      ```json CEL theme={null}
      appointment_type.length_minutes
      ```

      ```json Example theme={null}
      30
      ```
    </ResponseField>

    <ResponseField name="appointment_type.category" type="string">
      The category of the appointment type

      ```json CEL theme={null}
      appointment_type.category
      ```

      ```json Example theme={null}
      "Consultations"
      ```
    </ResponseField>

    <ResponseField name="appointment_type.private" type="bool">
      Whether the appointment type is private

      ```json CEL theme={null}
      appointment_type.private
      ```

      ```json Example theme={null}
      false
      ```
    </ResponseField>

    <ResponseField name="appointment_type.minutes_padding_before" type="uint64">
      The time padding before the appointment

      ```json CEL theme={null}
      appointment_type.minutes_padding_before
      ```

      ```json Example theme={null}
      5
      ```
    </ResponseField>

    <ResponseField name="appointment_type.minutes_padding_after" type="uint64">
      The time padding after the appointment

      ```json CEL theme={null}
      appointment_type.minutes_padding_after
      ```

      ```json Example theme={null}
      5
      ```
    </ResponseField>

    <ResponseField name="appointment_type.calendar_ids" type="[]string">
      List of calendar IDs associated with this appointment type

      ```json CEL theme={null}
      appointment_type.calendar_ids
      ```

      ```json Example theme={null}
      [
      "7568038"
      ]
      ```
    </ResponseField>

    <ResponseField name="appointment_type.scheduling_url" type="string">
      URL for scheduling this appointment type

      ```json CEL theme={null}
      appointment_type.scheduling_url
      ```

      ```json Example theme={null}
      "https://app.acuityscheduling.com/schedule.php?owner=27553604"
      ```
    </ResponseField>

    <ResponseField name="appointment_location_detail" type="string">
      Full Zoom meeting URL for the appointment

      ```json CEL theme={null}
      appointment_location_detail
      ```

      ```json Example theme={null}
      "https://us06web.zoom.us/j/81866002750?pwd=bHdvZ1dLaW5LSS80QUVTckE1ZU4wUT09"
      ```
    </ResponseField>

    <ResponseField name="appointment_zoom_meeting_id" type="string">
      Zoom meeting ID extracted from location

      ```json CEL theme={null}
      appointment_zoom_meeting_id
      ```

      ```json Example theme={null}
      "81866002750"
      ```
    </ResponseField>

    <ResponseField name="appointment_zoom_meeting_password" type="string">
      Zoom meeting password extracted from location

      ```json CEL theme={null}
      appointment_zoom_meeting_password
      ```

      ```json Example theme={null}
      "234508"
      ```
    </ResponseField>

    <ResponseField name="appointment_provider_id" type="string">
      ID of the provider's calendar

      ```json CEL theme={null}
      appointment_provider_id
      ```

      ```json Example theme={null}
      "7568038"
      ```
    </ResponseField>

    <ResponseField name="appointment_provider_full_name" type="string">
      Name of the provider's calendar

      ```json CEL theme={null}
      appointment_provider_full_name
      ```

      ```json Example theme={null}
      "Joseph Lister"
      ```
    </ResponseField>

    <ResponseField name="appointment_datetime_raw" type="string" required>
      Raw datetime string from Acuity

      ```json CEL theme={null}
      appointment_datetime_raw
      ```

      ```json Example theme={null}
      "2023-08-16T10:45:00-0700"
      ```
    </ResponseField>

    <ResponseField name="appointment_datetime" type="timing.v1.Timestamp" required>
      Start time of the appointment in UTC

      ```json CEL theme={null}
      appointment_datetime
      ```

      ```json Example theme={null}
      "2023-08-16T17:45:00Z"
      ```
    </ResponseField>

    <ResponseField name="appointment_end_datetime" type="timing.v1.Timestamp" required>
      End time of the appointment in UTC

      ```json CEL theme={null}
      appointment_end_datetime
      ```

      ```json Example theme={null}
      "2023-08-16T18:15:00Z"
      ```
    </ResponseField>

    <ResponseField name="appointment_length_minutes" type="uint64">
      Duration of the appointment in minutes

      ```json CEL theme={null}
      appointment_length_minutes
      ```

      ```json Example theme={null}
      30
      ```
    </ResponseField>

    <ResponseField name="appointment_notes" type="string">
      Notes associated with the appointment

      ```json CEL theme={null}
      appointment_notes
      ```

      ```json Example theme={null}
      "This is a note that could be empty"
      ```
    </ResponseField>

    <ResponseField name="appointment_created_at" type="timing.v1.Timestamp" required>
      When the appointment was created

      ```json CEL theme={null}
      appointment_created_at
      ```

      ```json Example theme={null}
      "2023-08-31T16:57:18Z"
      ```
    </ResponseField>

    <ResponseField name="appointment_created_by" type="string">
      Email of the user who scheduled the appointment

      ```json CEL theme={null}
      appointment_created_by
      ```

      ```json Example theme={null}
      "drlister@example.health"
      ```
    </ResponseField>

    <ResponseField name="appointment_timezone_short_name" type="string">
      Short name of the appointment timezone

      ```json CEL theme={null}
      appointment_timezone_short_name
      ```

      ```json Example theme={null}
      "PDT"
      ```
    </ResponseField>

    <ResponseField name="appointment_timezone_offset" type="string" required>
      Timezone offset in ±HHMM format

      ```json CEL theme={null}
      appointment_timezone_offset
      ```

      ```json Example theme={null}
      "-0700"
      ```
    </ResponseField>

    <ResponseField name="appointment_timezone_offset_seconds_east_of_utc" type="int64" required>
      Timezone offset in seconds east of UTC

      ```json CEL theme={null}
      appointment_timezone_offset_seconds_east_of_utc
      ```

      ```json Example theme={null}
      -25200
      ```
    </ResponseField>

    <ResponseField name="appointment_patient_timezone_identifier" type="string">
      IANA timezone identifier for the patient

      ```json CEL theme={null}
      appointment_patient_timezone_identifier
      ```

      ```json Example theme={null}
      "America/Los_Angeles"
      ```
    </ResponseField>

    <ResponseField name="appointment_confirmation_link" type="string">
      URL to the appointment confirmation page

      ```json CEL theme={null}
      appointment_confirmation_link
      ```

      ```json Example theme={null}
      "https://app.acuityscheduling.com/schedule.php?owner=27553604&action=appt&id%5B%5D=5e0e1d7ed20afe3834905c2813b7b6f0"
      ```
    </ResponseField>

    <ResponseField name="appointment_first_name" type="string">
      Patient's first name

      ```json CEL theme={null}
      appointment_first_name
      ```

      ```json Example theme={null}
      "John"
      ```
    </ResponseField>

    <ResponseField name="appointment_last_name" type="string">
      Patient's last name

      ```json CEL theme={null}
      appointment_last_name
      ```

      ```json Example theme={null}
      "Doe"
      ```
    </ResponseField>

    <ResponseField name="appointment_day_of_week" type="string" required>
      Day of the week for the appointment

      ```json CEL theme={null}
      appointment_day_of_week
      ```

      ```json Example theme={null}
      "Wednesday"
      ```
    </ResponseField>

    <ResponseField name="appointment_day_of_month" type="string" required>
      Day of the month for the appointment

      ```json CEL theme={null}
      appointment_day_of_month
      ```

      ```json Example theme={null}
      "16"
      ```
    </ResponseField>

    <ResponseField name="appointment_month" type="string" required>
      Month of the appointment

      ```json CEL theme={null}
      appointment_month
      ```

      ```json Example theme={null}
      "August"
      ```
    </ResponseField>

    <ResponseField name="appointment_date" type="string" required>
      Formatted date of the appointment

      ```json CEL theme={null}
      appointment_date
      ```

      ```json Example theme={null}
      "August 16, 2023"
      ```
    </ResponseField>

    <ResponseField name="appointment_time" type="string" required>
      Formatted time of the appointment

      ```json CEL theme={null}
      appointment_time
      ```

      ```json Example theme={null}
      "10:45am"
      ```
    </ResponseField>

    <ResponseField name="appointment_phone_number" type="string">
      Patient's phone number

      ```json CEL theme={null}
      appointment_phone_number
      ```

      ```json Example theme={null}
      "7083799999"
      ```
    </ResponseField>

    <ResponseField name="customer_provided_id" type="string">
      Customer-provided identifier (e.g. patient/morf profile ID)

      ```json CEL theme={null}
      customer_provided_id
      ```

      ```json Example theme={null}
      "a2bb52cb-7dc7-4710-902b-245efb55ef9e"
      ```
    </ResponseField>

    <ResponseField name="labels" type="[]string" required>
      List of label names associated with the appointment

      ```json CEL theme={null}
      labels
      ```

      ```json Example theme={null}
      "number1"
      ```
    </ResponseField>

    <ResponseField name="canceled" type="bool" required>
      Whether the appointment has been canceled

      ```json CEL theme={null}
      canceled
      ```

      ```json Example theme={null}
      false
      ```
    </ResponseField>
  </Expandable>
</ResponseField>
