Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Zoho CRM

Scalekit connector
Open markdown

The Zoho CRM connector lets your AI agent act in each user's Zoho CRM account. Each user signs in to Zoho CRM once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 89 tools.

Tools
89
What they doRead · write · destructive
42 · 36 · 1142 read36 write11 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Manage leads and contacts: create, update, search, and delete leads and contacts, and convert leads into accounts and deals
  • Manage accounts and deals: create, update, search, and delete accounts and deals, and assign contact roles on deals
  • Log activities: create and update tasks, events, calls, and notes, and cancel meetings
  • Query any module: list, search, and query records in standard or custom modules and their related lists
  • Send email and files: send emails from CRM records and upload, download, or delete attachments
  • Run bulk updates: export or import large record sets with bulk jobs and mass update field values

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Zoho CRM connection

    In AgentKit > Connections, create a Zoho CRM connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Zoho CRM, so you don't need to register an OAuth app. To show your own app on the consent screen, use your own credentials instead.

    Use your own OAuth app

    Register your Scalekit environment with the Zoho CRM connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:

    1. Set up auth redirects

      • In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Zoho CRM and click Create. Copy the redirect URI. It looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

      • Go to Zoho API Console and click Add Client > Server-based Applications.

      • Enter a Client Name and Homepage URL. Under Authorized Redirect URIs, paste the redirect URI from Scalekit, then click Create.

        Client Details in Zoho API Console

    2. Get client credentials

      • On the app you created, go to the Client Secret tab.
      • Copy the Client ID and Client Secret. Zoho only shows the full secret once — store it securely.
    3. Match your Zoho data center Multi-DC accounts only

      Zoho hosts accounts in different regional data centers (zoho.com, zoho.eu, zoho.in, and others). If your users sign in from a data center other than the default, enable it here so their tokens resolve correctly.

      • Go to the Settings tab on your app.

      • Under Multi-DC, enable the data centers your users belong to (for example, EU (zoho.eu) or IN (zoho.in)).

        Multi-DC settings in Zoho API Console

    4. Add credentials in Scalekit

      • In the Scalekit dashboard, open the connection you created and enter:
        • Client ID (from step 2)
        • Client Secret (from step 2)
        • Scopes (see Zoho CRM OAuth scopes reference — grant only what your agent needs, for example ZohoCRM.modules.ALL)
      • Click Save.
  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'zohocrm'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Zoho CRM:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'zohocrm_v8_accounts_list',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • zohocrm_v8_account_getRetrieve a single account from Zoho CRM by its record ID.Read-only

    Get Account

    Retrieve a single account from Zoho CRM by its record ID.

    Inputs

    record_idstringrequired
    The unique Zoho CRM record ID of the account
  • zohocrm_v8_accounts_listList accounts in Zoho CRM with optional field selection, sorting, and pagination.Read-only

    List Accounts

    List accounts in Zoho CRM with optional field selection, sorting, and pagination.

    Inputs

    fieldsstring
    Comma-separated list of account fields to returndefault id,Account_Name,Phone,Website,Created_Time
    pageinteger
    Page number of results to return
    per_pageinteger
    Number of accounts to return per page
    sort_bystring
    The field to sort results by
    sort_orderstring
    The sort direction
  • zohocrm_v8_attachment_downloadDownload a file attachment from a Zoho CRM record by attachment ID.Read-only

    Download Attachment

    Download a file attachment from a Zoho CRM record by attachment ID. Returns the raw file bytes, not a JSON payload.

    Inputs

    attachment_idstringrequired
    ID of the attachment to download
    modulestringrequired
    API name of the Zoho CRM module the record belongs to
    record_idstringrequired
    ID of the record the attachment belongs to
  • zohocrm_v8_attachment_listList the file attachments on a single Zoho CRM record.Read-only

    List Attachments

    List the file attachments on a single Zoho CRM record.

    Inputs

    modulestringrequired
    API name of the Zoho CRM module the record belongs to
    record_idstringrequired
    ID of the record to list attachments for
    fieldsstring
    Comma-separated list of Attachment field API names to include for each resultdefault id,File_Name,Size,Created_Time
    pagestring
    Page number of results to retrieve
    per_pagestring
    Number of attachments to return per page
  • zohocrm_v8_blueprint_getGet the available blueprint transitions for a Zoho CRM record, including each transition's ID, required fields, and current field values.Read-only

    Get Blueprint Details

    Get the available blueprint transitions for a Zoho CRM record, including each transition's ID, required fields, and current field values.

    Inputs

    modulestringrequired
    API name of the Zoho CRM module the record belongs to
    record_idstringrequired
    ID of the record whose blueprint state to retrieve
  • zohocrm_v8_bulk_read_job_getCheck the status of a Zoho CRM Bulk Read job and get the download URL once it has completed.Read-only

    Get Bulk Read Job

    Check the status of a Zoho CRM Bulk Read job and get the download URL once it has completed.

    Inputs

    job_idstringrequired
    ID of the bulk read job to check, as returned by zohocrm_v8_bulk_read_job_create.
  • zohocrm_v8_bulk_write_job_getCheck the status and result counts of a Zoho CRM Bulk Write job.Read-only

    Get Bulk Write Job

    Check the status and result counts of a Zoho CRM Bulk Write job.

    Inputs

    job_idstringrequired
    ID of the bulk write job to check, as returned by zohocrm_v8_bulk_write_job_create.