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

# Zoho Vault Webhook Setup Guide

> Configure Zoho Vault to deliver events to StackOne.

## Prerequisites

The connector should already be set up, with a Connector Profile and a Linked Account. See [Getting Started](https://docs.stackone.com/connectors/zohovault.md#getting-started) on the Zoho Vault connector page.

## Copy the Native Webhook URL

The Native Webhook URL is the StackOne address that receives the Zoho Vault events for this linked account.

**1. Copy the URL from the linked account**

Open the linked account in StackOne and copy the **Native Webhook URL** with the copy icon.

<ul>
  <li>It is available once the account is connected.</li>
  <li>Every Vault webhook below uses this same URL.</li>
</ul>

![Linked account form with the copy icon next to the Native Webhook URL highlighted and the URL hidden](https://mintcdn.com/stackone-60/gDpIfU6gA_iZW4Km/connectors/zohovault/images/events-native-webhook-url.png?fit=max\&auto=format\&n=gDpIfU6gA_iZW4Km\&q=85\&s=e4f882fe67e7edff1bc4545d71b018a3)

## Create the Zoho Vault webhooks

Each Vault webhook covers one module, so create one webhook per module whose events you want: **Passwords**, **Folder**, **Users** and **Apps**.

**1. Sign in to Zoho Vault**

Sign in to your [Zoho Vault account](https://vault.zoho.com) as a Super Admin.

<ul>
  <li>Click **Settings**, then **Webhook Integration** under **Integrations**.</li>
  <li>Click **Create Webhook**, or **Add** when webhooks already exist.</li>
</ul>

![Zoho Vault Settings with Webhook Integration and the Create Webhook button highlighted](https://mintcdn.com/stackone-60/gDpIfU6gA_iZW4Km/connectors/zohovault/images/events-webhook-integration.png?fit=max\&auto=format\&n=gDpIfU6gA_iZW4Km\&q=85\&s=cabf468fadd623211a1ce99c502f0f4b)

**2. Fill in the webhook details**

In **Create Webhook**, enter a **Webhook Name** such as `StackOne Passwords`, keep **Method** as **POST** and paste the Native Webhook URL into **Webhook URL**.

<ul>
  <li>Keep **Module** as **Passwords** for this first webhook.</li>
  <li>Under **Trigger Events**, click **Select All**.</li>
</ul>

![Create Webhook form with Webhook Name, the hidden Webhook URL and Select All highlighted](https://mintcdn.com/stackone-60/gDpIfU6gA_iZW4Km/connectors/zohovault/images/events-create-webhook.png?fit=max\&auto=format\&n=gDpIfU6gA_iZW4Km\&q=85\&s=67382c4f4fc45259fad00231faf9e16f)

**3. Paste the payload and create the webhook**

Under **URL Parameters**, select **Send custom json** and replace the box contents with the payload for the module, then click **Create Webhook**.

<ul>
  <li>StackOne routes each event by its **OperationType** field, so keep the payload exactly as shown.</li>
  <li>Vault checks the URL when the webhook is created and StackOne answers that check automatically.</li>
</ul>

![Send custom json box with the Passwords payload and the Create Webhook button highlighted](https://mintcdn.com/stackone-60/gDpIfU6gA_iZW4Km/connectors/zohovault/images/events-custom-json.png?fit=max\&auto=format\&n=gDpIfU6gA_iZW4Km\&q=85\&s=b8d8dae2526d6f242b56de7e16ae3769)

**4. Copy the Passwords payload**

Paste this payload for the **Passwords** module.

```json theme={null}
{"OperationType": "${OperationType}", "PasswordId": "${PasswordId}", "PasswordName": "${PasswordName}", "CategoryId": "${CategoryId}", "CategoryName": "${CategoryName}", "OwnerUserId": "${OwnerUserId}", "UserName": "${UserName}", "UserId": "${UserId}", "UserEmail": "${UserEmail}", "Timestamp": "${Timestamp}"}
```

**5. Repeat for the other modules**

Click **Add** again for each other module, pick it under **Module**, click **Select All** and paste its payload.

<ul>
  <li>**Folder** (name it `StackOne Folders`)</li>
  <li>**Users** (name it `StackOne Users`)</li>
  <li>**Apps** (name it `StackOne SSO Apps`)</li>
</ul>

![Module dropdown open with Folder highlighted](https://mintcdn.com/stackone-60/gDpIfU6gA_iZW4Km/connectors/zohovault/images/events-module.png?fit=max\&auto=format\&n=gDpIfU6gA_iZW4Km\&q=85\&s=23e730f9cd877c785c74a76487bdca2b)

**6. Copy the Folder, Users and Apps payloads**

**Folder**:

```json theme={null}
{"OperationType": "${OperationType}", "FolderId": "${FolderId}", "FolderName": "${FolderName}", "OwnerUserId": "${OwnerUserId}", "UserName": "${UserName}", "UserId": "${UserId}", "UserEmail": "${UserEmail}", "Timestamp": "${Timestamp}"}
```

**Users**:

```json theme={null}
{"OperationType": "${OperationType}", "OperatedOnUserId": "${OperatedOnUserId}", "OperatedOnUserName": "${OperatedOnUserName}", "OperatedOnUserEmail": "${OperatedOnUserEmail}", "UserStatus": "${UserStatus}", "UserName": "${UserName}", "UserId": "${UserId}", "UserEmail": "${UserEmail}", "Timestamp": "${Timestamp}"}
```

**Apps**:

```json theme={null}
{"OperationType": "${OperationType}", "AppId": "${AppId}", "AppName": "${AppName}", "AppStatus": "${AppStatus}", "UserName": "${UserName}", "UserId": "${UserId}", "UserEmail": "${UserEmail}", "Timestamp": "${Timestamp}"}
```

**7. Turn on each webhook**

New webhooks start switched off. Turn on the **Status** toggle of each webhook you created.

<ul>
  <li>Vault turns a webhook off after 5 failed deliveries in a row. Turn it on again from the same toggle.</li>
</ul>

![Webhook list with the Status toggles highlighted](https://mintcdn.com/stackone-60/gDpIfU6gA_iZW4Km/connectors/zohovault/images/events-status.png?fit=max\&auto=format\&n=gDpIfU6gA_iZW4Km\&q=85\&s=d5de78939bbbcf01acfb55d34afb5866)

## Available webhook events

These Zoho Vault events can be enabled. Only events selected in StackOne are delivered, and Vault sends only the events ticked on its webhooks.

**1. Verification**

Vault verifies the URL when a webhook is created or turned on.

<ul>
  <li>**Active Check** (`url_verification`) — Fired when Vault checks the webhook URL; StackOne answers it so Vault can enable the webhook</li>
</ul>

**2. Password events**

Events from the **Passwords** module.

<ul>
  <li>**Password Added** (`password.added`) — Fired when a password is created</li>
  <li>**Password Updated** (`password.updated`) — Fired when a password is edited</li>
  <li>**Password Deleted** (`password.deleted`) — Fired when a password is deleted</li>
  <li>**Password Viewed** (`password.viewed`) — Fired when a user reveals a password in Vault</li>
  <li>**Password Checked Out by User** (`password.checked_out`) — Fired when a user checks out a password under access control</li>
  <li>**Password Checked-In** (`password.checked_in`) — Fired when a checked-out password is checked back in</li>
  <li>**Password Acquired** (`password.acquired`) — Fired when an admin takes ownership of a password</li>
  <li>**Access Request Created** (`access_request.created`) — Fired when a user requests access to a password</li>
  <li>**Access Request Approved** (`access_request.approved`) — Fired when an access request is approved</li>
  <li>**Access Request Rejected** (`access_request.rejected`) — Fired when an access request is rejected</li>
  <li>**Category Added** (`category.added`) — Fired when a password category is added</li>
  <li>**Category Updated** (`category.updated`) — Fired when a password category is edited. In testing, Vault did not send this event</li>
  <li>**Category Deleted** (`category.deleted`) — Fired when a password category is deleted</li>
</ul>

**3. Folder events**

Events from the **Folder** module.

<ul>
  <li>**Folder Added** (`folder.added`) — Fired when a folder is created</li>
  <li>**Folder Updated** (`folder.updated`) — Fired when a folder is edited</li>
  <li>**Folder Deleted** (`folder.deleted`) — Fired when a folder is deleted</li>
  <li>**Folder Shared** (`folder.shared`) — Fired when a folder is shared with users or user groups</li>
  <li>**Folder Shared To Third Party** (`folder.shared_to_third_party`) — Fired when a folder is shared with an outside party</li>
  <li>**Folder Acquired** (`folder.acquired`) — Fired when an admin takes ownership of a folder</li>
</ul>

**4. User events**

Events from the **Users** module.

<ul>
  <li>**Users Invited** (`users.invited`) — Fired when users are invited to the organization</li>
  <li>**Users Added** (`users.added`) — Fired when users join the organization</li>
  <li>**Users Deleted** (`users.deleted`) — Fired when users are deleted</li>
  <li>**Users Role Changed** (`users.role_changed`) — Fired when a user's role changes</li>
</ul>

**5. SSO app events**

Events from the **Apps** module.

<ul>
  <li>**SSO App Added** (`sso_app.added`) — Fired when an SSO app is added</li>
  <li>**SSO App Updated** (`sso_app.updated`) — Fired when an SSO app is edited</li>
  <li>**SSO App Enabled** (`sso_app.enabled`) — Fired when an SSO app is enabled</li>
  <li>**SSO App Disabled** (`sso_app.disabled`) — Fired when an SSO app is disabled</li>
  <li>**SSO App Deleted** (`sso_app.deleted`) — Fired when an SSO app is deleted</li>
  <li>**SSO App User Mappings Updated** (`sso_app.user_mappings_updated`) — Fired when the users mapped to an SSO app change. In testing, Vault did not send this event</li>
</ul>

## Delivery format

Each delivery is the JSON payload you pasted, with the placeholders filled in.

<ul>
  <li>Fields that don't apply to an event keep their placeholder text, for example `${PasswordId}` on category events.</li>
  <li>Vault does not sign deliveries. Keep the Native Webhook URL private.</li>
</ul>

## Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.