For the complete documentation index, see llms.txt. This page is also available as Markdown.

Custom Webhooks

Overview

Use a custom webhook when your integration destination is not specifically a SIEM, SOAR, or messaging/ticket tool (for example, a BI tool, a custom app built internally, etc).

Custom webhooks:

  • Trigger outbound delivery based on a specific event like a change in severity, specific detection, user action in a message, and more.

  • Send events to your app as a JSON payload (see example payload below)

If your destination has a URI endpoint and accepts JSON payloads over HTTPS, you can integrate with it via a custom webhook.

Integrations Page

How to create a webhook

One: Create an event destination in the third-party tool

In the tool you'll receive webhook events in:

  1. Create and secure a webhook endpoint handler to receive event data requests (most often POST). Refer to your tool's documentation for instructions on how to do this.

  2. Copy the endpoint URI and any required headers for use in the next section.

Two: Configure the webhook in Material

  1. In Material, click Integrations (the puzzle icon in the top toolbar).

  2. Click Create New Integration.

  3. Scroll to Custom, then click Webhook. Complete the required fields:

This is most often POST , however refer to your tool's documentation for the required method for their destination.

The full HTTPS destination or endpoint URL for your tool; check their documentation or support. Create a unique custom webhook for each endpoint you need to deliver to.

Include any required headers for your destination. Sometimes this includes an auth header with a password; check your destination's documentation to confirm.

Choose the event(s) that will trigger your webhook. Use the form to build the trigger based on multiple filters.

  • The most common event used is Issue Change . It covers most needs.

  • Other common filters are:

    • Severities: trigger based on an issue severity change

    • Detection: trigger based on a specific detection

    • Classifications: trigger based on an issue's classification (for example, route only issues that auto-classification left as Unknown)

  • Choose the option to Include events for messages being added / removed / interacted with in a phishing case if you want to also trigger based on individual message level changes (rather than just issue level changes).


  • While you can include multiple events in one integration, you can only include one of each event type (i.e. one issue change, etc.) All the filters must match to trigger the event. If you need to trigger webhook using OR logic, create multiple integrations with different event parameters.

  • Toggle events off/on at any time in the integration view.

  • Once your webhook starts firing, the last time an event triggered is included in the integration view, under Events:

  1. Add as many events as desired. You can clone events rather than filling out the form each time. Open the actions menu (⋯) on the event row, then click Clone.

  2. Integrations are toggled on by default, so if you want to test it first, toggle the integration Off, then save the Integration.

  3. Open an event, then click Send Test Event to test your connection. (You need to save the integration first to see this option).

  • All webhooks send payloads with the same fields in JSON format. Event descriptions in the app are legacy API documentation. For API v1 documentation, see the API v1 reference.

  • Material verifies SSL certificates when delivering payloads.

  • Once you have saved the integration, you can click Copy Test Event to view an example payload.

Example Payload

You can view a test event to help you build a receiver for JSON events without having to send test events and log the payload.

From the event, click View Test Event to open a window with the full JSON payload and copy it to your clipboard.

You need to save your integration first for this option to appear. See step 6 above.

From an integration, open an event row to view a test event

Disable a webhook

  1. From the Integrations page, open the webhook.

  2. On the top right, toggle Off.


Event Delivery Behavior

Monitoring and Latency

  • Latency, retries, and time-outs

    • For the best experience, your endpoint needs to be able to keep up with incoming webhook events. We automatically retry failed deliveries, but if an endpoint continues to fail, we may disable the associated events. We recommend checking your event subscriptions from time to time to ensure they remain active.

  • Deduplication

    • Payloads aren't always deduplicated. It's best practice to implement deduplication logic at your destination.


Troubleshooting

Common Errors

Error Code
Description
Solution

400

Bad Request

Confirm your payload fields are formatted correctly for your tool's requirements

401

Unauthorized

Verify token

403

Forbidden

Check your headers in the payload to confirm correct permissions and roles including bearer tokens

404

Not found

Verify your endpoint URL

408

Timeout

Double check your endpoint and tool requirements

502

Bad Gateway

Verify your endpoint URL, any intermediate infrastructure such as a load balancer or proxy, and your webhook implementation.

504

Timeout

Double check your endpoint and tool requirements

FAQ

Why is my webhook or event subscription auto-disabling?

This is often because the delivery failed multiple times and triggered the auto-disable. Review your webhook configuration and endpoint to confirm everything is still set up correctly.

Last updated

Was this helpful?