Docs/Webhooks
Reference

Webhooks

Receive real-time HTTP POST notifications when ticket and verification events occur in your workspace. Available on Pro plans and above.

Setup

  1. 1In your workspace dashboard, go to Settings → Webhooks.
  2. 2Click Add endpoint and enter your HTTPS URL.
  3. 3Select which events you want to receive.
  4. 4Copy the signing secret — you'll use it to verify payloads.
  5. 5Save. Test the endpoint using the Send test event button.

Payload signature

Every webhook request includes an X-Tixora-Signature header — an HMAC-SHA256 hex digest of the raw request body signed with your endpoint secret. Always verify this before processing the payload.

const sig = req.headers["x-tixora-signature"]; const expected = crypto .createHmac("sha256", WEBHOOK_SECRET) .update(rawBody) .digest("hex"); if (!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) { return res.status(401).send("Invalid signature"); }

Event types

EventDescription
ticket.createdA new ticket was opened by a user.
ticket.claimedAn agent claimed the ticket.
ticket.messageA message was sent inside a ticket (by user or agent).
ticket.taggedA tag was added to or removed from a ticket.
ticket.closedThe ticket was closed (from Discord or dashboard).
ticket.reopenedA closed ticket was re-opened.
ticket.sla_breachedThe ticket breached a configured SLA target.
verification.requestedA user requested Customer ticket access.
verification.approvedA verification request was approved.
verification.deniedA verification request was denied.

Example payload

{ "event": "ticket.created", "timestamp": "2025-05-15T10:32:00.000Z", "guildId": "gld_01j...", "data": { "ticketId": "tkt_01j...", "categoryId": "cat_01j...", "categoryName": "Bug Report", "userId": "158181390980814656632", "username": "hyper", "status": "open", "createdAt": "2025-05-15T10:32:00.000Z" } }

Retries

If your endpoint returns a non-2xx status or times out (10s), we retry with exponential back-off — at 30s, 5m, 30m, and 2h. After 4 failed attempts the delivery is marked failed and no further retries are made. You can inspect and replay failed deliveries from Settings → Webhooks → Delivery log.