Webhook Integration

Webhook integration is an advanced feature. Contact your administrator about purchasing a license upgrade for Security for Jira.

Audit log events can be sent to a Slack webhook. Webhook integration can be added and edited on the settings page.

Message delivery is best-effort. We cannot guarantee that every audit log message is delivered.

Integrating with Slack

Screenshot 2026-02-05 at 1.45.05 PM.png

Clicking the “Install using OAuth” button installs our Slack app using OAuth. A pop-up will open, where you can select the workspace and channel that messages will be sent to.

The Slack app only requests permission to post messages using the webhook; it cannot read messages in your Slack workspace.

Screenshot 2026-01-29 at 11.41.28 AM.png

After installation completes, the new webhook will appear in the table below.

Screenshot 2026-05-29 at 3.11.59 PM.png

The first column contains the display name of the webhook, which defaults to the channel and workspace name. The details column shows the number of event types which the webhook will receive message for, and hovering over it will show a tooltip containing the events.

Custom Webhooks

Custom webhooks allow integration with SIEM solutions such as Splunk, Microsoft Sentinel, and IBM QRadar.

image-20260529-221400.png

To install a custom webhook, enter the display name and URL for the webhook and click “Save”. The URL must be HTTPS, and cannot use IP addresses as the host, or the userinfo subcomponent (e.g. user:pass@example.com).

The URL must satisfy the following requirements:

  • Must use HTTPS

    • Good: https://www.example.com/webhook

    • Bad: http://www.example.com/webhook

  • The host cannot be an IP address

    • Bad: https://10.0.0.1/webhook

    • Bad: https://[2001:db8::7]/webhook

  • The userinfo subcomponent may not be used; instead use authorization headers.

    • Bad: https://user:password@www.example.com/webhook

Configuring Webhooks

Screenshot 2026-05-29 at 3.19.17 PM.png

Once your webhook is created, you can click the “Edit” button to configure it. Clicking the “Delete” button permanently removes the webhook. After making changes, they must be saved by clicking the “Save” button. Clicking the “Discard Changes” button closes the editing UI without saving changes.

Event configuration

image-20260529-221719.png

Use the checkboxes to select which events to receive messages for.

Message signing

This setting only applies to custom webhooks.

For custom webhooks, you can configure up to 10 shared secrets which will be used to sign each message using the HMAC-SHA256 digest encoded in Base64. For example, using node.js the signatures for a message can be verified as follows:

import * as crypto from 'crypto';
function isSoteriSignatureValid(secrets: string[], signatures: string[], rawBody: string) {
  if (secrets.length !== signatures.length) {
    return false;
  }
  const expectedHashes = secrets.map(secret => {
    const hash = crypto.createHmac('sha256', secret);
    hash.update(Buffer.from(rawBody, 'utf8'));
    return hash.digest('base64');
  });
  return signatures.every(signature => expectedHashes.contains(signature));
}

One signature will be generated for each shared secret. All signatures will be comma-delimited under the X-Soteri-Signature header. This might look like X-Soteri-Signature:lb+PrQunzcHAzWPY0/vYhUi0040DGrpOLiwH4M8XQYM=,yulBb+TEnAYw3TLXH68ASNla9r1XIKtAmQUZkzBiC24=.

image-20260529-225706.png

The “Random” button creates a random 32-byte key encoded in Base64, and the “Add” button adds the current value of the text field as a shared secret. The “Remove” button removes the corresponding secret.

Saved secrets are hidden; the first 3 characters are shown to allow them to be identified.

Authorization Header

This setting only applies to custom webhooks.

Screenshot 2026-05-29 at 3.59.03 PM.png

If your SIEM requires an authorization header to be set, it can be configured by clicking the “Set Authorization Header” button. This will open a modal dialog where you can set or clear the header.

Screenshot 2026-06-03 at 11.36.47 AM.png

Authorization headers must be entered in the format <auth-scheme> <credentials>; the above screenshot shows an example of a JWT bearer token.

Additional Headers

This setting only applies to custom webhooks.

If any other headers are needed, they can be configured below:

image-20260529-225957.png

For example, some services or proxies may require the Content-Type header to be set; in this case, application/json is the right choice. Another possibility is to use a custom header to identify the webhook that an event is associated with.