Skip to main content

Appointment Event

The appointment event fires every time an appointment is created, updated, or deleted in myKaarma. The payload extends the myKaarma Appointment API response — full field documentation for appointmentInfoResponse is available here.

Use the event and newStatus fields to determine what changed and filter to the cases relevant to your integration.

Important Note on Duplicate Events

For a single appointment create or update from myKaarma you will receive two events over the webhook:

  • The first is triggered by myKaarma itself (e.g. CREATED or RESCHEDULED).
  • The second is triggered by the DMS acknowledging the change (e.g. UPDATED with a DMS-assigned key).

Field Reference

payloadTop-level payload for the appointment event.
uuid
string
departmentUuid
string
subscriberName
stringnullable
event
enum
eventCreationDateTime
datetime
updatedByUserUuid
string
serviceAppointmentRequestLoanerBookingList
array
appointmentInfoResponse
object
Full appointment details — scheduling times, status, DMS fields, advisor, and nested customer/vehicle/communication info.
uuid
string
status
enum
newStatus
enum
date
datetime
startTime
datetime
endTime
datetime
platform
string
appointmentSource
string
appointmentKey
stringnullable
recall
boolean
assignedAdvisorUuid
string
dealerUuid
string
dispatchCode
stringnullable
creatorAdvisorUuid
stringnullable
preferredDate
date
isCancelled
boolean
comments
stringnullable
internalNotes
stringnullable
teamUuid
stringnullable
reminderCount
number
customerVehicleInspectionId
stringnullable
customerInformation
object
vehicleInformation
object
orderInformation
object
appointmentCommunicationPreferences
object
transportOption
objectnullable
serviceList[]
array
sarmetaData
objectnullable
{
  "id": "a7b9c1d3-e5f7-4891-ab23-cd45ef678901",
  "timestamp": 1728542293678,
  "dealeruuid": "7c1e5a9f3b7d1e5a9c3e7b1f5d9a3c7e1b5f9d3a7c1e5b9f3d7a1c5e9b3f7d1",
  "departmentuuid": "3a7f1c9e2b5d8f0a4c6e9b1d3f5a7c0e2b4d6f8a1c3e5b7d9f0a2c4e6b8d0f2",
  "type": "appointments",
  "payload": {
    "uuid": "e4d8f1a2-b3c5-4e7f-9a0b-1c2d3e4f5a6b",
    "departmentUuid": "3a7f1c9e2b5d8f0a4c6e9b1d3f5a7c0e2b4d6f8a1c3e5b7d9f0a2c4e6b8d0f2",
    "subscriberName": null,
    "event": "RESCHEDULED",
    "eventCreationDateTime": "2025-09-27 02:19:21.796",
    "updatedByUserUuid": "4f8b2d6a0e4c8f2b6d0a4c8b2d6f0e4b8d2f6a0c4e8b2d6a0f4c8e2b6d0a4c8",
    "serviceAppointmentRequestLoanerBookingList": [],
    "appointmentInfoResponse": {
      "uuid": "Nb8hEtSrXwOq2mV5dZfBjG7cYpKu3IAixRgTlPnCa0e",
      "status": "N",
      "newStatus": "Rescheduled",
      "date": "2025-09-26 12:29:17",
      "startTime": "2025-09-27 15:00:00",
      "endTime": "2025-09-27 15:14:59",
      "platform": "Api",
      "appointmentSource": "Appointment API",
      "appointmentKey": null,
      "recall": false,
      "assignedAdvisorUuid": "4f8b2d6a0e4c8f2b6d0a4c8b2d6f0e4b8d2f6a0c4e8b2d6a0f4c8e2b6d0a4c8",
      "dealerUuid": "7c1e5a9f3b7d1e5a9c3e7b1f5d9a3c7e1b5f9d3a7c1e5b9f3d7a1c5e9b3f7d1",
      "dispatchCode": "B10",
      "creatorAdvisorUuid": "9d3a7e1c5b9f3d7a1e5c9b3f7d1e5a9c3f7b1d5e9a3c7f1b5d9e3a7c1f5b9d3",
      "preferredDate": "2025-09-27",
      "isCancelled": false,
      "comments": null,
      "internalNotes": null,
      "teamUuid": null,
      "reminderCount": 0,
      "customerVehicleInspectionId": null,
      "customerInformation": {
        "uuid": "Wq7nJhXtGpBmNd3KvRzYf2kAcEiLoU8sTPeCbHwOyM1",
        "firstName": "myKaarma",
        "lastName": "Testing",
        "company": null,
        "isBusiness": null,
        "customerKey": "224455",
        "confirmationPhone": null,
        "confirmationEmail": null,
        "custLocale": "en-us"
      },
      "vehicleInformation": {
        "uuid": "Pr5jFwQmZnBt8kXaHdV3uI0yDgCeLsR6NvOcTpKqY4f",
        "vehicleKey": null,
        "vin": "1GD312CG0BF081737",
        "brand": "GMC",
        "model": "Sierra 3500HD",
        "year": "2011",
        "trim": "Work Truck Long Box 2WD",
        "engine": null,
        "mileage": "25",
        "isValid": true
      },
      "orderInformation": {
        "uuid": null,
        "orderNumber": null,
        "orderDate": null,
        "orderType": null
      },
      "appointmentCommunicationPreferences": {
        "emailConfirmation": false,
        "textConfirmation": true,
        "emailReminder": false,
        "textReminder": true,
        "notifyCustomer": true,
        "confirmationPhoneNumber": "3108170196",
        "confirmationEmail": "mykaarma.testing@gmail.com",
        "sendCommunicationToDA": false
      },
      "transportOption": {
        "uuid": null,
        "transportation": "Loaner",
        "altTransportation": null,
        "bookInThirdParty": false,
        "bookingId": null,
        "bookingStartDate": null,
        "bookingEndDate": null,
        "bookingIsManual": null,
        "bookingIsValid": null,
        "loanerSmartLink": null,
        "subTransportOptionUuid": null
      },
      "serviceList": [
        {
          "uuid": "op_Q7N3K9M2P1X8",
          "opCode": "Oil Change",
          "laborOpCode": "OIL",
          "description": "Perform oil and filter change",
          "operationType": "OPCODE",
          "laborTotal": null,
          "partsTotal": null,
          "shopFees": null,
          "taxes": null,
          "price": null,
          "isValid": true,
          "payType": "Customer",
          "sortOrder": 1,
          "durationInMins": "60",
          "isCustomConcern": false,
          "isDealerAddedLine": false,
          "recallID": null,
          "menuUuid": null,
          "parentOpcodeUuid": null
        }
      ],
      "sarmetaData": {
        "dmsMetaData": {
          "type": "PUSH",
          "title": "SUCCESS",
          "description": null,
          "vehicleUuid": null,
          "dealerAssociateId": null
        }
      }
    }
  }
}
note

In the actual webhook delivery, payload is a stringified JSON string (not an object). The example above shows it as a parsed object for readability.

How to Test an Appointment Event

  1. Login to https://app.mykaarma.com using the user credentials provided to you.

  2. In the Customer tab, search for and select the customer you want to create/edit an appointment for:

    Search Customer
  3. If the vehicle you want to schedule the appointment for is not already linked to the customer, please click Add Vehicle button on the top right.

    Add Vehicle Button
  4. Paste in your VIN (or a randomly generated VIN) and fill in the Enter VIN textbox, and click Add To Customer. Now the customer has a vehicle attached.

    Add Vehicle Popup
  5. For the vehicle you want to schedule an appointment for, click on the Create Appointment button:

    Schedule Appointment Button
  6. Fill in the details like mileage, opcodes, notes, then select the transport option and advisor and pick a slot, and click on the Schedule button:

    Schedule Appointment Page Schedule Button
  7. The appointment will be created and you should receive an event on your webhook URL. You'll be able to see the appointment in the Customer tab with edit and delete buttons (both also raise webhook events):

    Customer tab - Appointment edit/delete buttons

FAQ

Which appointment update events will be sent to the third party?

All appointment updates for the dealers that the third party subscribes to in the context of myKaarma webhooks.

Why am I receiving multiple appointment events for a single create/update?

  • For a single appointment update from myKaarma, you will receive two appointment events over the webhook.
  • This happens because every time an appointment is created/updated from myKaarma, the latest details are pushed to DMS, prompting DMS to send another update event, which triggers the second event over the webhook.
  • When an appointment is created from myKaarma, you will receive a SCHEDULED event (due to myKaarma creation) and an UPDATED event (due to the DMS update), for example, when an appointment key is provided by DMS.