Appointments events

Outbound webhook events for appointments: when each one fires and the exact JSON payload Centerfy POSTs to your URL.

7 events. Subscribe to them in Settings → API & Webhooks → Webhooks or with the outbound webhook subscription endpoints. Delivery, authentication headers and the common envelope are described in the webhooks overview.

EventWhen it fires
appointment.createdA new appointment is booked in this sub-account.
appointment.updatedAn appointment’s fields change (time, status, calendar, etc.).
appointment.deletedAn appointment is deleted. The payload carries its last known state.
appointment.confirmedAn appointment’s status changes to confirmed. appointment.updated is sent as well.
appointment.cancelledAn appointment’s status changes to cancelled. appointment.updated is sent as well.
appointment.no_showAn appointment is marked as a no-show. appointment.updated is sent as well.
appointment.completedAn appointment is marked completed. appointment.updated is sent as well.

appointment.created

Appointment created. A new appointment is booked in this sub-account.

{
  "event": "appointment.created",
  "occurred_at": "2026-06-20T14:30:00.000Z",
  "sub_account_id": "<sub account uuid>",
  "organization_id": "<organization uuid>",
  "appointment": {
    "id": "<uuid>",
    "contact_id": "<uuid>",
    "calendar_id": "<uuid>",
    "title": "Consultation call",
    "description": null,
    "appointment_date": "2026-06-20T14:30:00+00:00",
    "duration_minutes": 30,
    "location": "Phone",
    "notes": "Discuss pricing",
    "status": "scheduled",
    "created_at": "2026-06-20T14:00:00.000Z",
    "updated_at": "2026-06-20T14:00:00.000Z"
  }
}

appointment.updated

Appointment updated. An appointment’s fields change (time, status, calendar, etc.).

{
  "event": "appointment.updated",
  "occurred_at": "2026-06-20T14:30:00.000Z",
  "sub_account_id": "<sub account uuid>",
  "organization_id": "<organization uuid>",
  "appointment": {
    "id": "<uuid>",
    "contact_id": "<uuid>",
    "calendar_id": "<uuid>",
    "title": "Consultation call",
    "description": null,
    "appointment_date": "2026-06-20T14:30:00+00:00",
    "duration_minutes": 30,
    "location": "Phone",
    "notes": "Discuss pricing",
    "status": "scheduled",
    "created_at": "2026-06-20T14:00:00.000Z",
    "updated_at": "2026-06-20T14:00:00.000Z"
  }
}

appointment.deleted

Appointment deleted. An appointment is deleted. The payload carries its last known state.

{
  "event": "appointment.deleted",
  "occurred_at": "2026-06-20T14:30:00.000Z",
  "sub_account_id": "<sub account uuid>",
  "organization_id": "<organization uuid>",
  "appointment": {
    "id": "<uuid>",
    "contact_id": "<uuid>",
    "calendar_id": "<uuid>",
    "title": "Consultation call",
    "description": null,
    "appointment_date": "2026-06-20T14:30:00+00:00",
    "duration_minutes": 30,
    "location": "Phone",
    "notes": "Discuss pricing",
    "status": "scheduled",
    "created_at": "2026-06-20T14:00:00.000Z",
    "updated_at": "2026-06-20T14:00:00.000Z"
  }
}

appointment.confirmed

Appointment confirmed. An appointment’s status changes to confirmed. appointment.updated is sent as well.

{
  "event": "appointment.confirmed",
  "occurred_at": "2026-06-20T14:30:00.000Z",
  "sub_account_id": "<sub account uuid>",
  "organization_id": "<organization uuid>",
  "previous_status": "scheduled",
  "appointment": {
    "id": "<uuid>",
    "contact_id": "<uuid>",
    "calendar_id": "<uuid>",
    "title": "Consultation call",
    "description": null,
    "appointment_date": "2026-06-20T14:30:00+00:00",
    "duration_minutes": 30,
    "location": "Phone",
    "notes": "Discuss pricing",
    "status": "confirmed",
    "created_at": "2026-06-20T14:00:00.000Z",
    "updated_at": "2026-06-20T14:00:00.000Z"
  }
}

appointment.cancelled

Appointment cancelled. An appointment’s status changes to cancelled. appointment.updated is sent as well.

{
  "event": "appointment.cancelled",
  "occurred_at": "2026-06-20T14:30:00.000Z",
  "sub_account_id": "<sub account uuid>",
  "organization_id": "<organization uuid>",
  "previous_status": "scheduled",
  "appointment": {
    "id": "<uuid>",
    "contact_id": "<uuid>",
    "calendar_id": "<uuid>",
    "title": "Consultation call",
    "description": null,
    "appointment_date": "2026-06-20T14:30:00+00:00",
    "duration_minutes": 30,
    "location": "Phone",
    "notes": "Discuss pricing",
    "status": "cancelled",
    "created_at": "2026-06-20T14:00:00.000Z",
    "updated_at": "2026-06-20T14:00:00.000Z"
  }
}

appointment.no_show

Appointment no-show. An appointment is marked as a no-show. appointment.updated is sent as well.

{
  "event": "appointment.no_show",
  "occurred_at": "2026-06-20T14:30:00.000Z",
  "sub_account_id": "<sub account uuid>",
  "organization_id": "<organization uuid>",
  "previous_status": "scheduled",
  "appointment": {
    "id": "<uuid>",
    "contact_id": "<uuid>",
    "calendar_id": "<uuid>",
    "title": "Consultation call",
    "description": null,
    "appointment_date": "2026-06-20T14:30:00+00:00",
    "duration_minutes": 30,
    "location": "Phone",
    "notes": "Discuss pricing",
    "status": "no_show",
    "created_at": "2026-06-20T14:00:00.000Z",
    "updated_at": "2026-06-20T14:00:00.000Z"
  }
}

appointment.completed

Appointment completed. An appointment is marked completed. appointment.updated is sent as well.

{
  "event": "appointment.completed",
  "occurred_at": "2026-06-20T14:30:00.000Z",
  "sub_account_id": "<sub account uuid>",
  "organization_id": "<organization uuid>",
  "previous_status": "scheduled",
  "appointment": {
    "id": "<uuid>",
    "contact_id": "<uuid>",
    "calendar_id": "<uuid>",
    "title": "Consultation call",
    "description": null,
    "appointment_date": "2026-06-20T14:30:00+00:00",
    "duration_minutes": 30,
    "location": "Phone",
    "notes": "Discuss pricing",
    "status": "completed",
    "created_at": "2026-06-20T14:00:00.000Z",
    "updated_at": "2026-06-20T14:00:00.000Z"
  }
}
© 2026 Centerfy AI. All rights reserved.