Docs
Integrations

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

  1. Go to Settings → Webhooks.
  2. Click Add endpoint (top-right, or in the empty-state card).
  3. Enter your endpoint URL (must be HTTPS).
  4. Select the events to receive.
  5. (Optional) Add a description (e.g. "Plecto dashboard") to tell multiple endpoints apart.
  6. 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

EventTriggered when
ticket.createdA new ticket is created
ticket.status_changedA ticket's status changes
ticket.assignedA ticket is assigned to an agent
message.receivedA 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.

On this page