# Connect Reverse ETL Source to Zoho

This guide takes you through the steps to connect a Reverse ETL source to the Zoho destination.

## Set up connection

{{< warning >}}
**The Reverse ETL feature supports only source-driven pipeline configuration.**

Make sure you have [set up a RETL source]({{< ref "sources/reverse-etl/_index.md" >}}) and connected it to your Zoho destination before following the below steps.
{{< /warning >}}

1. [Confirm the connection settings]({{< ref "destinations/reverse-etl-destinations/zoho/setup-guide.md#connection-settings" >}}) for Zoho destination and click **Continue**.
2. In the **Where do you want to sync data to?** section, select the **Object** from the dropdown.

{{< image src="images/reverse-etl-destinations/zoho-object-type.webp" >}}

3. Set the [Sync mode]({{< ref "data-pipelines/reverse-etl/developer-guides/sync-modes.md" >}}) to specify how RudderStack should sync the data to Zoho.
4. In **Choose identifier**, specify the warehouse column that RudderStack uses to identify your records.
5. Map your warehouse columns to specific Zoho fields using the **Map fields** setting.

{{< image src="images/reverse-etl-destinations/zoho-identifier-map-fields.webp" >}}

{{< info >}}
Only the searchable fields of a module are visible under the **Destination fields**. Refer [FAQ](#why-am-i-getting-this-invalid_query-the-field-is-not-available-for-search-error-while-deleting-my-records) for more information on making the module fields searchable.
{{< /info >}}

## Supported APIs

RudderStack uses the following Zoho APIs to sync data from your Reverse ETL sources:
- [Upsert Records](https://www.zoho.com/crm/developer/docs/api/v6/upsert-records.html)
- [Delete Records](https://www.zoho.com/crm/developer/docs/api/v6/delete-records.html)

## Next steps

- [Configure advanced settings for Zoho destination]({{< ref "destinations/reverse-etl-destinations/zoho/configuration-settings.md" >}})

## FAQ

#### Why can't I add a Reverse ETL source from the destination page?

The Reverse ETL feature supports only source-driven pipeline configuration. It means that you must configure a Reverse ETL source in RudderStack and then connect it to a new or existing destination. Note that this destination should not be connected to any other source.

See [Reverse ETL FAQ]({{< ref "data-pipelines/reverse-etl/developer-guides/faq.md" >}}) for more information.

#### Why am I getting an "INVALID_QUERY, the field is not available for search" error while deleting my records?

You can encounter this error if the [OAuth account used for authentication]({{< ref "destinations/reverse-etl-destinations/zoho/setup-guide.md#connection-settings" >}}) does not have the required read-write permissions for the particular custom field you are trying to delete. To verify:

1. Log in to your [Zoho CRM](https://www.zoho.com/crm/login.html) account.
2. Click **Setup** > **Modules and fields**.
{{< image src="images/reverse-etl-destinations/zoho-settings.webp" >}}
4. Select the required module and click the **Fields** tab.
6. Click **Field permissions**.
7. Choose **Read and Write** for that particular field and click **Save**.

<br />
