> ## 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 CRM Webhook Setup Guide

> Configure Zoho CRM to deliver events to StackOne.

## Prerequisites

The connector should already be set up, with a Connector Profile and a Linked Account. See [Getting Started](/connectors/zohocrm#getting-started) on the Zoho CRM connector page.

<section data-guide-section data-guide-scopes="">
  <h2>Subscribe via the StackOne dashboard</h2>

  <p>This connector uses <strong>Programmatic Webhooks</strong>. StackOne creates and manages the webhook subscription automatically when the account is connected: enabling webhook events creates a single Zoho CRM notification channel (via `POST /actions/watch`) covering every event you enable, pointing at your StackOne callback URL.</p>

  <Steps>
    <Step title="Select event subscriptions in the dashboard">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In the StackOne dashboard, open the Zoho CRM connector profile and enable the webhook events you want delivered downstream. See the <strong>Available Webhook Events</strong> section below for the full list.</p>
      </div>
    </Step>

    <Step title="Registration on subscribe">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>When webhook events are enabled (or the selection changes), StackOne enables a notification channel on your behalf using the connected account's credentials, registered for exactly the events you enabled. You can inspect it with the connector's List Notifications action.</p>
      </div>
    </Step>

    <Step title="Verify delivery">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Create, update, or delete a record in a watched module (for example, create a test lead) and confirm the event reaches your downstream consumer.</p>
      </div>
    </Step>

    <Step title="Unsubscribe">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Changing your event selection re-registers the channel. Disconnecting the account disables it (`DELETE /actions/watch`), stopping deliveries.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Available Webhook Events</h2>

  <p>The following Zoho CRM events can be enabled. Each event corresponds to a Zoho notification event in the form `Module.operation`.</p>

  <Steps>
    <Step title="Sales events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on leads, contacts, accounts, deals, and campaigns.</p>

        <ul>
          <li><strong>Lead Created</strong> (`Leads.create`) — Fired when a lead record is created</li>
          <li><strong>Lead Updated</strong> (`Leads.edit`) — Fired when a lead record is updated</li>
          <li><strong>Lead Deleted</strong> (`Leads.delete`) — Fired when a lead record is deleted</li>
          <li><strong>Contact Created</strong> (`Contacts.create`) — Fired when a contact record is created</li>
          <li><strong>Contact Updated</strong> (`Contacts.edit`) — Fired when a contact record is updated</li>
          <li><strong>Contact Deleted</strong> (`Contacts.delete`) — Fired when a contact record is deleted</li>
          <li><strong>Account Created</strong> (`Accounts.create`) — Fired when an account record is created</li>
          <li><strong>Account Updated</strong> (`Accounts.edit`) — Fired when an account record is updated</li>
          <li><strong>Account Deleted</strong> (`Accounts.delete`) — Fired when an account record is deleted</li>
          <li><strong>Deal Created</strong> (`Deals.create`) — Fired when a deal record is created</li>
          <li><strong>Deal Updated</strong> (`Deals.edit`) — Fired when a deal record is updated</li>
          <li><strong>Deal Deleted</strong> (`Deals.delete`) — Fired when a deal record is deleted</li>
          <li><strong>Campaign Created</strong> (`Campaigns.create`) — Fired when a campaign record is created</li>
          <li><strong>Campaign Updated</strong> (`Campaigns.edit`) — Fired when a campaign record is updated</li>
          <li><strong>Campaign Deleted</strong> (`Campaigns.delete`) — Fired when a campaign record is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="Activities events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on tasks, meetings, and calls.</p>

        <ul>
          <li><strong>Task Created</strong> (`Tasks.create`) — Fired when a task record is created</li>
          <li><strong>Task Updated</strong> (`Tasks.edit`) — Fired when a task record is updated</li>
          <li><strong>Task Deleted</strong> (`Tasks.delete`) — Fired when a task record is deleted</li>
          <li><strong>Meeting Created</strong> (`Events.create`) — Fired when a meeting record is created</li>
          <li><strong>Meeting Updated</strong> (`Events.edit`) — Fired when a meeting record is updated</li>
          <li><strong>Meeting Deleted</strong> (`Events.delete`) — Fired when a meeting record is deleted</li>
          <li><strong>Call Created</strong> (`Calls.create`) — Fired when a call record is created</li>
          <li><strong>Call Updated</strong> (`Calls.edit`) — Fired when a call record is updated</li>
          <li><strong>Call Deleted</strong> (`Calls.delete`) — Fired when a call record is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="Inventory events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on products, vendors, price books, quotes, sales orders, purchase orders, and invoices.</p>

        <ul>
          <li><strong>Product Created</strong> (`Products.create`) — Fired when a product record is created</li>
          <li><strong>Product Updated</strong> (`Products.edit`) — Fired when a product record is updated</li>
          <li><strong>Product Deleted</strong> (`Products.delete`) — Fired when a product record is deleted</li>
          <li><strong>Vendor Created</strong> (`Vendors.create`) — Fired when a vendor record is created</li>
          <li><strong>Vendor Updated</strong> (`Vendors.edit`) — Fired when a vendor record is updated</li>
          <li><strong>Vendor Deleted</strong> (`Vendors.delete`) — Fired when a vendor record is deleted</li>
          <li><strong>Price Book Created</strong> (`Price_Books.create`) — Fired when a price book record is created</li>
          <li><strong>Price Book Updated</strong> (`Price_Books.edit`) — Fired when a price book record is updated</li>
          <li><strong>Price Book Deleted</strong> (`Price_Books.delete`) — Fired when a price book record is deleted</li>
          <li><strong>Quote Created</strong> (`Quotes.create`) — Fired when a quote record is created</li>
          <li><strong>Quote Updated</strong> (`Quotes.edit`) — Fired when a quote record is updated</li>
          <li><strong>Quote Deleted</strong> (`Quotes.delete`) — Fired when a quote record is deleted</li>
          <li><strong>Sales Order Created</strong> (`Sales_Orders.create`) — Fired when a sales order record is created</li>
          <li><strong>Sales Order Updated</strong> (`Sales_Orders.edit`) — Fired when a sales order record is updated</li>
          <li><strong>Sales Order Deleted</strong> (`Sales_Orders.delete`) — Fired when a sales order record is deleted</li>
          <li><strong>Purchase Order Created</strong> (`Purchase_Orders.create`) — Fired when a purchase order record is created</li>
          <li><strong>Purchase Order Updated</strong> (`Purchase_Orders.edit`) — Fired when a purchase order record is updated</li>
          <li><strong>Purchase Order Deleted</strong> (`Purchase_Orders.delete`) — Fired when a purchase order record is deleted</li>
          <li><strong>Invoice Created</strong> (`Invoices.create`) — Fired when an invoice record is created</li>
          <li><strong>Invoice Updated</strong> (`Invoices.edit`) — Fired when an invoice record is updated</li>
          <li><strong>Invoice Deleted</strong> (`Invoices.delete`) — Fired when an invoice record is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="Support events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on cases and solutions.</p>

        <ul>
          <li><strong>Case Created</strong> (`Cases.create`) — Fired when a case record is created</li>
          <li><strong>Case Updated</strong> (`Cases.edit`) — Fired when a case record is updated</li>
          <li><strong>Case Deleted</strong> (`Cases.delete`) — Fired when a case record is deleted</li>
          <li><strong>Solution Created</strong> (`Solutions.create`) — Fired when a solution record is created</li>
          <li><strong>Solution Updated</strong> (`Solutions.edit`) — Fired when a solution record is updated</li>
          <li><strong>Solution Deleted</strong> (`Solutions.delete`) — Fired when a solution record is deleted</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Delivery format</h2>

  <p>Details of how Zoho CRM delivers events to StackOne.</p>

  <Steps>
    <Step title="JSON payloads">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Zoho CRM posts a JSON body containing the module API name (`module`), the operation (`insert`, `update`, or `delete`), the affected record IDs (`ids`), `server_time` in epoch milliseconds, `resource_uri`, and `channel_id`. Update deliveries also carry `affected_fields` with the changed field values.</p>
      </div>
    </Step>

    <Step title="Batched record IDs">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>A single delivery can list several record IDs in `ids`. The first ID is used as the event ID and the full envelope, including every ID, is passed through in the event data. The payload does not include full record data — fetch the record by ID when needed.</p>
      </div>
    </Step>
  </Steps>
</section>

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