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.

How to create a webhook
One: Create an event destination in the third-party tool
In the tool you'll receive webhook events in:
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.Copy the endpoint URI and any required headers for use in the next section.
Two: Configure the webhook in Material
In Material, click Integrations (the puzzle icon in the top toolbar).
Click Create New Integration.
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:

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.
Integrations are toggled on by default, so if you want to test it first, toggle the integration Off, then save the Integration.
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.
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.

Disable a webhook
From the Integrations page, open the webhook.
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
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?

