> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mudstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Automatically send real-time event notifications to external services, enabling integrations and automations without manual checks.

## Introduction

Webhooks allow Mudstack to send real-time updates from your workspace to external services. When an event happens (like a file upload, comment, or review), Mudstack will deliver a JSON payload to your configured endpoint.

Only **workspace admins** can create, manage, or view webhooks.

***

## Managing Webhooks

You can manage webhooks from `Workspace Settings` → `Webhooks`.

### Creating a Webhook

1. Click **`Create a webhook`** in the top right corner.
2. Enter a **Name** for the webhook.
3. Provide a **URL** for the endpoint that will receive the payloads.
4. Check **Allow sensitive data** to control if the payload will contain IP or just IDs. If this is unchecked, you must call the api upon receiving the payload.
5. Set which events should be sent to the webhook URL
6. Add custom headers if needed

The **URL** and **Allow sensitive data** options are not editable after creation

<Tip>
  Webhooks cannot be edited. To change a webhook, you’ll need to delete it and create a new one. A Secret will be generated after creation for verifying webhook signatures.
</Tip>

### Disabling a Webhook

* Toggle the webhook status off by clicking on a webhook, then unchecking the `Enabled` option.

### Deleting a Webhook

* Click **Delete** next to the webhook entry in the table.

***

## Event Payload Examples with Sensitive Data

### `asset_created`

```json theme={null}
{
  "accountId": "b8f71389-2a45-4938-b6d5-0a70f9b9858c",
  "workspaceId": "2c8a5e43-58cb-47ec-b8a5-f0de2dcf9121",
  "type": "asset_created",
  "payload": {
    "assetId": "c1822d26-51b1-4923-8d8a-28d496f965cc",
    "assetName": "Bot_moodboard_03.png",
    "assetPath": "/Concepts/Robot/",
    "createdAt": "2025-10-01T22:58:17.062Z"
  },
  "id": "0e54816a-4c6f-4e64-9826-99ec42f79ef7"
}
```

### `asset_status_changed`

```json theme={null}
{
  "accountId": "b8f71389-2a45-4938-b6d5-0a70f9b9858c",
  "workspaceId": "2c8a5e43-58cb-47ec-b8a5-f0de2dcf9121",
  "type": "asset_status_changed",
  "payload": {
    "assetId": "afdc6c97-82da-4d14-8a1f-915ba0ac2f1b",
    "statusName": "record updated",
    "statusId": "7b9a9f46-fc5d-4409-8a8f-d1383ebd9f6c",
    "changedAt": "2025-10-01T22:58:17.062Z"
  },
  "id": "c3a72db9-6b8f-4b25-81ff-51a999edca1b"
}
```

### `asset_version_added`

```json theme={null}
{
  "accountId": "b8f71389-2a45-4938-b6d5-0a70f9b9858c",
  "workspaceId": "2c8a5e43-58cb-47ec-b8a5-f0de2dcf9121",
  "type": "asset_version_added",
  "payload": {
    "assetId": "e8e2b38c-8a4a-4ff8-b9e3-5b78915b2ee3",
    "checksum": "2dc626b2bc1b7c6cce987e6383b191486f1a1895689e4bf32411d58b203709627ffbf7052a2f5303913fa1d98d8a0e5c40907476e7312fadcc349aac9fcd5a40",
    "name": "DPN_flying_bot.fbx",
    "sizeBytes": 652175,
    "createdAt": "2025-10-01T23:06:14.299Z",
    "versionId": "b6bac2a0-ad3b-482a-b966-b4f8a4e595c5"
  },
  "id": "708fc78d-f3bb-441d-a699-2ef43cd3e26d"
}
```

### `commit_added`

```json theme={null}
{
  "accountId": "b8f71389-2a45-4938-b6d5-0a70f9b9858c",
  "workspaceId": "2c8a5e43-58cb-47ec-b8a5-f0de2dcf9121",
  "type": "commit_added",
  "payload": {
    "authorEmail": "josef@mudstack.com",
    "authorName": "Josef Bell",
    "commitDescription": "Changed the colors to properly match the armor defaults",
    "commitId": "e7a3b44f-44d1-4938-b28e-12f8163cfa6a",
    "commitTitle": "Updated cape on robot4arms",
    "createdAt": "2025-10-01T23:00:00.496Z"
  },
  "id": "d93e5e4b-ff6a-4eb8-b123-0d12f5c1d46c"
}
```

### `asset_comment_added`

```json theme={null}
{
  "accountId": "b8f71389-2a45-4938-b6d5-0a70f9b9858c",
  "workspaceId": "2c8a5e43-58cb-47ec-b8a5-f0de2dcf9121",
  "type": "asset_comment_added",
  "payload": {
    "assetId": "42f19bc0-13e7-4d3d-a935-9304823f93a7",
    "authorName": "Joe Bell",
    "authorEmail": "josef@mudstack.com",
    "commentText": "<p>did you update this <strong><span user_id=\"f56a78b0-fcdb-4b2b-bb9d-a4c31bf059b8\" data-username=\"Josef Bell\" data-linked-resource-type=\"userinfo\">@Josef Bell</span></strong>?</p>",
    "commentId": "d24587e3-b04f-43ef-bf9a-7d3316405db8",
    "createdAt": "2025-10-02T21:23:38.891Z"
  },
  "id": "cc02b8c1-45e4-4cc4-b6fd-6a0b9a8c31f5"
}
```

### `asset_reviewer_added`

```json theme={null}
{
  "accountId": "b8f71389-2a45-4938-b6d5-0a70f9b9858c",
  "workspaceId": "2c8a5e43-58cb-47ec-b8a5-f0de2dcf9121",
  "type": "asset_reviewer_added",
  "payload": {
    "assetId": "b5e1af7b-1f24-48a5-81b2-83f374ec3e35",
    "createdAt": "2025-10-02T21:25:01.770Z",
    "requesterName": "Joe Bell",
    "requesterEmail": "josef@mudstack.com",
    "requesterId": "c5ec24a9-46b9-4d13-a441-7a2f9d9deeb7",
    "reviewerId": "0dbe34a8-9a9a-4e4f-b4b1-78f0d67a0b8f"
  },
  "id": "0dc7597c-0e1f-4b9e-a52a-20689b69d52b"
}
```

### `asset_review_added`

```json theme={null}
{
  "accountId": "b8f71389-2a45-4938-b6d5-0a70f9b9858c",
  "workspaceId": "2c8a5e43-58cb-47ec-b8a5-f0de2dcf9121",
  "type": "asset_review_added",
  "payload": {
    "assetId": "9d0ee2e7-3f25-4e38-b1cc-2cfb88f57df1",
    "createdAt": "2025-10-02T21:25:01.770Z",
    "authorName": "Joe Bell",
    "authorEmail": "josef@mudstack.com",
    "reviewId": "8f0c9b6e-24f5-4b9e-b5ac-6e593d6cd5ea",
    "reviewText": "<p>The color space on this export didn’t convert properly.</p>",
    "reviewType": "change_request"
  },
  "id": "6a4f9cb0-2a2b-4b38-b621-d3db4cf94936"
}
```

Reviews will have a `reviewType` of `approved` or `change_request` depending on the message.

If `Allow sensitive data` is unchecked, the responses will only include the type, date, and ids.

## Example Integrations

### Jira

Use our [downloadable sample](/images/Mudstack_JiraWebhookSample.json) to automatically create Jira issues when new assets or tasks are added in Mudstack. You can [import this into an Automation Rule](https://support.atlassian.com/cloud-automation/docs/import-and-export-jira-automation-rules/) and enter your webhook URL info

<img src="https://mintcdn.com/mudstack-docs/5sC_oGiYgSijvGQG/images/webhooks-jira-template.jpg?fit=max&auto=format&n=5sC_oGiYgSijvGQG&q=85&s=71ec65276b4f63f347a5f58d95a35299" alt="Jira Template" width="808" height="1683" data-path="images/webhooks-jira-template.jpg" />

The sample will parse a ticket id found at in the `commitTitle` on the `commit_added` event. This allows us to map the message to a specific ticket in Jira

### Zapier

A general Zap structure will contain the following:

1. Webhook catch (use the zap url in Mudstack, and generate some events to show in Zapier)
2. IF USING THE API, an Authentication step to use the API
3. Formatter for the Date/Time conversion
4. Paths to do specific action based on the `type` of event from Mudstack
5. Code to generate a url to the file for the message
6. API calls to enrich webhook data
7. Integration point to send the data out of Zapier

<img src="https://mintcdn.com/mudstack-docs/Gr85oXKNsl-icnp2/images/webhooks-zapier-template.jpg?fit=max&auto=format&n=Gr85oXKNsl-icnp2&q=85&s=561dffd41fab4d485a985a679cb7d45e" alt="Zapier Template" width="3340" height="1723" data-path="images/webhooks-zapier-template.jpg" />

#### Best Practices

* Use **Paths** for splitting multiple event types in a single Zap
* Use **Formatter** to convert Date / Time into something more human readable before sending to other systems.
* You can use the **Code** block to concatenate assetIDs to generate links, make sure you pass in the input data from the webhook. These urls are only accessbile by users that have permssions in the account and workspace of the file.

```py theme={null}
# Extract the input values
account_id = input_data.get('accountId', '')
workspace_id = input_data.get('workspaceId', '')
asset_id = input_data.get('assetId', '')

# Construct the URL using string formatting
url = f"https://app.dev.mudstack.com/sh/asset/{account_id}/{workspace_id}/{asset_id}"

# Prepare the output as a dictionary
output = {'url': url}
```

## Using the API with Webhooks

Webhooks push essential event data, but often you’ll need more context.

You can use the Mudstack API in conjunction with webhooks to:

* Fetch full asset metadata from an asset\_id.
* Retrieve commit details with a commit\_id.
* Join user and workspace information to enrich webhook payloads, like the user name or other file metadata.

Make sure to add this to your Automation

1. Make sure you have a step to [authenticate](/api-reference/authentication#using-the-api-key-%2B-secret-key) before using the API.
2. GET Requests to gather additional information

The webhook response will contain the account, workspace, and object IDs for you to collect additional data from the API

If you don't currently have your API Key, [ask us about generating your API Key](/api-reference/authentication#generating-api-key-%2B-secret-key)

Example:

* When a webhook sends asset\_created with only an asset ID, call the API to fetch additional fields like tags, linked versions, or folder structure.
* Adding an attachment to a comment or review
* Adding change context to a commit

### Best Practices with the API

* When attempting to GET Attachments from a comment or review, make sure to have an error handler. This will allow you to support posting when it returns with an error if there are no attachments on the comment.
* Make sure file attachments are uploaded to their destination, NOT referencing the url. Our file urls have a 15 min time limit, so they must be uploaded and stored elsewhere to have any permanence.
