# Send leads to Zoho CRM > A chat lead becomes a record in the Zoho module you choose, in your own data centre. Source: https://welcomeai.dev/docs/zoho Category: Destinations Updated: 2026-09-11 --- ## The data centre comes first Zoho runs **separate estates** and they do not share accounts. An account created in Europe lives on `zohoapis.eu` and does not exist on `zohoapis.com`; a refresh token minted at `accounts.zoho.eu` is refused at `accounts.zoho.com`. This is asked for on the connect screen rather than guessed, because guessing it wrong produces an authentication error that reads exactly like a bad credential -- and sends people to rotate a token that was fine all along. Pick the one your account is in: `.com`, `.eu`, `.in`, `.com.au`, `.jp`, `.ca`, `.com.cn` or `.sa`. ## What you need A **Self Client** in Zoho's API console, and a refresh token from it, for three scopes: - `ZohoCRM.modules.ALL` -- create the record. - `ZohoCRM.settings.modules.READ` -- list the modules, so the route can point at one. - `ZohoCRM.settings.fields.READ` -- read a module's fields, so the mapper offers what exists. From that you get a **client id**, a **client secret** and a **refresh token**. The refresh token does not expire on its own; every call trades it for an short-lived token that lasts about an hour. ## Connect and route 1. In **Destinations**, connect Zoho CRM with the four values. 2. Pick the **module**. Every module your account can create in is there, standard and custom. 3. Create a **route** -- which leads it takes, and which module they land in. 4. **Map the fields**, read from that module's own setup. ## Picklists, and the 201 that is not a success A picklist value is sent only when it matches one the module has. A near miss is left out and named in the dispatch log, because Zoho refuses the **whole record** over one bad value. Zoho also answers `201 Created` with a **per-record status inside the body**: a refused record arrives inside a response that looks successful. We read that status, so a refusal is a failed dispatch with Zoho's own reason on it rather than a success that never happened. **Leads and Contacts need a last name.** It is filled in from what the lead carries when your mapping leaves it out. ## What it does not do It creates. It does not deduplicate against what is already in the module, and it does not assign an owner -- an owner is a Zoho user id, and a lead answer is a string.