CONNECT APP
Build with Zoho CRM
CRM
- OAuth
MCP
Give your agent Zoho CRM tools
Every Zoho CRM action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Zoho CRM account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "zoho_crm",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Convert Lead:
const result = await mcp.callTool({
name: "zoho_crm-convert-lead",
arguments: {
lead: "Lead",
account: "Account",
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "zoho_crm",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Convert Lead:
result = await session.call_tool("zoho_crm-convert-lead", {
"lead": "Lead",
"account": "Account",
})API PROXY
Call the Zoho CRM API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Zoho CRM API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.example.com/v1/me",
})
// Any allowed Zoho CRM endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.example.com/v1/me
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvbWU?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Zoho CRM actions from your backend
Connect a user's Zoho CRM account once, then run Convert Lead on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "zoho_crm-convert-lead",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
zoho_crm: { authProvisionId: "apn_xxxxxxx" },
lead: "Lead",
account: "Account",
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="zoho_crm-convert-lead",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"zoho_crm": {"authProvisionId": "apn_xxxxxxx"},
"lead": "Lead",
"account": "Account",
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "zoho_crm-convert-lead",
"configured_props": {
"zoho_crm": { "authProvisionId": "apn_xxxxxxx" },
"lead": "Lead",
"account": "Account"
}
}'TOOLS
Zoho CRM actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Convert Lead
actionConverts a Lead into a Contact or an Account. See the documentationRead-onlyv0.1.3 -
Create Object
actionCreate a new object/module entry. See the documentationWritev0.3.5 -
Download Attachment
actionDownloads an attachment file from Zoho CRM, saves it in the temporary file system and exports the file path for use in a future step.Writev0.2.4 -
Get Object
actionGets record data given its id.Read-onlyv0.2.3 -
List Attachments
actionGets the list of attachments for a record in Zoho CRM. Use List Modules to find themoduleAPI name and List Objects to find therecordId. Results are paginated 200 per page (pageis 0-indexed). See the documentationRead-onlyv0.0.3 -
List Fields
actionGets the field metadata for the specified moduleRead-onlyv0.2.3 -
List Modules
actionRetrieves a list of all the modules available in your CRM account.Read-onlyv0.0.4 -
List Objects
actionGets the list of available records from a module.Read-onlyv0.2.3 -
Search Objects
actionRetrieves the records that match your search criteria.Read-onlyv0.2.3 -
Update Object
actionUpdates existing entities in the module. See the documentationWritev0.3.5 -
Upload Attachment
actionUploads an attachment file to Zoho CRM from a URL or file path. See the documentationWritev0.1.4 -
Upsert Records
actionInserts new records or updates existing ones based on duplicate check field values. See the documentationWritev0.0.3
EVENTS
Zoho CRM triggers
Event sources your backend can deploy for users and receive through a webhook.
-
New Contact (Instant)
triggerEmits an event each time a new contact is created in Zoho CRMv0.0.11 -
New Event (Instant)
triggerEmit new custom events from Zoho CRMv0.0.16 -
New Lead (Instant)
triggerEmits an event each time a new lead is created in Zoho CRMv0.0.11 -
New Module Entry (Instant)
triggerEmit new events each time a new module/record is created in Zoho CRMv0.0.15 -
New or Updated Contact (Instant)
triggerEmits an event each time a new contact is created or updated in Zoho CRMv0.0.11 -
New or Updated Lead (Instant)
triggerEmits an event each time a new lead is created or updated in Zoho CRMv0.0.11 -
New or Updated Module Entry (Instant)
triggerEmits an event each time a module/record is created or edited in Zoho CRMv0.0.14 -
New User
triggerEmits an event each time a new user is created in Zoho CRMv0.0.11 -
Updated Module Entry (Instant)
triggerEmits an event each time a new module/record is updated in Zoho CRMv0.0.14
MULTI-APP
Use Zoho CRM with other popular apps
Most products don't stop at one integration. Pair Zoho CRM with the other apps your users rely on, and ship use cases that span both.
- App slug
- zoho_crm
- Authentication
- OAuth
- Categories
- CRM
- Actions
- 12
- Triggers
- 9
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Zoho CRM OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- ZohoCRM.settings.all
- ZohoCRM.users.all
- ZohoCRM.org.all
- ZohoCRM.modules.all
- ZohoCRM.bulk.all
- ZohoCRM.notifications.read
- ZohoCRM.notifications.create
- ZohoCRM.notifications.update
- ZohoCRM.notifications.delete
- ZohoCRM.coql.READ
- ZohoCRM.functions.execute.READ
- ZohoCRM.functions.execute.CREATE
- ZohoCRM.templates.email.READ
- ZohoCRM.templates.inventory.READ
- ZohoCRM.signals.ALL