Event Types
Webhooks deliver JSON payloads to the endpoint with HTTP POST. Each webhook subscribes to one channel. This page lists the channels and the payload that each channel sends.
Channels
| Channel | Sent when | Payload |
|---|---|---|
outbound_texts | The delivery status of an outbound text changes | Delivery status payload |
outbound_emails | The delivery status of an outbound email changes | Delivery status payload |
inbound_texts | An agency phone receives a text | Inbound message payload |
inbound_emails | An agency email address receives an email | Inbound message payload |
The Console also lists outbound_calls, inbound_calls, outbound_chats, and inbound_chats. eCourtDate sends no payloads on these channels.
eCourtDate does not send webhooks for records such as clients, events, cases, payments, or checkins. To keep an external system current with those records, read them through the API.
Delivery Status Payload
The outbound_texts channel sends this payload each time a text gets a new delivery status:
{
"channel": "text",
"direction": "outbound",
"uuid": "3f1c2a9e-5b7d-4e8a-9c6f-1a2b3c4d5e6f",
"agency": "9a8b7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d",
"region": "us-east",
"from": "+15559876543",
"to": "+15551234567",
"last_status": "delivered",
"error_code": null,
"updated_at": "2026-11-02 14:30:05"
}
The outbound_emails channel sends the same payload without from, to, and error_code:
{
"uuid": "3f1c2a9e-5b7d-4e8a-9c6f-1a2b3c4d5e6f",
"agency": "9a8b7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d",
"region": "us-east",
"channel": "email",
"direction": "outbound",
"last_status": "delivered",
"updated_at": "2026-11-02 14:30:05"
}
| Field | Type | Description |
|---|---|---|
channel | string | text or email |
direction | string | Always outbound |
uuid | string | The message UUID. Use it with GET /v1/messages/{uuid}. |
agency | string | The agency UUID |
region | string | The agency region |
from | string | Texts only. The agency phone that sent the text. |
to | string | Texts only. The recipient phone number. |
last_status | string | The new delivery status of the message |
error_code | string | Texts only. The carrier error code when delivery failed, otherwise null. |
updated_at | string | When the status changed, in UTC |
One message can send more than one payload, for example sent and then delivered. The payloads for one message arrive in order.
Inbound Message Payload
The inbound_texts and inbound_emails channels send the inbound message record:
{
"uuid": "7d6e5f4a-3b2c-4d1e-8f9a-0b1c2d3e4f5a",
"channel": "text",
"direction": "inbound",
"created_at": "2026-11-02 14:31:10",
"from": "+15551234567",
"to": "+15559876543",
"content": "Can I reschedule my hearing?",
"last_status": "received"
}
| Field | Type | Description |
|---|---|---|
uuid | string | The message UUID. Use it with GET /v1/messages/{uuid}. |
channel | string | text or email |
direction | string | Always inbound |
created_at | string | When eCourtDate received the message |
from | string | The sender phone number or email address |
to | string | The agency phone or agency email address that received the message |
content | string | The message body |
last_status | string | The status of the inbound message |
The record also includes other stored message fields, such as the linked client. Ignore fields that the integration does not use.
Standalone APIs
The standalone Chatbots API has its own webhooks, ingest.completed and crawl.completed, which report knowledge-base indexing jobs. They are signed with an X-ECD-Signature header and are configured separately from the platform webhooks on this page.
Next Steps
- Verification: verify the authenticity of incoming payloads
- Retry Behavior: understand how failed deliveries are retried