> For the complete documentation index, see [llms.txt](https://docs.material.security/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.material.security/integrations/integration-fundamentals/siem-integrations.md).

# SIEM Integrations

## Overview

Integrate your SIEM (Security Information and Event Management) tools with Material to send data like logs and threat data to use downstream for automated SIEM playbooks and more.

<details>

<summary>How do Material and SIEM integrations work together?</summary>

Material pushes workspace events to your SIEM in real-time. When a critical incident occurs, your playbooks trigger instantly with the full picture already attached, drastically cutting down your mean time to respond.

Material supports SIEM correlation and detection rules in a couple key ways:

* **Event Streaming and Data Integration:** Material provides webhook-based event subscriptions that stream events directly to your SIEM in near real-time. You can subscribe to events and filter by specific detection type, like vulnerability or email threats. The events are sent as JSON payloads containing detailed context about threats, entities, and analysis that you can configure your SIEM tool to use as needed.
* **Threat Intelligence Enrichment:** Material provides enriched threat data including IP reputation, URL analysis, and file analysis that can enhance your SIEM's correlation capabilities and provide additional context for security events

</details>

<details>

<summary>Should I integrate with SIEM or SOAR first?</summary>

The general recommendation is to integrate with your SIEM for data ingestion and enrichment, then use your existing SIEM-to-SOAR workflow for automated response actions, however Material can accommodate direct SOAR integration if that better fits your architecture.

</details>

### Available SIEM Integrations

To set up an integration, you'll

1. Create an event destination in your third-party tool
2. Configure the integration in Material including adding triggering events

Some SIEM integrations come with preconfigured triggering events tailored to common use cases for that tool, so you can get started without manual setup. These include:

* [Datadog](https://docs.datadoghq.com/integrations/webhooks)
* [Google SecOps](https://docs.cloud.google.com/chronicle/docs/ingestion/setup-siem-webhook)
* [Panther](/integrations/integration-fundamentals/siem-integrations/panther.md)
* [Splunk](https://help.splunk.com/en/splunk-enterprise/get-started/get-data-in/10.2/get-data-with-http-event-collector/set-up-and-use-http-event-collector-in-splunk-web)
* [Sumo Logic](https://www.sumologic.com/help/docs/send-data/hosted-collectors/http-source/)

For all tools, [complete steps one and two below](#one-create-an-event-destination-in-the-third-party-tool). You can edit the preconfigured events as needed.

<figure><img src="/files/TZdthk48rhLm6OJ1bsTN" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Don't see your tool?** Use a [custom SIEM integration](#how-to-create-a-custom-siem-integration) — if your tool accepts HTTPS JSON payloads, it works with Material.
{% endhint %}

***

## How to create a custom SIEM integration

{% hint style="warning" %}
A Super Admin or Tenant Admin [role](/learn-more/administration/admin-roles.md) is required to create custom SIEM integrations.
{% endhint %}

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

Custom SIEM integrations are achieved via webhook. In the SIEM's webhook or connector interface:

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. ([See links above](#available-siem-integrations) for pre-configured integration doc links).
2. Copy the endpoint URI and any required headers for use in the next section.

### Two: Configure the SIEM integration in Material

1. In Material, click **Integrations** (the puzzle icon in the top tool bar).
2. Click **Create New Integration**.
3. Scroll to **SIEM**, then click **Custom SIEM**. Complete the required fields:

   <figure><img src="/files/hcZbHllgbULm7cY0xY8i" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Method" %}
This is most often `POST` , however refer to your tool's documentation for the required method for their destination.
{% endtab %}

{% tab title="URI" %}
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.
{% endtab %}

{% tab title="Headers" %}
Include any required headers for your destination. Sometimes this includes an auth header with a password; check your destination's documentation to confirm.
{% endtab %}

{% tab title="Event" %}
Choose the event(s) that will trigger your custom SIEM 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.

<figure><img src="/files/gcmSUUqhfuYzcEZh6NMc" alt="" width="336"><figcaption></figcaption></figure>

* Toggle events off/on at any time in the integration view.
* Once your custom SIEM webhook starts firing, the last time an event triggered is included in the integration view, under **Events**:

<figure><img src="/files/duhYtIhHFCG1fnrA2LyH" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

4. 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.**
5. Integrations are toggled on by default, so if you want to test it first, toggle the integration **Off**, then **save** the Integration.
6. 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 are in app; click the **API** icon in the toolbar then click **Events**.
* Material verifies SSL certificates when delivering payloads.
* Once you have saved the integration, you can click **Copy Test Event** to view an example payload.

<details>

<summary>Example Payload</summary>

{% code overflow="wrap" %}

```json
{
  "eventId": "abc123",
  "timestamp": "YYYY-MM-DDTHR:MIN:SEC",
  "orgId": "demo",
  "uDomainId": "google://C029fz6xs/",
  "requestor": {
    "system": true
  },
  "tenant": null,
  "account": null,
  "group": null,
  "file": null,
  "message": {
    "uDomainId": "google://abc123",
    "messageId": "<demo@acme.com>",
    "msgDate": "YYYY-MM-DDTHR:MIN:SEC",
    "msgSender": "demo@acme.com"
  },
  "app": null,
  "type": "CREATE",
  "issue": {
    "entityType": "MESSAGE",
    "uDomainId": "google://abc123",
    "messageId": "<demo@acme.org>",
    "msgDate": "YYYY-MM-DDTHR:MIN:SEC",
    "id": "abc123",
    "entityId": "MESSAGE:{\"messageId\":\"<demo@acme.org>\",\"msgDate\":\"YYYY-MM-DDTHR:MIN:SEC\",\"uDomainId\":\"google://abc123/\"}",
    "detectionId": "phishing-attack-user-report",
    "detectionType": "PHISHING_EVENT_BASED",
    "categories": [
      "EMAIL_SECURITY"
    ],
    "tactics": [],
    "severity": "03-MEDIUM",
    "status": "OPEN",
    "lastStateChangeTimestamp": "YYYY-MM-DDTHR:MIN:SEC",
    "lastOpenedTimestamp": "2YYYY-MM-DDTHR:MIN:SEC",
    "lastResolvedTimestamp": null,
    "snoozedUntilTimestamp": null,
    "ignoreReason": null,
    "resolveReason": null,
    "classification": "MALICIOUS",
    "analysis": [],
    "scopes": [
      {
        "type": "count",
        "countType": "num_accounts",
        "countValue": 1
      },
      {
        "type": "count",
        "countType": "num_messages",
        "countValue": 1
      },
      {
        "type": "count",
        "countType": "num_links",
        "countValue": 0
      },
      {
        "type": "count",
        "countType": "num_attachments",
        "countValue": 0
      }
    ],
    "associatedEntityIds": [
      "ACCOUNT:{\"uAcctId\":\"google://abc123/\",\"uDomainId\":\"google://abc123/\"}",
      "MESSAGE:{\"messageId\":\"<demo@acme.org>\",\"msgDate\":\"YYYY-MM-DDTHR:MIN:SEC\",\"uDomainId\":\"google://abc123/\"}"
    ],
    "numAccounts": 1,
    "numMessages": 1,
    "numAttachments": 0,
    "numLinks": 0,
    "fixes": [
      {
        "type": "tag",
        "label": "Speedbump"
      },
      {
        "type": "tag",
        "label": "Warning Banner"
      },
      {
        "type": "tag",
        "label": "Spam"
      }
    ],
    "extra": {
      "caseId": "20260309_KrTmx0YJ"
    },
    "caseId": "20260309_KrTmx0YJ",
    "comments": [],
    "ownerUAcctId": null,
    "createdAt": "YYYY-MM-DDTHR:MIN:SEC",
    "updatedAt": "YYYY-MM-DDTHR:MIN:SEC",
    "lastCheckedAt": "YYYY-MM-DDTHR:MIN:SEC",
    "entityDisplayLabel": null,
    "detectionName": "Message flagged by user",
    "nameSearchValue": "",
    "nameSearchValueUpdatedAt": null,
    "dedupKey": "20260309_KrTmx0YJ",
    "dedupTimestamp": "YYYY-MM-DDTHR:MIN:SEC",
    "isMock": false,
    "issueName": "Message flagged by user",
    "issueLink": "https://acme.com"
  },
  "after": null,
  "before": null,
  "getMaterialBaseUrl": {
    "url": "https://acme.com"
  }
}
```

{% endcode %}

</details>

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.

<figure><img src="/files/T4D64venjrWw9MWZjXfl" alt=""><figcaption><p>From an integration, open an event row to view a test event</p></figcaption></figure>

***

### Disable an integration

1. From the **Integrations** page, open the integration.
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

{% hint style="success" %}
**Test your endpoint**

We recommend you always test your webhook in Material using the [**Send Test Event**](#two-configure-the-webhook-in-material) button.
{% endhint %}

#### 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                                                                             |

### Troubleshooting workflow

If you're experiencing issues with your custom SIEM integration, try this troubleshooting workflow:

1. **Check Event Subscription Status:** Look for error messages in Material indicating why events might be failing or if subscriptions have been auto-disabled. For example:

   <figure><img src="/files/A75YEZr2360D1C1zOP1u" alt="" width="375"><figcaption></figcaption></figure>
2. **Verify Network Connectivity:** Ensure Material can reach your SIEM endpoint and that firewall rules allow the connection. You may need to update TLS settings or SSL certificates
3. **Test with Simple Events First:** Start with basic audit log events before moving to complex issue data to isolate where the integration breaks.
4. **Review SIEM-Specific Requirements:**
   1. **Splunk**: May need specific source types and index configurations
   2. **Chronicle/SecOps**: Requires proper field mapping for `extracted.fields`
   3. **Panther**: Needs schema matching for event classification

### FAQ

#### Why are my SIEM feeds failing?

Some common integration issues and solutions are:

<details>

<summary><strong>Webhook Configuration Problems</strong></summary>

* Verify your webhook URL is correct and accessible
* Check that your SIEM can accept the webhook payload format
* Ensure proper authentication headers are configured
* Test the webhook endpoint directly with a simple POST request

</details>

<details>

<summary><strong>Event Subscription Setup</strong></summary>

* Confirm the event subscription is enabled and not disabled due to errors
* Verify the correct event types are selected
* Test with the **Send Test Event** button to isolate configuration issues (see [Troubleshooting workflow](#troubleshooting-workflow))

</details>

<details>

<summary><strong>Payload and Schema Issues</strong></summary>

* Verify your SIEM can parse Material's JSON payload format
* Check for timestamp formatting conflicts (common with Splunk integrations)
* Ensure the payload size doesn't exceed your SIEM's limits (64kB for SumoLogic)
* Review if you need to customize the payload fields being sent

</details>

<br>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.material.security/integrations/integration-fundamentals/siem-integrations.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
