All integrations

Deskwoot events sent to your own URL the moment they happen

Webhooks send events from Deskwoot to a URL you choose the moment they happen: a new conversation, a new message, an assignment, a resolved conversation, a contact change or a CSAT rating. Each one arrives as JSON in a signed POST request, so your own systems react to events instead of asking the API for changes again and again.


Overview

Your support data often has to reach another system: a CRM that should hear about every new contact, a database that counts resolved conversations, your own automation that runs when a customer rates a chat. Webhooks do that without code that keeps checking Deskwoot for changes. Deskwoot calls your URL as soon as something happens.

You pick the events for each webhook: conversation created, updated, assigned and resolved, message created, contact created and updated, and CSAT submitted. On the Enterprise plan with tickets switched on, ticket created, updated, assigned and resolved are there too. A webhook with no event ticked gets every event except the ticket events, which go only to webhooks that pick them. For several URLs, create one webhook for each, with its own events.

Each event is a POST request with a JSON body that holds event (the name of the event), data (the data of the event, described in the API docs), timestamp and accountId. The header X-Deskwoot-Event names the event, and X-Deskwoot-Signature carries sha256= and the HMAC SHA256 of the raw body, signed with the webhook's secret.

Deskwoot sends each event right away, without a queue. Your endpoint has 10 seconds to answer with a 2xx status. If the request fails, gets an error or takes longer, Deskwoot tries once more after 5 seconds, and after that the event is dropped. Rarely an event arrives twice. The body has no event ID, but a repeat is an exact copy with the same timestamp, so use the event name, the ID of the object in data and the timestamp together to skip what you already processed. Deskwoot only sends to public HTTPS addresses.

A webhook only sends data out of Deskwoot. To answer customers from your own server, use a Custom Webhook bot under Settings → Bots (Startup plan and higher). To assign, label or resolve conversations or update contacts from your own code, use the REST API, which needs a paid Enterprise plan. Webhooks need the Startup plan or higher, and the 7 day trial includes them. On the Free plan, webhooks you made earlier stay listed but send nothing until your plan includes webhooks again.

What you get with the Webhooks integration

  • Events as they happen

    New conversations, messages, assignments, resolved conversations, contact changes and CSAT ratings reach your URL right away, without polling.

  • Signed JSON

    Every request is a POST with a JSON body, the event name in X-Deskwoot-Event and an HMAC SHA256 signature in X-Deskwoot-Signature.

  • Only the events you need

    Pick the events for each webhook, and send different events to different URLs with one webhook each.

  • Pause without deleting

    A switch turns a webhook off and on again, and Edit changes its URL or its events.

Getting started

Connect Webhooks in 3 steps.

  1. In Deskwoot, open Settings → Webhooks and click Add Webhook. Only administrators see this page.
  2. Enter a public HTTPS address under Endpoint URL and tick the events you want under Subscribe to Events.
  3. Click Create Webhook. From then on Deskwoot sends a POST request to your URL each time one of those events happens.

Read the setup guide

Webhooks integration FAQ

The short answers are here. For anything else, ask Fynn below.

How do helpdesk webhooks work in Deskwoot?

You give Deskwoot a URL and pick events. Each time one of them happens, Deskwoot sends a POST request with the event as JSON to that URL, signed with the webhook's secret. Your system reacts right away instead of asking the API for changes.

Which plan do I need for webhooks?

Startup or higher, and the 7 day trial includes them. On the Free plan, webhooks you made earlier stay listed and can be deleted, but they send nothing until your plan includes webhooks again.

Which events can I subscribe to?

Conversation created, updated, assigned and resolved, message created, contact created and updated, and CSAT submitted. On the Enterprise plan with tickets switched on, also ticket created, updated, assigned and resolved. With no event ticked, a webhook gets every event except the ticket events.

Is each delivery signed?

Yes. The X-Deskwoot-Signature header carries sha256= and the HMAC SHA256 of the raw body, signed with the webhook's secret, and X-Deskwoot-Event names the event. The dashboard does not show the secret. A webhook created through the REST API returns it once in its response.

What happens when my endpoint is down?

Deskwoot tries once more after 5 seconds. If that fails too, the event is dropped, because Deskwoot keeps nothing beyond the single retry. On a paid Enterprise plan you can catch up through the REST API, for example by listing the conversations with the newest activity.

Can a webhook change something in Deskwoot?

No, a webhook only sends events out. To answer customers from your own server, use a Custom Webhook bot under Settings → Bots (Startup and higher). To assign, label or resolve conversations or update contacts from your own code, call the REST API on a paid Enterprise plan.

Try it free for 7 days

Deskwoot interactive demo