Event Types
Hermon emits real-time events for contact lifecycle events, contract signing, and payments. Below are the schemas and examples for each event type.
Contact Events
contact.createdFired when a new contact (lead) is created in Hermon.
| Field | Type | Description |
|---|---|---|
| contact_id | string | UUID of the contact |
| first_name | string | First name of the contact |
| last_name | string | null | Last name of the contact |
| string | Email address of the contact | |
| phone_e164 | string | null | Phone number in E.164 format |
| source | string | Source of the contact (e.g. LANDING_PAGE, CALENDLY) |
| created_at | string | ISO 8601 creation timestamp |
| updated_at | string | ISO 8601 last update timestamp |
Example Payload
json
{
"event_type": "contact.created",
"event_id": "evt_01j9abc101",
"org_id": "org_2abc",
"created_at": "2026-04-08T12:00:00.000Z",
"data": {
"contact_id": "e464122e-a60d-4209-851e-b169211523bc",
"first_name": "John",
"last_name": "Smith",
"email": "john@example.com",
"phone_e164": "+14155552671",
"source": "LANDING_PAGE",
"created_at": "2026-04-08T12:00:00.000Z",
"updated_at": "2026-04-08T12:00:00.000Z"
}
}contact.updatedFired when an existing contact details or attributes are updated.
| Field | Type | Description |
|---|---|---|
| contact_id | string | UUID of the contact |
| first_name | string | First name of the contact |
| last_name | string | null | Last name of the contact |
| string | Email address of the contact | |
| phone_e164 | string | null | Phone number in E.164 format |
| source | string | Source of the contact (e.g. LANDING_PAGE, CALENDLY) |
| created_at | string | ISO 8601 creation timestamp |
| updated_at | string | ISO 8601 last update timestamp |
Example Payload
json
{
"event_type": "contact.updated",
"event_id": "evt_01j9abc102",
"org_id": "org_2abc",
"created_at": "2026-04-08T12:05:00.000Z",
"data": {
"contact_id": "e464122e-a60d-4209-851e-b169211523bc",
"first_name": "John",
"last_name": "Smith",
"email": "john.updated@example.com",
"phone_e164": "+14155552671",
"source": "LANDING_PAGE",
"created_at": "2026-04-08T12:00:00.000Z",
"updated_at": "2026-04-08T12:05:00.000Z"
}
}Contract Events
contract.signedFired when a client signs a contract.
Top-level Fields
| Field | Type | Description |
|---|---|---|
| contract_id | string | UUID of the contract |
| contract_type | string | Contract type (e.g. STANDARD) |
| total_value | number | null | Total contract value in major currency units |
| currency | string | ISO 4217 currency code (e.g. USD) |
| status | string | Current contract status (e.g. SIGNED) |
| signed_at | string | ISO 8601 timestamp of signing |
| sent_at | string | null | ISO 8601 timestamp of when the contract was sent |
| created_at | string | ISO 8601 timestamp of contract creation |
leadobject
| Field | Type | Description |
|---|---|---|
| id | string | UUID of the lead |
| first_name | string | Lead's first name |
| last_name | string | Lead's last name |
| full_name | string | Concatenated first + last name |
| string | Lead's email address | |
| phone_e164 | string | null | Phone number in E.164 format |
| source | string | Lead source enum (e.g. LANDING_PAGE) |
programobject
| Field | Type | Description |
|---|---|---|
| id | string | UUID of the program |
| name | string | Program display name |
| price | number | Program price in major currency units |
| payment_type | string | PIF, INSTALMENT, SUBSCRIPTION, etc. |
| billing_interval | string | null | Billing cycle — null for one-time payments |
subscriptionobject | null
| Field | Type | Description |
|---|---|---|
| id | string | UUID of the subscription |
| billing_interval | string | Billing cycle (e.g. MONTHLY, WEEKLY) |
| amount_per_cycle | number | Amount charged per cycle in major currency units |
| currency | string | ISO 4217 currency code |
| status | string | Subscription status (e.g. ACTIVE, CANCELLED) |
| payment_provider | string | Payment provider (e.g. STRIPE) |
| billing_cycles_paid | number | Number of billing cycles successfully charged |
| total_collected | number | Total amount collected so far in major currency units |
| current_period_start | string | null | ISO 8601 start of current billing period |
| current_period_end | string | null | ISO 8601 end of current billing period |
| next_billing_date | string | null | ISO 8601 date of the next scheduled charge |
| started_at | string | null | ISO 8601 timestamp of when the subscription started |
Example Payload
json
{
"event_type": "contract.signed",
"event_id": "evt_01j9abc123",
"org_id": "org_2abc",
"created_at": "2026-04-08T12:00:00.000Z",
"data": {
"contract_id": "uuid",
"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",
"first_name": "John",
"last_name": "Smith",
"full_name": "John Smith",
"email": "john@example.com",
"phone_e164": "+14155552671",
"source": "LANDING_PAGE"
},
"program": {
"id": "uuid",
"name": "12-Week Coaching",
"price": 5000.00,
"payment_type": "PIF",
"billing_interval": null
},
"subscription": {
"id": "uuid",
"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"
}
}
}Payment Events
payment.paidFired when a payment is marked as paid.
| Field | Type | Description |
|---|---|---|
| payment_id | string | UUID of the payment |
| contract_id | string | UUID of the associated contract |
| contact_id | string | UUID of the associated contact |
| amount | number | Payment amount in major currency units |
| currency | string | ISO 4217 currency code (e.g. USD) |
| status | string | Status of payment (PAID, FAILED, REFUNDED) |
| payment_method | string | null | Payment method/provider (e.g. STRIPE, MANUAL) |
| failure_reason | string | null | Reason for payment failure (if status is FAILED) |
| refunded_amount | number | null | Total amount refunded (if status is REFUNDED) |
| paid_at | string | null | ISO 8601 timestamp of payment completion |
| failed_at | string | null | ISO 8601 timestamp of payment failure |
| refunded_at | string | null | ISO 8601 timestamp of refund transaction |
| created_at | string | ISO 8601 creation timestamp |
| updated_at | string | ISO 8601 last update timestamp |
Example Payload
json
{
"event_type": "payment.paid",
"event_id": "evt_01j9abc301",
"org_id": "org_2abc",
"created_at": "2026-04-08T12:15:00.000Z",
"data": {
"payment_id": "uuid-payment-123",
"contract_id": "uuid-contract-123",
"contact_id": "e464122e-a60d-4209-851e-b169211523bc",
"amount": 1500.00,
"currency": "USD",
"status": "PAID",
"payment_method": "STRIPE",
"paid_at": "2026-04-08T12:15:00.000Z",
"created_at": "2026-04-08T12:10:00.000Z",
"updated_at": "2026-04-08T12:15:00.000Z"
}
}payment.failedFired when a scheduled payment transaction fails.
| Field | Type | Description |
|---|---|---|
| payment_id | string | UUID of the payment |
| contract_id | string | UUID of the associated contract |
| contact_id | string | UUID of the associated contact |
| amount | number | Payment amount in major currency units |
| currency | string | ISO 4217 currency code (e.g. USD) |
| status | string | Status of payment (PAID, FAILED, REFUNDED) |
| payment_method | string | null | Payment method/provider (e.g. STRIPE, MANUAL) |
| failure_reason | string | null | Reason for payment failure (if status is FAILED) |
| refunded_amount | number | null | Total amount refunded (if status is REFUNDED) |
| paid_at | string | null | ISO 8601 timestamp of payment completion |
| failed_at | string | null | ISO 8601 timestamp of payment failure |
| refunded_at | string | null | ISO 8601 timestamp of refund transaction |
| created_at | string | ISO 8601 creation timestamp |
| updated_at | string | ISO 8601 last update timestamp |
Example Payload
json
{
"event_type": "payment.failed",
"event_id": "evt_01j9abc302",
"org_id": "org_2abc",
"created_at": "2026-04-08T12:15:00.000Z",
"data": {
"payment_id": "uuid-payment-123",
"contract_id": "uuid-contract-123",
"contact_id": "e464122e-a60d-4209-851e-b169211523bc",
"amount": 1500.00,
"currency": "USD",
"status": "FAILED",
"failure_reason": "insufficient_funds",
"failed_at": "2026-04-08T12:15:00.000Z",
"created_at": "2026-04-08T12:10:00.000Z",
"updated_at": "2026-04-08T12:15:00.000Z"
}
}payment.refundedFired when a payment is refunded to the client.
| Field | Type | Description |
|---|---|---|
| payment_id | string | UUID of the payment |
| contract_id | string | UUID of the associated contract |
| contact_id | string | UUID of the associated contact |
| amount | number | Payment amount in major currency units |
| currency | string | ISO 4217 currency code (e.g. USD) |
| status | string | Status of payment (PAID, FAILED, REFUNDED) |
| payment_method | string | null | Payment method/provider (e.g. STRIPE, MANUAL) |
| failure_reason | string | null | Reason for payment failure (if status is FAILED) |
| refunded_amount | number | null | Total amount refunded (if status is REFUNDED) |
| paid_at | string | null | ISO 8601 timestamp of payment completion |
| failed_at | string | null | ISO 8601 timestamp of payment failure |
| refunded_at | string | null | ISO 8601 timestamp of refund transaction |
| created_at | string | ISO 8601 creation timestamp |
| updated_at | string | ISO 8601 last update timestamp |
Example Payload
json
{
"event_type": "payment.refunded",
"event_id": "evt_01j9abc303",
"org_id": "org_2abc",
"created_at": "2026-04-08T12:20:00.000Z",
"data": {
"payment_id": "uuid-payment-123",
"contract_id": "uuid-contract-123",
"contact_id": "e464122e-a60d-4209-851e-b169211523bc",
"amount": 1500.00,
"currency": "USD",
"status": "REFUNDED",
"refunded_amount": 1500.00,
"refunded_at": "2026-04-08T12:20:00.000Z",
"created_at": "2026-04-08T12:10:00.000Z",
"updated_at": "2026-04-08T12:20:00.000Z"
}
}