Event Types

Hermon emits real-time events for contract, payment, appointment, and lead activity. Every payload is wrapped in the standard envelope (id, event_type, occurred_at, organization_id, data). Below are the schemas and examples for each event type.

Contract Events

CONTRACT_CREATEDCONTRACT_UPDATEDFired when a contract is created, or when its details or notes are updated. Both events share the same payload shape.
FieldTypeDescription
contract_idstringUUID of the contract
contract_typestringContract type (e.g. STANDARD)
statusstringCurrent contract status (e.g. DRAFT, SENT, SIGNED)
total_valuenumber | nullTotal contract value in major currency units
currencystringISO 4217 currency code (e.g. USD)
notesstring | nullLatest note on the contract
programobject | nullAssociated program ({ id, name }) — null when unavailable
leadobjectLead summary (see below)
closerobject | nullAssigned closer — null when unassigned
triagerobject | nullAssigned triager — null when unassigned
setterobject | nullAssigned setter — null when unassigned
created_atstringISO 8601 timestamp of contract creation
updated_atstringISO 8601 timestamp of last update
sent_atstring | nullISO 8601 timestamp of when the contract was sent
signed_atstring | nullISO 8601 timestamp of signing — null until signed
custom_fieldsobject[]Exposed custom fields (see below)
leadobject
FieldTypeDescription
idstringUUID of the lead
first_namestringLead's first name
last_namestring | nullLead's last name
full_namestringConcatenated first + last name
emailstringLead's email address
phone_e164string | nullPhone number in E.164 format
setter, closer, host & triagerobject | null

Each assigned-role object shares the same shape and is resolved from the matching Assigned role on the record (falling back to the linked lead, exactly as the setter is resolved). Any role that is unassigned is delivered as null.

FieldTypeDescription
idstringUser ID of the assigned team member
first_namestringUser's first name
last_namestringUser's last name
profile_image_urlstring | nullURL of the user's profile image
custom_fieldsobject[]
FieldTypeDescription
idstringUUID of the custom field definition
labelstringDisplay label of the field
typestringField type (e.g. TEXT, NUMBER, SELECT, DATE)
optionsstring[] | nullAllowed options for SELECT-type fields, otherwise null
display_ordernumberOrdering index of the field
visibilitystring[]Surfaces the field is exposed on
valuestring | number | boolean | nullThe record's value for this field

Example Payload

json
{
  "id": "evt_1712577600000_ab12cd34ef56",
  "event_type": "CONTRACT_CREATED",
  "occurred_at": "2026-04-08T12:00:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "contract_id": "uuid-contract-123",
    "contract_type": "STANDARD",
    "status": "DRAFT",
    "total_value": 5000.00,
    "currency": "USD",
    "notes": "Follow up before kickoff call",
    "program": {
      "id": "uuid-program-123",
      "name": "12-Week Coaching"
    },
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671"
    },
    "closer": {
      "id": "user_2closer",
      "first_name": "Hermon",
      "last_name": "Closer",
      "profile_image_url": "https://img.clerk.com/closer.png"
    },
    "triager": {
      "id": "user_2triager",
      "first_name": "Tina",
      "last_name": "Triager",
      "profile_image_url": null
    },
    "setter": {
      "id": "user_2setter",
      "first_name": "Sam",
      "last_name": "Setter",
      "profile_image_url": null
    },
    "created_at": "2026-04-08T12:00:00.000Z",
    "updated_at": "2026-04-08T12:00:00.000Z",
    "sent_at": null,
    "signed_at": null,
    "custom_fields": []
  }
}

Example Payload

json
{
  "id": "evt_1712577600000_ab12cd34ef56",
  "event_type": "CONTRACT_UPDATED",
  "occurred_at": "2026-04-08T12:00:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "contract_id": "uuid-contract-123",
    "contract_type": "STANDARD",
    "status": "DRAFT",
    "total_value": 5000.00,
    "currency": "USD",
    "notes": "Follow up before kickoff call",
    "program": {
      "id": "uuid-program-123",
      "name": "12-Week Coaching"
    },
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671"
    },
    "closer": {
      "id": "user_2closer",
      "first_name": "Hermon",
      "last_name": "Closer",
      "profile_image_url": "https://img.clerk.com/closer.png"
    },
    "triager": {
      "id": "user_2triager",
      "first_name": "Tina",
      "last_name": "Triager",
      "profile_image_url": null
    },
    "setter": {
      "id": "user_2setter",
      "first_name": "Sam",
      "last_name": "Setter",
      "profile_image_url": null
    },
    "created_at": "2026-04-08T12:00:00.000Z",
    "updated_at": "2026-04-08T12:00:00.000Z",
    "sent_at": null,
    "signed_at": null,
    "custom_fields": []
  }
}
CONTRACT_SIGNEDFired when a client signs a contract.
FieldTypeDescription
contract_idstringUUID of the contract
contract_typestringContract type (e.g. STANDARD)
total_valuenumber | nullTotal contract value in major currency units
currencystringISO 4217 currency code (e.g. USD)
statusstringCurrent contract status (e.g. SIGNED)
signed_atstringISO 8601 timestamp of signing
sent_atstring | nullISO 8601 timestamp of when the contract was sent
created_atstringISO 8601 timestamp of contract creation
custom_fieldsobject[]Exposed custom fields (see below)
leadobject
FieldTypeDescription
idstringUUID of the lead
first_namestringLead's first name
last_namestring | nullLead's last name
full_namestringConcatenated first + last name
emailstringLead's email address
phone_e164string | nullPhone number in E.164 format
sourcestringLead source enum (e.g. LANDING_PAGE)
programobject
FieldTypeDescription
idstringUUID of the program
namestringProgram display name
pricenumberProgram price in major currency units
payment_typestringPIF, INSTALMENT, SUBSCRIPTION, etc.
billing_intervalstring | nullBilling cycle — null for one-time payments
subscriptionobject | null
FieldTypeDescription
idstringUUID of the subscription
billing_intervalstringBilling cycle (e.g. MONTHLY, WEEKLY)
amount_per_cyclenumberAmount charged per cycle in major currency units
currencystringISO 4217 currency code
statusstringSubscription status (e.g. ACTIVE, CANCELLED)
payment_providerstringPayment provider (e.g. STRIPE)
billing_cycles_paidnumberNumber of billing cycles successfully charged
total_collectednumberTotal amount collected so far in major currency units
current_period_startstring | nullISO 8601 start of current billing period
current_period_endstring | nullISO 8601 end of current billing period
next_billing_datestring | nullISO 8601 date of the next scheduled charge
started_atstring | nullISO 8601 timestamp of when the subscription started
custom_fieldsobject[]
FieldTypeDescription
idstringUUID of the custom field definition
labelstringDisplay label of the field
typestringField type (e.g. TEXT, NUMBER, SELECT, DATE)
optionsstring[] | nullAllowed options for SELECT-type fields, otherwise null
display_ordernumberOrdering index of the field
visibilitystring[]Surfaces the field is exposed on
valuestring | number | boolean | nullThe record's value for this field

Example Payload

json
{
  "id": "evt_1712577600000_cd34ef56ab12",
  "event_type": "CONTRACT_SIGNED",
  "occurred_at": "2026-04-08T12:00:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "contract_id": "uuid-contract-123",
    "contract_type": "STANDARD",
    "total_value": 5000.00,
    "currency": "USD",
    "status": "SIGNED",
    "signed_at": "2026-04-08T12:00:00.000Z",
    "sent_at": "2026-04-08T11:00:00.000Z",
    "created_at": "2026-04-08T10:00:00.000Z",
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671",
      "source": "LANDING_PAGE"
    },
    "program": {
      "id": "uuid-program-123",
      "name": "12-Week Coaching",
      "price": 5000.00,
      "payment_type": "PIF",
      "billing_interval": null
    },
    "subscription": {
      "id": "uuid-sub-123",
      "billing_interval": "MONTHLY",
      "amount_per_cycle": 1500.00,
      "currency": "USD",
      "status": "ACTIVE",
      "payment_provider": "STRIPE",
      "billing_cycles_paid": 1,
      "total_collected": 1500.00,
      "current_period_start": "2026-04-08T12:00:00.000Z",
      "current_period_end": "2026-05-08T12:00:00.000Z",
      "next_billing_date": "2026-05-08T12:00:00.000Z",
      "started_at": "2026-04-08T12:00:00.000Z"
    },
    "custom_fields": []
  }
}

Payment Events

PAYMENT_PAIDPAYMENT_FAILEDPAYMENT_REFUNDEDFired when a payment is collected, fails, or is refunded. All three share the same payload shape; the status and outcome fields differ.
FieldTypeDescription
payment_idstringUUID of the payment
contract_idstringUUID of the associated contract
programobject | nullProgram the parent contract belongs to ({ id, name })
typestringPayment type (e.g. PIF, INSTALMENT, SUBSCRIPTION)
payment_providerstringPayment provider (e.g. STRIPE, MANUAL)
statusstringPayment status (PAID, FAILED, REFUNDED)
amountnumberNet payment amount in major currency units
contracted_amountnumber | nullTotal contracted value in major units
amount_paid_on_contractnumberSum of all PAID payments on the parent contract
mandateobject | nullMandate backing installments ({ id, status, payment_provider, method })
vat_ratenumberVAT rate applied (e.g. 0.21, or 0 when exempt)
vat_amountnumberVAT amount in major units, computed from amount
gross_amountnumberamount + vat_amount — what the customer was charged
vat_exemptbooleanWhether VAT was waived for this payment
processor_fee_amountnumber | nullProvider transaction fee in major units (null when unreported)
processor_fee_currencystring | nullSettlement currency of processor_fee_amount
currencystringISO 4217 currency code (e.g. USD)
due_datestring | nullISO 8601 due date of the payment
paid_atstring | nullISO 8601 timestamp of payment completion
failure_reasonstring | nullReason for failure (when status is FAILED)
billing_cycle_numbernumber | nullBilling cycle index for subscription payments
external_payment_idstring | nullProvider's own payment identifier
leadobjectLead summary (see below)
billing_detailsobject | nullCheckout-time billing details (see below)
closerobject | nullAssigned closer — null when unassigned
triagerobject | nullAssigned triager — null when unassigned
setterobject | nullAssigned setter — null when unassigned
refunded_atstring | nullISO 8601 refund timestamp (payment.refunded only)
refund_reasonstring | nullReason for the refund (payment.refunded only)
created_atstringISO 8601 creation timestamp
updated_atstringISO 8601 last update timestamp
custom_fieldsobject[]Exposed custom fields (see below)
leadobject
FieldTypeDescription
idstringUUID of the lead
first_namestringLead's first name
last_namestring | nullLead's last name
full_namestringConcatenated first + last name
emailstringLead's email address
phone_e164string | nullPhone number in E.164 format
billing_detailsobject | null
FieldTypeDescription
business_namestring | nullRegistered business name
addressstringBilling street address
zipcodestringPostal / ZIP code
provincestringState / province
countrystringISO country code
vat_numberstring | nullVAT registration number
mandateobject | null
FieldTypeDescription
idstringUUID of the mandate
statusstringMandate status (e.g. ACTIVE)
payment_providerstringProvider backing the mandate
methodstring | nullPayment method (e.g. card, sepa_debit)
setter, closer, host & triagerobject | null

Each assigned-role object shares the same shape and is resolved from the matching Assigned role on the record (falling back to the linked lead, exactly as the setter is resolved). Any role that is unassigned is delivered as null.

FieldTypeDescription
idstringUser ID of the assigned team member
first_namestringUser's first name
last_namestringUser's last name
profile_image_urlstring | nullURL of the user's profile image
custom_fieldsobject[]
FieldTypeDescription
idstringUUID of the custom field definition
labelstringDisplay label of the field
typestringField type (e.g. TEXT, NUMBER, SELECT, DATE)
optionsstring[] | nullAllowed options for SELECT-type fields, otherwise null
display_ordernumberOrdering index of the field
visibilitystring[]Surfaces the field is exposed on
valuestring | number | boolean | nullThe record's value for this field

Example Payload

json
{
  "id": "evt_1712577600000_pay01paid02",
  "event_type": "PAYMENT_PAID",
  "occurred_at": "2026-04-08T12:15:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "payment_id": "uuid-payment-123",
    "contract_id": "uuid-contract-123",
    "program": {
      "id": "uuid-program-123",
      "name": "12-Week Coaching"
    },
    "type": "INSTALMENT",
    "payment_provider": "STRIPE",
    "status": "PAID",
    "amount": 1500.00,
    "contracted_amount": 5000.00,
    "amount_paid_on_contract": 1500.00,
    "mandate": {
      "id": "uuid-mandate-123",
      "status": "ACTIVE",
      "payment_provider": "STRIPE",
      "method": "card"
    },
    "vat_rate": 0.21,
    "vat_amount": 315.00,
    "gross_amount": 1815.00,
    "vat_exempt": false,
    "processor_fee_amount": 44.85,
    "processor_fee_currency": "USD",
    "currency": "USD",
    "due_date": "2026-04-08T00:00:00.000Z",
    "paid_at": "2026-04-08T12:15:00.000Z",
    "failure_reason": null,
    "billing_cycle_number": 1,
    "external_payment_id": "pi_3ABC",
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671"
    },
    "billing_details": {
      "business_name": "Acme LLC",
      "address": "123 Main St",
      "zipcode": "94105",
      "province": "CA",
      "country": "US",
      "vat_number": null
    },
    "closer": {
      "id": "user_2closer",
      "first_name": "Hermon",
      "last_name": "Closer",
      "profile_image_url": "https://img.clerk.com/closer.png"
    },
    "triager": {
      "id": "user_2triager",
      "first_name": "Tina",
      "last_name": "Triager",
      "profile_image_url": null
    },
    "setter": {
      "id": "user_2setter",
      "first_name": "Sam",
      "last_name": "Setter",
      "profile_image_url": null
    },
    "refunded_at": null,
    "refund_reason": null,
    "created_at": "2026-04-08T12:10:00.000Z",
    "updated_at": "2026-04-08T12:15:00.000Z",
    "custom_fields": []
  }
}

Example Payload

json
{
  "id": "evt_1712577600000_pay01paid02",
  "event_type": "PAYMENT_FAILED",
  "occurred_at": "2026-04-08T12:15:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "payment_id": "uuid-payment-123",
    "contract_id": "uuid-contract-123",
    "program": {
      "id": "uuid-program-123",
      "name": "12-Week Coaching"
    },
    "type": "INSTALMENT",
    "payment_provider": "STRIPE",
    "status": "FAILED",
    "amount": 1500.00,
    "contracted_amount": 5000.00,
    "amount_paid_on_contract": 1500.00,
    "mandate": {
      "id": "uuid-mandate-123",
      "status": "ACTIVE",
      "payment_provider": "STRIPE",
      "method": "card"
    },
    "vat_rate": 0.21,
    "vat_amount": 315.00,
    "gross_amount": 1815.00,
    "vat_exempt": false,
    "processor_fee_amount": 44.85,
    "processor_fee_currency": "USD",
    "currency": "USD",
    "due_date": "2026-04-08T00:00:00.000Z",
    "paid_at": null,
    "failure_reason": "insufficient_funds",
    "billing_cycle_number": 1,
    "external_payment_id": "pi_3ABC",
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671"
    },
    "billing_details": {
      "business_name": "Acme LLC",
      "address": "123 Main St",
      "zipcode": "94105",
      "province": "CA",
      "country": "US",
      "vat_number": null
    },
    "closer": {
      "id": "user_2closer",
      "first_name": "Hermon",
      "last_name": "Closer",
      "profile_image_url": "https://img.clerk.com/closer.png"
    },
    "triager": {
      "id": "user_2triager",
      "first_name": "Tina",
      "last_name": "Triager",
      "profile_image_url": null
    },
    "setter": {
      "id": "user_2setter",
      "first_name": "Sam",
      "last_name": "Setter",
      "profile_image_url": null
    },
    "refunded_at": null,
    "refund_reason": null,
    "created_at": "2026-04-08T12:10:00.000Z",
    "updated_at": "2026-04-08T12:15:00.000Z",
    "custom_fields": []
  }
}

Example Payload

json
{
  "id": "evt_1712577600000_pay01paid02",
  "event_type": "PAYMENT_REFUNDED",
  "occurred_at": "2026-04-08T12:15:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "payment_id": "uuid-payment-123",
    "contract_id": "uuid-contract-123",
    "program": {
      "id": "uuid-program-123",
      "name": "12-Week Coaching"
    },
    "type": "INSTALMENT",
    "payment_provider": "STRIPE",
    "status": "REFUNDED",
    "amount": 1500.00,
    "contracted_amount": 5000.00,
    "amount_paid_on_contract": 1500.00,
    "mandate": {
      "id": "uuid-mandate-123",
      "status": "ACTIVE",
      "payment_provider": "STRIPE",
      "method": "card"
    },
    "vat_rate": 0.21,
    "vat_amount": 315.00,
    "gross_amount": 1815.00,
    "vat_exempt": false,
    "processor_fee_amount": 44.85,
    "processor_fee_currency": "USD",
    "currency": "USD",
    "due_date": "2026-04-08T00:00:00.000Z",
    "paid_at": "2026-04-08T12:15:00.000Z",
    "failure_reason": null,
    "billing_cycle_number": 1,
    "external_payment_id": "pi_3ABC",
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671"
    },
    "billing_details": {
      "business_name": "Acme LLC",
      "address": "123 Main St",
      "zipcode": "94105",
      "province": "CA",
      "country": "US",
      "vat_number": null
    },
    "closer": {
      "id": "user_2closer",
      "first_name": "Hermon",
      "last_name": "Closer",
      "profile_image_url": "https://img.clerk.com/closer.png"
    },
    "triager": {
      "id": "user_2triager",
      "first_name": "Tina",
      "last_name": "Triager",
      "profile_image_url": null
    },
    "setter": {
      "id": "user_2setter",
      "first_name": "Sam",
      "last_name": "Setter",
      "profile_image_url": null
    },
    "refunded_at": "2026-04-08T12:20:00.000Z",
    "refund_reason": "requested_by_customer",
    "created_at": "2026-04-08T12:10:00.000Z",
    "updated_at": "2026-04-08T12:15:00.000Z",
    "custom_fields": []
  }
}
PAYMENT_DUE_TODAYPAYMENT_DUE_UPCOMINGScheduled reminders for an open payment — on its due date, and offset_days before it. Both share the same payload shape.
FieldTypeDescription
payment_idstringUUID of the payment
contract_idstringUUID of the associated contract
typestringPayment type (e.g. INSTALMENT, SUBSCRIPTION)
payment_providerstringPayment provider (e.g. STRIPE, MANUAL)
statusstringOpen payment status (DRAFT or PENDING)
amountnumberPayment amount in major currency units
currencystringISO 4217 currency code (e.g. USD)
due_datestringISO 8601 due date
billing_cycle_numbernumber | nullBilling cycle index for subscription payments
external_payment_idstring | nullProvider's own payment identifier
payment_linkstring | nullActive hosted payment link, when one exists
leadobjectLead summary (see below)
closerobject | nullAssigned closer — null when unassigned
triagerobject | nullAssigned triager — null when unassigned
setterobject | nullAssigned setter — null when unassigned
offset_daysnumberDays before due date the event fired (0 for due today)
fire_time_of_daystringConfigured time of day the reminder fired (e.g. 09:00)
created_atstringISO 8601 creation timestamp
updated_atstringISO 8601 last update timestamp
custom_fieldsobject[]Exposed custom fields (see below)
leadobject
FieldTypeDescription
idstringUUID of the lead
first_namestringLead's first name
last_namestring | nullLead's last name
full_namestringConcatenated first + last name
emailstringLead's email address
phone_e164string | nullPhone number in E.164 format
setter, closer, host & triagerobject | null

Each assigned-role object shares the same shape and is resolved from the matching Assigned role on the record (falling back to the linked lead, exactly as the setter is resolved). Any role that is unassigned is delivered as null.

FieldTypeDescription
idstringUser ID of the assigned team member
first_namestringUser's first name
last_namestringUser's last name
profile_image_urlstring | nullURL of the user's profile image
custom_fieldsobject[]
FieldTypeDescription
idstringUUID of the custom field definition
labelstringDisplay label of the field
typestringField type (e.g. TEXT, NUMBER, SELECT, DATE)
optionsstring[] | nullAllowed options for SELECT-type fields, otherwise null
display_ordernumberOrdering index of the field
visibilitystring[]Surfaces the field is exposed on
valuestring | number | boolean | nullThe record's value for this field

Example Payload

json
{
  "id": "evt_1712577600000_due01today02",
  "event_type": "PAYMENT_DUE_TODAY",
  "occurred_at": "2026-04-08T09:00:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "payment_id": "uuid-payment-456",
    "contract_id": "uuid-contract-123",
    "type": "INSTALMENT",
    "payment_provider": "STRIPE",
    "status": "PENDING",
    "amount": 1500.00,
    "currency": "USD",
    "due_date": "2026-04-08T00:00:00.000Z",
    "billing_cycle_number": 2,
    "external_payment_id": null,
    "payment_link": "https://pay.hermon.io/l/abc123",
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671"
    },
    "closer": {
      "id": "user_2closer",
      "first_name": "Hermon",
      "last_name": "Closer",
      "profile_image_url": "https://img.clerk.com/closer.png"
    },
    "triager": {
      "id": "user_2triager",
      "first_name": "Tina",
      "last_name": "Triager",
      "profile_image_url": null
    },
    "setter": {
      "id": "user_2setter",
      "first_name": "Sam",
      "last_name": "Setter",
      "profile_image_url": null
    },
    "offset_days": 0,
    "fire_time_of_day": "09:00",
    "created_at": "2026-04-01T12:00:00.000Z",
    "updated_at": "2026-04-08T09:00:00.000Z",
    "custom_fields": []
  }
}

Example Payload

json
{
  "id": "evt_1712577600000_due01today02",
  "event_type": "PAYMENT_DUE_UPCOMING",
  "occurred_at": "2026-04-08T09:00:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "payment_id": "uuid-payment-456",
    "contract_id": "uuid-contract-123",
    "type": "INSTALMENT",
    "payment_provider": "STRIPE",
    "status": "PENDING",
    "amount": 1500.00,
    "currency": "USD",
    "due_date": "2026-04-08T00:00:00.000Z",
    "billing_cycle_number": 2,
    "external_payment_id": null,
    "payment_link": "https://pay.hermon.io/l/abc123",
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671"
    },
    "closer": {
      "id": "user_2closer",
      "first_name": "Hermon",
      "last_name": "Closer",
      "profile_image_url": "https://img.clerk.com/closer.png"
    },
    "triager": {
      "id": "user_2triager",
      "first_name": "Tina",
      "last_name": "Triager",
      "profile_image_url": null
    },
    "setter": {
      "id": "user_2setter",
      "first_name": "Sam",
      "last_name": "Setter",
      "profile_image_url": null
    },
    "offset_days": 3,
    "fire_time_of_day": "09:00",
    "created_at": "2026-04-01T12:00:00.000Z",
    "updated_at": "2026-04-08T09:00:00.000Z",
    "custom_fields": []
  }
}

Appointment Events

CALL_OUTCOME_LOGGEDFired when a call outcome is recorded for an appointment.
FieldTypeDescription
appointment_idstringUUID of the appointment
appointment_typestring | nullEvent type name of the appointment
call_categorystringCall category (e.g. COACHING_CALL)
schedule_timestringISO 8601 scheduled time of the call
outcomeobjectLogged outcome ({ id, name, role })
no_showbooleanWhether the lead failed to attend
sourcestringBooking source (e.g. CALENDLY)
notesstring | nullLatest note on the appointment
hostobject | nullCall host / closer — null when unassigned
setterobject | nullAssigned setter — null when unassigned
triagerobject | nullAssigned triager — null when unassigned
leadobjectLead summary (see below)
custom_fieldsobject[]Exposed custom fields (see below)
outcomeobject
FieldTypeDescription
idstringUUID of the outcome
namestringOutcome display name
rolestringOutcome role (e.g. WON, NO_SHOW, FOLLOW_UP)
leadobject
FieldTypeDescription
idstringUUID of the lead
first_namestringLead's first name
last_namestring | nullLead's last name
full_namestringConcatenated first + last name
emailstringLead's email address
phone_e164string | nullPhone number in E.164 format
setter, closer, host & triagerobject | null

Each assigned-role object shares the same shape and is resolved from the matching Assigned role on the record (falling back to the linked lead, exactly as the setter is resolved). Any role that is unassigned is delivered as null.

FieldTypeDescription
idstringUser ID of the assigned team member
first_namestringUser's first name
last_namestringUser's last name
profile_image_urlstring | nullURL of the user's profile image
custom_fieldsobject[]
FieldTypeDescription
idstringUUID of the custom field definition
labelstringDisplay label of the field
typestringField type (e.g. TEXT, NUMBER, SELECT, DATE)
optionsstring[] | nullAllowed options for SELECT-type fields, otherwise null
display_ordernumberOrdering index of the field
visibilitystring[]Surfaces the field is exposed on
valuestring | number | boolean | nullThe record's value for this field

Example Payload

json
{
  "id": "evt_1712577600000_call01out02",
  "event_type": "CALL_OUTCOME_LOGGED",
  "occurred_at": "2026-04-08T13:00:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "appointment_id": "uuid-appt-123",
    "appointment_type": "Discovery Call",
    "call_category": "COACHING_CALL",
    "schedule_time": "2026-04-08T12:30:00.000Z",
    "outcome": {
      "id": "uuid-outcome-123",
      "name": "Closed Won",
      "role": "WON"
    },
    "no_show": false,
    "source": "CALENDLY",
    "notes": "Great fit, signed on the call",
    "host": {
      "id": "user_2closer",
      "first_name": "Hermon",
      "last_name": "Closer",
      "profile_image_url": "https://img.clerk.com/closer.png"
    },
    "setter": {
      "id": "user_2setter",
      "first_name": "Sam",
      "last_name": "Setter",
      "profile_image_url": null
    },
    "triager": {
      "id": "user_2triager",
      "first_name": "Tina",
      "last_name": "Triager",
      "profile_image_url": null
    },
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671"
    },
    "custom_fields": []
  }
}

Lead Events

LEAD_STATUS_CHANGEDFired when a lead's sales status changes.
FieldTypeDescription
leadobjectLead summary (see below)
statusobjectNew sales status ({ id, name, role })
setterobject | nullAssigned setter — null when unassigned
closerobject | nullAssigned closer — null when unassigned
triagerobject | nullAssigned triager — null when unassigned
custom_fieldsobject[]Exposed custom fields (see below)
leadobject
FieldTypeDescription
idstringUUID of the lead
first_namestringLead's first name
last_namestring | nullLead's last name
full_namestringConcatenated first + last name
emailstringLead's email address
phone_e164string | nullPhone number in E.164 format
sourcestringLead source enum (e.g. LANDING_PAGE)
statusobject
FieldTypeDescription
idstringUUID of the sales status
namestringStatus display name
rolestringStatus role (e.g. NEW_LEAD, APPOINTMENT_BOOKED, WON)
setter, closer, host & triagerobject | null

Each assigned-role object shares the same shape and is resolved from the matching Assigned role on the record (falling back to the linked lead, exactly as the setter is resolved). Any role that is unassigned is delivered as null.

FieldTypeDescription
idstringUser ID of the assigned team member
first_namestringUser's first name
last_namestringUser's last name
profile_image_urlstring | nullURL of the user's profile image
custom_fieldsobject[]
FieldTypeDescription
idstringUUID of the custom field definition
labelstringDisplay label of the field
typestringField type (e.g. TEXT, NUMBER, SELECT, DATE)
optionsstring[] | nullAllowed options for SELECT-type fields, otherwise null
display_ordernumberOrdering index of the field
visibilitystring[]Surfaces the field is exposed on
valuestring | number | boolean | nullThe record's value for this field

Example Payload

json
{
  "id": "evt_1712577600000_lead01stat02",
  "event_type": "LEAD_STATUS_CHANGED",
  "occurred_at": "2026-04-08T14:00:00.000Z",
  "organization_id": "org_2abc",
  "data": {
    "lead": {
      "id": "uuid-lead-123",
      "first_name": "John",
      "last_name": "Smith",
      "full_name": "John Smith",
      "email": "john@example.com",
      "phone_e164": "+14155552671",
      "source": "LANDING_PAGE"
    },
    "status": {
      "id": "uuid-status-123",
      "name": "Appointment Booked",
      "role": "APPOINTMENT_BOOKED"
    },
    "setter": {
      "id": "user_2setter",
      "first_name": "Sam",
      "last_name": "Setter",
      "profile_image_url": null
    },
    "closer": {
      "id": "user_2closer",
      "first_name": "Hermon",
      "last_name": "Closer",
      "profile_image_url": "https://img.clerk.com/closer.png"
    },
    "triager": {
      "id": "user_2triager",
      "first_name": "Tina",
      "last_name": "Triager",
      "profile_image_url": null
    },
    "custom_fields": []
  }
}