Help center

Help center

All collectionsSettings and accessOrganisation setupSend notifications to Teams, Slack or other systems

Send notifications to Teams, Slack or other systems

Add webhooks that deliver ComplyTrain notifications to a Microsoft Teams or Slack channel or to your own system, choose which events they receive, and test and monitor them.

Add webhooks that deliver ComplyTrain notifications to a Microsoft Teams or Slack channel or to your own system, choose which events they receive, and test and monitor them.

A webhook sends ComplyTrain notifications to another place: a Microsoft Teams channel, a Slack channel, or your own system, such as an ERP or a ticketing tool. Only an organisation Admin can set up webhooks. Your organisation can have up to 25.

Webhooks carry notifications, which are short messages about events. They do not copy documents or records. To start another system's process from a document workflow step, use a Trigger Webhook action on the workflow instead; see Design document workflows and automate their transitions.

Before you start

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

Get the address that will receive the messages:

  • Microsoft Teams: in the channel, create an incoming webhook and copy its address.

  • Slack: create an incoming webhook for the channel and copy its address. It starts with https://hooks.slack.com/services/.

  • Your own system: ask its owner for an endpoint that accepts JSON by HTTP POST, and for the credentials it expects.

The address must start with https:// and must be reachable from the internet. ComplyTrain refuses internal and private network addresses. Each address can be used by only one webhook.

Add a webhook

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

  1. Open Settings, then Notifications, then Webhooks. The page summarises how many webhooks you have and how many are enabled.

  2. Select Add Webhook.

  3. Fill in the fields described below.

  4. Select Test Connection to send a test message to the address. The result appears at the top of the page.

  5. Select Save. Webhook Created confirms it.

The new webhook appears as a card. From then on, every notification in your organisation that matches its Event Filters is also sent to its address, in the format of its Webhook Type. Each delivery appears on the Notification Dashboard and in the card's figures.

Webhook fields

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

Field

What to enter

Limits and default

Name

A name that says where messages go, such as "QA Channel Alerts".

Required. Up to 100 characters.

Description

What the webhook is for and who owns the receiving end.

Optional. Up to 500 characters.

Webhook Type

Slack, Microsoft Teams or Generic HTTP. Slack and Teams receive a message formatted for their channels. Generic HTTP receives structured JSON.

Required. Default Slack.

Webhook URL

The full address of the receiving endpoint.

Required. Up to 2,000 characters. Must start with https://, be publicly reachable, and not be used by another webhook.

Authentication

How ComplyTrain proves itself to the endpoint. See the next section.

Default No Authentication.

Event Filters

The notification type codes this webhook receives, separated by commas, for example CAPA_ESCALATED, AUDIT_SCHEDULED.

Optional. Each code up to 50 characters. Empty means all notification types.

Enabled

Whether the webhook sends messages. Clear it to pause the webhook without deleting it.

Default on.

The form shows type, URL, authentication and event filters. No endpoint is saved or contacted.

Choose authentication

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

Teams and Slack incoming webhooks need no authentication, because the address itself is the secret. For your own system, choose what the endpoint expects:

Authentication

Fields

What each request carries

No Authentication

None

No credentials

Bearer Token

Bearer Token

The header Authorization: Bearer <token>

Basic Auth

Username, Password

The header Authorization: Basic, with the username and password encoded

Custom Header

Header Name, Header Value

Your own header, for example X-API-Key: <value>

Tokens, passwords and header values are stored with the webhook and never shown again. When you edit a webhook, the credential fields are empty and show Leave blank to keep existing. Leave them empty to keep the saved credentials, or type new ones to replace them.

Choose events with filters

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

Each notification has a type code. Put codes in Event Filters to limit a webhook to those types. Leave the field empty to receive every type. Codes must match exactly, including upper and lower case. Separate several codes with commas; spaces around them are ignored.

These are the most useful codes:

Code

Sent when

CAPA_ASSIGNED

A CAPA is created and assigned to an owner

CAPA_STATUS_CHANGED

A CAPA moves to a new workflow step

CAPA_ESCALATED

A CAPA's severity is raised automatically because it passed its time thresholds

QMS_ACTION_ESCALATED

A QMS action item is escalated to a reviewer

AUDIT_SCHEDULED

A new audit is scheduled

audit_drift_detected

Continuous monitoring finds records breaching a control monitor between audits

PROCESS_REVIEW_DUE, PROCESS_REVIEW_OVERDUE

A process review is coming due, or is overdue

task_assigned, task_overdue

A QMS recurring task is assigned, or becomes overdue

DOCUMENT_APPROVAL

A document workflow asks someone to approve or review a document, or reports a state change

DOCUMENT_APPROVED, DOCUMENT_REJECTED

A document workflow reports that a document was approved or rejected

RISK_ASSIGNED

A risk is assigned to an owner

RISK_SCORE_CHANGED

A risk's inherent or residual score crosses into a different risk level

RISK_OVERDUE

A risk's review date passes without a completed review

ACTION_ASSIGNED

A mitigating action is assigned

TRAINING_ASSIGNMENT_DUE

Assigned training is approaching its due date

TRAINING_OVERDUE_ESCALATION

A manager is told that a team member's training is overdue

TRAINING_CERTIFICATION_EXPIRING

A training certification is approaching expiry

USER_INVITED

A new user is invited to the organisation

Notifications are addressed to people, so one event that notifies three people produces three notifications. A webhook receives each of them. Filter narrowly for busy channels.

To see which types your organisation produces most, open the Notification Log on the Notification Dashboard. See Set organisation notification defaults and templates.

What the receiving system gets

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

ComplyTrain sends each message as an HTTP POST with a JSON body, the header Content-Type: application/json and the user agent ComplyTrain-Webhook/1.0. It waits up to 30 seconds for a reply. Any 2xx status counts as delivered. Redirects are not followed, so give the final address.

Slack receives a message with the notification's title as a heading and its message below. For a priority other than normal, a line shows Priority and Type. When the notification links to a record, a button opens it; the button is red for urgent notifications.

Microsoft Teams receives a card with the title, a line such as "Priority: high | Type: CAPA_ESCALATED", and the message. The card's colour shows the priority: red for urgent, orange for high, blue for normal and teal for low. A View Details button, or the notification's own link label, opens the record in ComplyTrain.

Generic HTTP receives this structure:

{
  "event": "notification",
  "type": "CAPA_ESCALATED",
  "timestamp": "2026-09-18T07:42:10.512Z",
  "tenant": { "domain": "northwind" },
  "notification": {
    "id": "5b0f3c7e-2d1a-4c55-9a4e-8f2d6b1c0a93",
    "title": "CAPA escalated: CAPA-2026-014",
    "message": "CAPA-2026-014 has been escalated to High severity after exceeding its time threshold.",
    "priority": "high",
    "actionUrl": "https://…",
    "actionLabel": "View Details",
    "metadata": { "eventType": "CAPA_ESCALATED", "title": "…", "message": "…", "priority": "high" }
  }
}

type is the notification type code, and tenant.domain is your organisation's ComplyTrain subdomain. Use type to route the message, notification.id to recognise a message you have already processed, and actionUrl to link back to the record. priority is urgent, high, normal or low.

Test and monitor a webhook

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

Test Connection in the form, and Test on a webhook's card, send a sample message titled "ComplyTrain Webhook Test" with the priority normal and the type WEBHOOK_TEST. The result appears at the top of the page, with the time the endpoint took to answer. A failed test shows the reason, such as the HTTP status and the endpoint's reply.

While you edit a webhook, Test Connection uses only what is in the form. To test the saved credentials, use Test on the card.

Each card shows:

  • Active or Inactive, depending on Enabled.

  • A warning such as 3 failures when recent deliveries failed in a row.

  • The address, and the success rate, such as 98% (49/50), once messages have been sent.

  • The Event filters, if any.

  • The last error, until a delivery succeeds.

When no webhook accepts a message, ComplyTrain tries again, waiting longer each time, up to five attempts in all. After 10 failed deliveries in a row, the webhook is switched off, and its card shows Inactive. Fix the receiving end, select Test to check it (a successful test clears the failure count), then Edit the webhook, select Enabled and Save.

Webhook deliveries also appear on the Notification Dashboard, under Deliveries with the Webhook channel.

Edit or delete a webhook

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

Select Edit on the card, change the fields and select Save. Webhook Updated confirms it. Cancel leaves without saving.

To delete a webhook, select the bin icon on its card and confirm Delete Webhook. This cannot be undone. To stop messages for a while, clear Enabled instead.

Example: quality alerts in Teams

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

Your quality team wants escalations and audit news in its "QA Alerts" Teams channel, without task noise.

  1. In Teams, create an incoming webhook for "QA Alerts" and copy its address.

  2. In ComplyTrain, select Add Webhook and enter:

    • Name: QA Alerts channel

    • Webhook Type: Microsoft Teams

    • Webhook URL: the address from Teams

    • Authentication: No Authentication

    • Event Filters: CAPA_ESCALATED, QMS_ACTION_ESCALATED, AUDIT_SCHEDULED, audit_drift_detected, PROCESS_REVIEW_OVERDUE

  3. Select Test Connection and check that the test card appears in the channel.

  4. Select Save.

From now on, when a CAPA passes its time threshold and escalates, a card with the escalation's title and message appears in "QA Alerts", coloured by priority, with a View Details button. Newly scheduled audits and overdue process reviews arrive the same way. Anyone in the channel can read the cards; opening the record still requires signing in to ComplyTrain with the right permissions.

Check the card on Webhooks after the first real event: the success figure counts the deliveries. Because each escalation notifies several people, the channel can receive one card per person notified.

Example: feed a ticketing system

Product location: /settings/webhooks. Open Notifications, then Webhooks, in Settings.

Your IT team wants a service-desk ticket for every overdue item, created automatically.

  1. Ask IT for an HTTPS endpoint that accepts the generic JSON above, and for an API key.

  2. Select Add Webhook and enter:

    • Name: Service desk – overdue items

    • Webhook Type: Generic HTTP

    • Webhook URL: https://servicedesk.northwind.example/api/complytrain

    • Authentication: Custom Header, with Header Name X-API-Key and the key as Header Value

    • Event Filters: task_overdue, RISK_OVERDUE, PROCESS_REVIEW_OVERDUE, TRAINING_OVERDUE_ESCALATION

  3. Select Test Connection. Ask IT to confirm the endpoint received a request with the type WEBHOOK_TEST, and to ignore that type when creating tickets.

  4. Select Save.

From then on, each overdue recurring task, risk review, process review or training escalation reaches the endpoint as a generic JSON message. IT can map type to a ticket category, notification.title to the ticket summary, notification.priority to its priority and notification.actionUrl to a link. Because one overdue item can notify several people, ask IT to merge tickets with the same title that arrive close together. An ERP can receive the same messages in the same way, for example to log escalated CAPAs against the production orders they affect.

Did this answer your question?
😞
😐
😁