Webhook tool

Zoho CRM AI voice agents that find the lead and leave a note

The agent looks the caller up in Zoho CRM by phone number, creates a lead if there is none, and adds a note with what the caller asked for.

Lead intake agent

Finds or creates the Zoho lead and notes the call.

Instructions

Look up the caller by phone number. If there is no lead, ask for their name and company and create one. Before the call ends, add a note with what they asked for and anything you promised. Transfer to sales if they ask for a person.

Handoff
Sales rep

Connected tools

  • Find leadWebhook
  • Create leadWebhook
  • Add noteWebhook
  • Transfer to salesTransfer

What a Zoho CRM AI voice agent can do

Open one to watch a call. The grey lines are the tools the agent calls mid-sentence.

A search by phone number tells the agent whether the caller is already a lead, and gives it a name to greet them by.

Tool definitions

Webhook tools go to POST /v1/agents/tools. Transfers are a system tool on the agent. Replace the placeholder values in capitals with your own.

Webhook

Find lead

Looks up a lead by the caller's phone number.

Show the JSON definition
find_lead
{
  "type": "webhook",
  "name": "find_lead",
  "description": "Finds the caller's Zoho CRM lead by phone number. Returns the lead ID and name, or nothing if there is no match.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.your-company.com/zoho/leads/search",
    "method": "GET",
    "query_params_schema": {
      "properties": {
        "phone": {
          "type": "string",
          "dynamic_variable": "system__caller_id"
        }
      }
    },
    "authentication": {
      "mode": "bearer",
      "token": {
        "type": "secret",
        "secret_value": "YOUR_SERVICE_TOKEN"
      }
    }
  }
}

Webhook

Create lead

Creates a lead for a new caller.

Show the JSON definition
create_lead
{
  "type": "webhook",
  "name": "create_lead",
  "description": "Creates a Zoho CRM lead for a caller who has none. Returns the new lead ID.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.your-company.com/zoho/leads",
    "method": "POST",
    "request_body_schema": {
      "type": "object",
      "properties": {
        "first_name": {
          "type": "string",
          "description": "Caller's first name."
        },
        "last_name": {
          "type": "string",
          "description": "Caller's last name. Required by Zoho."
        },
        "company": {
          "type": "string",
          "description": "Caller's company, if they have one."
        },
        "phone": {
          "type": "string",
          "dynamic_variable": "system__caller_id"
        }
      },
      "required": [
        "last_name"
      ]
    },
    "authentication": {
      "mode": "bearer",
      "token": {
        "type": "secret",
        "secret_value": "YOUR_SERVICE_TOKEN"
      }
    }
  }
}

Webhook

Add note

Adds a note to the lead.

Show the JSON definition
add_note
{
  "type": "webhook",
  "name": "add_note",
  "description": "Adds a note about this call to the caller's lead.",
  "pre_tool_speech": "auto",
  "execution_mode": "async",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.your-company.com/zoho/leads/{lead_id}/notes",
    "method": "POST",
    "path_params_schema": {
      "lead_id": {
        "type": "string",
        "description": "The lead ID from find_lead or create_lead."
      }
    },
    "request_body_schema": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string",
          "description": "What the caller asked for and what you told them, in two or three sentences."
        }
      },
      "required": [
        "content"
      ]
    },
    "authentication": {
      "mode": "bearer",
      "token": {
        "type": "secret",
        "secret_value": "YOUR_SERVICE_TOKEN"
      }
    }
  }
}

Transfer

Transfer to sales

Cold transfer to a sales rep.

Show the JSON definition
transfer_to_sales
{
  "config": {
    "system_tools": {
      "transfer_to_number": {
        "description": null,
        "pre_tool_speech": "auto",
        "transfers": [
          {
            "destination": {
              "type": "phone",
              "phone_number": "+14155550132"
            },
            "condition": "The caller asks to speak with a person, after the note is added."
          }
        ]
      }
    }
  }
}

Set it up

No native connector. The tools call a service of yours, which holds a Zoho OAuth connection and calls the Zoho CRM API. Vendor details read in November 2026.

  1. Register a Zoho client

    In the Zoho Developer Console, register a server-based application and grant ZohoCRM.modules.leads.READ, ZohoCRM.modules.leads.CREATE, ZohoCRM.modules.notes.CREATE and ZohoSearch.securesearch.READ. Keep the refresh token in your service.

  2. Run the three endpoints

    Your service calls GET /crm/v8/Leads/search with the phone parameter, POST /crm/v8/Leads with the record in a data array, and POST /crm/v8/Leads/{record_id}/Notes with Note_Content.

  3. Add the tools

    Point the tools at your service with a bearer secret. The phone parameters read system__caller_id, so the agent never asks for the number.

  4. Test on a sample lead

    Call from a number on a test lead, then from a new number, and check the notes on both.

Before you build

Why not call Zoho directly

Zoho access tokens last an hour. A webhook tool sends the value you stored, so it would stop working after an hour. Your service uses the refresh token to get a new one.

The header has a prefix

Zoho expects the access token in an Authorization header of the form Zoho-oauthtoken followed by the token. Your service sends it that way.

Use your data center

Zoho runs separate data centers, including the US, EU, India, Australia, Japan and Canada. Your service has to sign in and call the API in the one your account lives in.

New leads can take a moment to show in search

Zoho's search may not find a record created a moment ago. Have the agent keep the lead ID it got from create_lead instead of searching again on the same call.

Enterprise-grade security

  • HIPAA compliant badge

    HIPAA compliant

  • SOC 2 Type 2 badge

    SOC 2 Type 2

  • GDPR badge

    GDPR

Zoho CRM AI voice agent FAQs

Does Zoho CRM have AI for phone calls?

Zoho's help docs describe Zia call transcription and intelligence, which turns call recordings into text and labels each call's sentiment and intent. A Cartesia agent answers the call, looks the caller up in Zoho CRM by phone number, creates a lead if there is none, and adds a note with what they asked for.

How do I connect Zoho CRM to an AI voice agent?

Register a server-based client in the Zoho Developer Console and run a small service that holds the refresh token. The service calls the Zoho CRM API in your data center, and Cartesia's webhook tools call the service. Zoho access tokens last an hour, so a token stored directly in a tool would stop working.

Can it work with Zoho contacts or deals instead of leads?

Yes. The same search, insert and notes endpoints take Contacts or Deals as the module name. Your service picks the module, and the tools stay the same.

Why can't the agent find a lead it just created?

Zoho's search may not return a record created a moment ago. Have the agent keep the lead ID that create_lead returns and use it for the note, instead of searching again on the same call.

What does a Zoho CRM voice agent cost to run?

Cartesia bills the agent at $0.03/min, plus LLM usage and telephony. Each call makes a few Zoho API requests through your service. Phone minutes depend on the number. Cartesia-provisioned numbers are US only and carry Cartesia's telephony fee. Numbers from your Twilio account or a SIP trunk pay your carrier's rates instead.

Get started today

Talk to an expert.

Connect with a member of our team and learn how Cartesia can help you build world-class voice experiences.

Contact Sales

Start building.

Access our models via API and bring a voice agent into production in minutes.

Try Cartesia