School Owners4 min readLast updated

How do I send ticket events to Slack, Zapier, Make or Pabbly Connect?

Configure outbound webhooks under your school's Ticket Webhooks tab to fan out ticket events — created, replied, status changed, resolved — to Slack, Zapier, Make, Pabbly Connect, or any HTTPS endpoint that accepts a signed JSON POST.

Quick answer

Open Dashboard → Support → Ticket Webhooks → Add webhook. Pick your destination type (Generic / Zapier / Make / Pabbly Connect), paste the receiver URL, tick the events you care about, and copy the secret on the confirmation screen. You only see the secret once.

Every ticket event on your school's queue can fan out to your team's chat, automation tool, or in-house helpdesk. Dispatch happens after the user-facing action is saved and sends the configured event payload as JSON. Delivery timing is not guaranteed.

What gets sent

Four event types, each a separate POST:

  • ticket.created — a new ticket lands in your queue.
  • ticket.replied — somebody (customer, agent, or internal-noter) added a reply.
  • ticket.status_changed — the ticket moved status (e.g. open → waiting_on_customer).
  • ticket.resolved — the ticket was just resolved. Fires in addition to ticket.status_changed so receivers can subscribe to the more specific event.

The body is JSON with the event name, the ticket ref, the subject, the category and priority, plus event-specific fields (the reply content, the previous and new status, the actor's name, etc.).

Verifying the signature

Every POST carries an X-Ticket-Signature header of the form sha256=<hex>. The hex is HMAC-SHA256(secret, body) keyed by your webhook's signing secret — the one you copied on the create screen. Recompute it on your side and reject the request if they differ. The X-Ticket-Event header also carries the event name so you can route without parsing the body.

Setting up each destination

Slack (or any "incoming webhook" URL)

  1. In Slack, Apps → Incoming Webhooks → Add to Slack and pick the channel.
  2. Copy the webhook URL.
  3. In the Ticket Webhooks panel, Add webhook, leave the destination as Generic / Slack / custom, paste the URL, tick the events.

The generic sender posts ticket JSON, not Slack's required message format. Use middleware or an automation service to transform the payload into a Slack message, and test delivery. A destination label alone does not make arbitrary JSON compatible with Slack.

Zapier

  1. In Zapier, Create Zap → trigger app Webhooks by Zapier → event Catch Hook → copy the URL Zapier gives you.
  2. In the Ticket Webhooks panel, Add webhook, set the destination to Zapier (Catch Hook), paste the URL, tick the events.
  3. Back in Zapier, click Test trigger and use the Test button on your webhook row to fire a test event so Zapier captures the schema.
  4. Build the rest of your Zap on the captured fields.

Make (formerly Integromat)

  1. In Make, create a scenario and add a Webhooks → Custom webhook trigger. Copy the address.
  2. In the Ticket Webhooks panel, Add webhook, set the destination to Make (Custom webhook), paste the URL, tick the events.
  3. In Make, click Re-determine data structure and use the Test button on your webhook row to deliver a sample so Make can map the fields.

Pabbly Connect

  1. In Pabbly Connect, create a workflow and pick the Webhook by Pabbly trigger. Copy the URL.
  2. In the Ticket Webhooks panel, Add webhook, set the destination to Pabbly Connect, paste the URL, tick the events.
  3. Use the Test button on your webhook row so Pabbly captures the schema.

Failure handling and retries

Each fire has a 5-second timeout. If your receiver returns a non-2xx or doesn't respond in time, the panel shows the last error message and the timestamp. We don't retry automatically — failed deliveries are visible on the row so you can investigate, but a temporarily-down receiver won't pile up duplicate events.

Use the Test button at any time to send a synthetic ticket.created event with test: true in the body, so you can confirm the receiver is wired up correctly without waiting for a real ticket.

Disabling, editing, deleting

The panel lists every webhook with its status. Disable keeps the row but stops dispatching; Edit lets you change the URL or the event subscription without rotating the secret; Delete is permanent.

If you need to rotate a secret, delete and recreate the webhook — the new row gets a fresh secret which you copy into your receiver.

Was this article helpful?Your feedback helps us improve the Help Centre.

Still need help with this article?

Tell us what is missing.

Send the article URL and the step that needs more explanation.

Contact support