PickSkill
← Back

zoho-crm

Guides Zoho CRM tool usage with correct module routing for leads, contacts, deals, and tasks. Use when interacting with Zoho CRM tools. Triggers include "zoho", "leads", "contacts", "deals", "tasks", "overdue", "CRM".

SKILL.md
Rendered from GitHub raw
View raw ↗

name: zoho-crm description: Guides Zoho CRM tool usage with correct module routing for leads, contacts, deals, and tasks. Use when interacting with Zoho CRM tools. Triggers include "zoho", "leads", "contacts", "deals", "tasks", "overdue", "CRM". metadata: version: 1.0.0 category: operations tags: - zoho - crm - leads - contacts - deals - tasks - mcp author: name: NimbleBrain url: https://www.nimblebrain.ai

Zoho CRM Integration

Critical: Tasks Are a Separate Module

Zoho CRM has separate modules for different record types:

Module Purpose Key Fields
Leads Unqualified prospects Lead_Status, Email, Phone
Contacts Qualified individuals Account_Name, Email, Phone
Deals Sales opportunities Stage, Amount, Closing_Date
Accounts Companies/organizations Account_Name, Industry
Tasks Action items with due dates Subject, Due_Date, Status, Priority

Tasks are NOT fields on Leads. They are standalone records that can be associated with Leads, Contacts, Deals, or Accounts via the What_Id field.

Quick Start: Finding Overdue Tasks

When user asks about "overdue" items, they almost always mean Tasks:

User: "What are the overdue tasks?" or "What leads are overdue?"

Step 1: ZOHOCRM_SEARCH_RECORDS(module="Tasks", criteria="(Due_Date:less_than:TODAY)")

Done. One call to the Tasks module with a date filter.

Situational Handling

Situation: User asks about "overdue" anything

Trigger phrases: "overdue tasks", "overdue leads", "what's past due", "follow-ups due", "what do I need to do"

Required action: Query the Tasks module, NOT Leads.

ZOHOCRM_SEARCH_RECORDS(
  module="Tasks",
  criteria="(Due_Date:less_than:TODAY)"
)

Optional filters:

  • By status: (Due_Date:less_than:TODAY)and(Status:equals:Not Started)
  • By priority: (Due_Date:less_than:TODAY)and(Priority:equals:Highest)

Situation: User asks about leads/contacts/deals

Trigger phrases: "show me leads", "list contacts", "what deals are closing"

Required action: Query the appropriate module directly.

# List leads
ZOHOCRM_SEARCH_RECORDS(module="Leads")

# Leads by status
ZOHOCRM_SEARCH_RECORDS(module="Leads", criteria="(Lead_Status:equals:Contacted)")

# Deals closing this month
ZOHOCRM_SEARCH_RECORDS(module="Deals", criteria="(Closing_Date:between:2026-02-01,2026-02-28)")

Situation: User asks to create a task

Required action: Use the Tasks module with required fields.

ZOHOCRM_CREATE_RECORD(
  module="Tasks",
  data={
    "Subject": "Follow up with lead",
    "Due_Date": "2026-02-10",
    "Status": "Not Started",
    "Priority": "High"
  }
)

To associate with a Lead/Contact/Deal, include What_Id:

data={
  "Subject": "Follow up",
  "Due_Date": "2026-02-10",
  "What_Id": "7170963000000598816"  # Lead/Contact/Deal ID
}

Situation: User asks about a specific lead's tasks

Required action: Search Tasks filtered by the associated record.

Step 1: Find the Lead ID (if not known)
ZOHOCRM_SEARCH_RECORDS(module="Leads", criteria="(Full_Name:contains:John)")

Step 2: Search Tasks associated with that Lead
ZOHOCRM_SEARCH_RECORDS(module="Tasks", criteria="(What_Id:equals:<lead_id>)")

Situation: User asks to update a task

Required action: Get task ID first, then update.

Step 1: ZOHOCRM_SEARCH_RECORDS(module="Tasks", criteria="(Subject:contains:follow up)")
Step 2: ZOHOCRM_UPDATE_RECORD(module="Tasks", id=<task_id>, data={"Status": "Completed"})

Module Field Reference

Tasks Module

Field Type Values
Subject String Task title
Due_Date Date YYYY-MM-DD format
Status Picklist Not Started, Deferred, In Progress, Completed, Waiting for input
Priority Picklist Highest, High, Normal, Low, Lowest
What_Id Lookup Associated record ID (Lead, Contact, Deal)
Owner Lookup Assigned user

Leads Module

Field Type Values
First_Name String
Last_Name String
Full_Name String Auto-generated
Email Email
Lead_Status Picklist Not Contacted, Contacted, Working, Qualified, etc.
Lead_Source Picklist Advertisement, Web, Referral, etc.

Criteria Syntax

Zoho uses COQL-style criteria:

(Field_Name:operator:value)
(Field1:equals:value1)and(Field2:contains:value2)
(Field1:equals:value1)or(Field2:equals:value2)
Operator Usage Example
equals Exact match (Status:equals:Completed)
contains Partial match (Subject:contains:follow)
starts_with Prefix match (Full_Name:starts_with:John)
less_than Date/number comparison (Due_Date:less_than:2026-02-01)
greater_than Date/number comparison (Amount:greater_than:10000)
between Range (Due_Date:between:2026-02-01,2026-02-28)

Special value: TODAY - use for current date comparisons.

Error Recovery

Error Cause Fix
"Module not found" Wrong module name Use exact names: Leads, Contacts, Deals, Accounts, Tasks
"Invalid criteria" Malformed COQL Check parentheses and operator syntax
"Field not found" Wrong field name Use API names (Full_Name, not "Full Name")
"No records found" Query too restrictive Broaden criteria, check spelling

Anti-Patterns

Wrong Right
Search Leads for "overdue" items Search Tasks module with Due_Date filter
Look for "Next_Action" field on Leads Tasks are a separate module, not a field
Ask user for field names Check available fields via ZOHOCRM_GET_FIELDS
Assume Tasks are part of Leads Tasks are standalone records linked via What_Id
Use date strings like "today" Use literal dates (2026-02-05) or TODAY keyword

Common Queries

# All overdue tasks
ZOHOCRM_SEARCH_RECORDS(module="Tasks", criteria="(Due_Date:less_than:TODAY)")

# Overdue tasks not completed
ZOHOCRM_SEARCH_RECORDS(module="Tasks", criteria="(Due_Date:less_than:TODAY)and(Status:not_equal:Completed)")

# High priority tasks
ZOHOCRM_SEARCH_RECORDS(module="Tasks", criteria="(Priority:equals:High)")

# Tasks due this week
ZOHOCRM_SEARCH_RECORDS(module="Tasks", criteria="(Due_Date:between:2026-02-03,2026-02-09)")

# All leads with status "Contacted"
ZOHOCRM_SEARCH_RECORDS(module="Leads", criteria="(Lead_Status:equals:Contacted)")

# Deals closing this month
ZOHOCRM_SEARCH_RECORDS(module="Deals", criteria="(Closing_Date:between:2026-02-01,2026-02-28)")