Skip to content

API and webhooks

Webhooks

A webhook tells one of your other systems the moment something happens in InTouch. When the event occurs, InTouch sends an HTTP POST, holding details of the event as JSON, to the URL you configure. You could use one to update an external case management system or start a Zapier automation.

There are three webhooks, each found under Settings > API, which needs the Can edit API keys permission:

  1. Navigate to Settings > API
  2. Under Webhooks, select the webhook you want
  3. Select Add Webhook
  4. Enter the Webhook URL that should receive the event
  5. Optional: add up to five Custom Headers, such as a key your service checks, and a Username and Password for basic authentication
  6. Tick the events the webhook should be sent for. These differ for each webhook and are described below
  7. Optional: select Send Test to send a test request to the URL
  8. Select Save

You can add up to 100 of each webhook, for example to send different matter templates to different services. Every request carries the header Content-Type: application/json; charset=utf-8 and a User-Agent starting InTouch/, along with any custom headers you added.

Sent when a matter is created, or when its state changes. A matter created by a form submission that is held for review counts as created once the submission is accepted. Matters that InTouch archives automatically do not send it. Tick the matter templates it should be sent for; matters created from other templates do not trigger it.

previousState is null when the matter has just been created. Matter states are sent by name: Lead, Open, On Hold, Completed, Closed, Completed & Archived, Aborted and Deleted.

{
"eventName": "Matter State Change Webhook",
"matterGuid": "0b9e3c7a-5f1d-4a2e-9c8b-3d6f1e2a7b45",
"matterItrCode": "[ITR:491D-1ED]",
"previousState": "Lead",
"newState": "Open",
"matterTemplateGuid": "7c2f8a1e-4b3d-4e6f-8a9b-1c2d3e4f5a6b",
"matterTemplateName": "Residential Sale",
"triggeredByName": "Sarah Connor",
"triggeredByEmail": "sarah.connor@example.com",
"timestamp": "2026-10-18T09:15:42Z"
}

matterItrCode is the matter’s ITR code. In both payloads, triggeredByName and triggeredByEmail are the person who made the change. When the change was made through the API, the name is API Key followed by the key’s name, and the email is null.

Sent when a task on a matter changes state. Choose which changes it is sent for:

  • Task Completed
  • Task marked as outstanding
  • Task marked as not applicable

Then tick the tasks it applies to, grouped by matter template. Only tasks that come from a matter template can trigger it; a task added to a single matter cannot. Task states are sent by name: Outstanding, Completed and Not Applicable.

{
"eventName": "Task State Change Webhook",
"taskGuid": "6db90198-bd3c-4656-b9e9-6070652aab52",
"taskName": "Send client care letter",
"previousState": "Outstanding",
"newState": "Completed",
"matterGuid": "0b9e3c7a-5f1d-4a2e-9c8b-3d6f1e2a7b45",
"matterItrCode": "[ITR:491D-1ED]",
"taskTemplateGuid": "11be3e87-9e83-40e9-8389-882919cfc1b0",
"triggeredByName": "Sarah Connor",
"triggeredByEmail": "sarah.connor@example.com",
"timestamp": "2026-10-18T09:15:42Z",
"taskTemplateName": "Send client care letter"
}

Return any status code from 200 to 299 to show the webhook was received. Field names are in camel case, as in the examples. We add new fields to payloads over time, so ignore any you do not recognise.

If your service returns any other status code, InTouch tries again after 10 minutes, then 1 hour, then 3 hours, then 24 hours. If the fifth attempt also fails, InTouch emails your organisation’s Automation Expert address, if one is set.

These retries depend on your service responding. If InTouch cannot connect to the URL at all, for example because the address does not resolve or the request times out, the event is not retried and no email is sent.

Dates and times are always sent in UTC, in the ISO 8601 format yyyy-MM-ddTHH:mm:ssZ, for example 2026-10-18T09:15:42Z.