> ## Documentation Index
> Fetch the complete documentation index at: https://docs.comforthub.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Zoho CRM

> The office's system of record: what it owns, what it tells the engine, and which fields stay behind

Zoho is where the office works. Every customer, account, lead, property and piece of equipment is typed or converted there, and the engine keeps a copy of every mirrored module in Supabase; the list is on [Sync rules by module](/reference/sync-rules-by-module). Which side wins for each kind of record is on [Who is the source of truth](/systems/who-is-the-source-of-truth).

## What Zoho tells us

Zoho sends the engine a notification for every create, edit and delete in a watched module. Each notification carries the module, the operation and the record's id, nothing else; the engine reads the record back from Zoho and applies it. The engine has no say in how long Zoho holds a notification before sending it. How the trip works, and why it never loops, is on [How sync works](/handbook/running/how-sync-works).

## What Zoho owns

| Zoho does                     | Meaning for us                                                                                                                                       |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| Holds the record locks        | A locked record is skipped by every push from our side; unlocking is the office's call                                                               |
| Sends the notifications above | The engine's only signal that something changed in the CRM                                                                                           |
| Issues the engine's login     | One shared token, refreshed by the engine itself; see [The Supabase backend](/systems/supabase-backend) for what happens when Zoho refuses a refresh |

Zoho does not hold quotes, stock lists, tasks, notes or app users. Those live only in Supabase; see [Names](/reference/names).

## Fields Zoho has that we do not carry

A mirrored module may declare a short list of fields the engine ignores on purpose. The lead's list holds the name halves a computed full name already covers, the record-lock block, the coordinates the imagery step writes itself, and Zoho's own activity and conversion stamps. A weekly check compares Zoho's field list with the mirror. A module with an ignore list fails the check the moment a field appears that is neither carried nor ignored; a module without one is reported, not failed. The check runs from the repository on GitHub and reads Zoho's field metadata only, never a record.

## Related

* [How sync works](/handbook/running/how-sync-works)
* [Sync rules by module](/reference/sync-rules-by-module)
* [The Supabase backend](/systems/supabase-backend)
* [Who is the source of truth](/systems/who-is-the-source-of-truth)
