Webhooks
Receive real-time events from Ticket0 in your own systems.
Webhooks allow you to receive real-time notifications when things happen in Ticket0 — when a ticket is created, its status changes, it's assigned, or a new message arrives.
Creating a webhook
- Go to Settings → Webhooks.
- Click Add endpoint (top-right, or in the empty-state card).
- Enter your endpoint URL (must be HTTPS).
- Select the events to receive.
- (Optional) Add a description (e.g. "Plecto dashboard") to tell multiple endpoints apart.
- Click Create endpoint.
Copy your signing secret now. After creation, Ticket0 shows the HMAC signing secret exactly once in a confirmation dialog. Copy it and store it in your receiving system (e.g. Plecto) right away — it can't be retrieved later. If you lose it, delete the endpoint and create a new one.
Available events
| Event | Triggered when |
|---|---|
ticket.created | A new ticket is created |
ticket.status_changed | A ticket's status changes |
ticket.assigned | A ticket is assigned to an agent |
message.received | A new inbound message arrives on a ticket |
Editing and deleting endpoints
- Edit (pencil icon on a row): enable/disable the endpoint, change which events it receives, and edit the description. The URL is immutable — to send events to a different destination, delete the endpoint and create a new one (which provisions a fresh signing secret).
- Delete (trash icon): stops all delivery to that URL. In-flight or queued deliveries are not retried. You'll be asked to confirm.
Payload format
All events share a common envelope:
{
"id": "evt_01abc...",
"type": "ticket.created",
"createdAt": "2025-01-15T10:30:00Z",
"workspaceId": "ws_your_workspace_id",
"data": {
// event-specific payload
}
}Verifying signatures
Each request includes a Ticket0-Signature header. Verify it to ensure the request came from Ticket0:
import { createHmac } from "crypto"
function verifySignature(payload: string, signature: string, secret: string) {
const expected = createHmac("sha256", secret).update(payload).digest("hex")
return `sha256=${expected}` === signature
}Your webhook secret is shown once when you create the webhook. Store it securely.
Retries
If your endpoint returns a non-2xx response, Ticket0 retries the delivery with exponential backoff: after 1 minute, 5 minutes, 30 minutes, 2 hours, and 6 hours. After 5 failed attempts the delivery is abandoned and marked failed in the webhook log.
Viewing delivery logs
Go to Settings → Webhooks and select an endpoint to see delivery health and recent attempts. Failed deliveries can be retried individually.