# Zoho CRM — CRM API: gotchas

> Canonical URL: https://developers.apideck.com/apis/crm/zoho-crm/gotchas

## GET /crm/companies

Zoho CRM's `info.count` in list responses is a per-page count only, not a cross-page total. `meta.total_count` will not appear.

## POST /crm/companies

`parent_id` sets the account's Parent Account at creation. An empty string is treated
as omitted, and the account is created without a parent.

If `parent_id` names an account that does not exist, Zoho rejects the entire create
and no company is created.

## PATCH /crm/companies/{id}

`parent_id` sets, changes or removes the account's Parent Account. Send an account id
to set or change the parent, `null` to remove it, and omit the field to leave the
current parent untouched. An empty string is treated as omitted, not as a request to
remove the parent.

An update that sends only `parent_id: null` returns an error, because no fields reach
Zoho. Send `parent_id: null` together with another field to remove the parent.

If `parent_id` names an account that does not exist, Zoho rejects the entire update.

Zoho does not guard the hierarchy: it accepts an account as its own parent, and two
accounts as each other's parent. Check the target before setting a parent if loops
matter to you.

## GET /crm/contacts

When using the phone_number filter for contacts in Zoho CRM, the filter does not work with numbers containing dashes (e.g., 989-989-989) or their URL-encoded equivalents (e.g., 989%2D989%2D989). It only works with continuous digits (e.g., 9898989898).
## GET /crm/contacts

Zoho CRM's `info.count` in list responses is a per-page count only, not a cross-page total. `meta.total_count` will not appear.

## GET /crm/opportunities

Zoho CRM's `info.count` in list responses is a per-page count only, not a cross-page total. `meta.total_count` will not appear.

## GET /crm/leads

When using the phone_number filter for leads in Zoho CRM, the filter does not work with numbers containing dashes or plus (e.g., +989-989-989) or their URL-encoded equivalents (e.g., %2B989%2D989%2D989). It only works with continuous digits (e.g., 9898989898).
## GET /crm/leads

Zoho CRM's `info.count` in list responses is a per-page count only, not a cross-page total. `meta.total_count` will not appear.

## GET /crm/notes

Zoho CRM's `info.count` in list responses is a per-page count only, not a cross-page total. `meta.total_count` will not appear.

## GET /crm/users

Zoho CRM's `info.count` in list responses is a per-page count only, not a cross-page total. `meta.total_count` will not appear.

## GET /crm/activities

Zoho CRM's `info.count` in list responses is a per-page count only, not a cross-page total. `meta.total_count` will not appear.
Zoho CRM activities are backed entirely by the Events module (`/v2.1/Events`), so every activity is returned with `type: meeting` regardless of how it was created. Other activity types (`note`, `call`, `task`, `email`) are not represented. To read notes, use the dedicated `/crm/notes` resource (mapped to Zoho's `/v5/Notes`).

## POST /crm/activities

Zoho CRM maps all activities to the Events module (`POST /v2.1/Events`) regardless of the `type` value. An activity created with `type: note`, `call`, `task`, or `email` is still stored as a Zoho Event (a calendar entry), and reads of `/crm/activities` return only Events. To log a note against a record, use the dedicated `/crm/notes` resource (mapped to Zoho's `/v5/Notes`) instead.

[API reference](https://developers.apideck.com/apis/crm/reference.md) · [Coverage matrix](https://developers.apideck.com/apis/crm/coverage)
