Plataforma
Características
Estudio de agentes
Crea y personalice su agente rápidamente
Motor autónomo
Utilice LLMs para orientar conversaciones y tareas
Bases de conocimiento
Entrena tu bot con fuentes de conocimiento personalizadas
Traspaso humano
Gestionar las conversaciones con participación humana
Tablas
Almacenar y gestionar los datos de las conversaciones
Canales
Whatsapp Emblema
WhatsApp
Instagram Emblema
Instagram
Facebook Messenger logo
Messenger
Logotipo de Slack
Slack
Todos los canales
Integraciones
Logotipo de Hubspot
HubSpot
Logotipo de Notion
Notion
Logotipo de Jira
Jira
Calendly logotipo
Calendly
Todas las integraciones
LLM Proveedores
Logotipo OpenAI
OpenAI
Logotipo Anthropic
Anthropic
Logotipo Groq
Groq
Logotipo de HuggingFace
Hugging Face
Todos LLMs
Soluciones
Para
Empresa
Automatice los flujos de trabajo de producción de misión crítica
Agencias
Proporcionar servicios de agente sofisticados
Desarrolladores
Explore una sólida API para el desarrollo de agentes
Historias de clientes
Descubra de la mano de clientes de éxito cómo Botpress está transformando los negocios en todo el mundo.
Por sector
Comercio electrónico
Educación
Finanzas
Hostelería
Todos los sectores
Por Departamento
Ventas
Ingeniería
Producto
ITSM
Todos los departamentos
Por caso de uso
Automatización del flujo de trabajo
Gestión de entradas
Asistente de compras
Copiloto de productos
Todos los casos de uso
Recursos
Esencial
Academy
Aprenda a construir a través de cursos curados
Biblioteca
Recursos para mejorar sus flujos de trabajo de IA
Blog
Perspectivas y actualizaciones sobre Botpress y agentes de IA
edificio
Discord
Únete a miles de compañeros y comparte ideas
Docs
Guías y referencias completas
API
Material de referencia para uso con sistemas externos
Eventos
Reuniones mensuales para desarrolladores y curiosos de la tecnología
Vídeos
Tutoriales, demostraciones y guías de productos
Registro de cambios
Mantente al día de las últimas actualizaciones Botpress
Socios
Hágase socio
Únase a nuestra red de expertos certificados
Contratar a un experto
Conectar con socios y asesores
Docs
Empresa
Precios
Inicia sesión
ContáctanosRegístrate
volver a Hub

Zoho

v3.1.1
Instalar en su espacio de trabajo
Mantenido por Botpress Team
  # Botpress Integration: Zoho CRM

## **Zoho CRM Integration Guide**

For further details, refer to the [**Zoho CRM API documentation**](https://www.zoho.com/crm/developer/docs/api/v7/).

## **Overview**

This Botpress integration allows seamless interaction with **Zoho CRM**. It enables users to manage contacts, deals, appointments, and files directly through their chatbot.

## **Features**

- **Record Management:** Create, retrieve, update, delete, and search records.
- **Appointments Management:** Create, update, retrieve, and delete appointments.
- **File Management:** Upload and retrieve files.
- **Emails:** Send emails and associate them with records.
- **Organization & User Management:** Retrieve organization details and user information.

## Register Your Application

Before making any API calls using the Zoho Botpress Integration, you must register your application with **Zoho CRM**.

### **[Loom video walk through setting up the OAuth configuration.](https://www.loom.com/share/41c2811c047a48cbb08a2d1b0dc98f69?sid=8cb4d496-2cca-415d-be1d-536a87c73a3a)**

### Steps to Register

1. **Go to the [Zoho Developer Console](https://accounts.zoho.com/developerconsole).**
2. Click **Add Client**.
3. Choose the client type: **Self Client**.
4. Click the **Generate Code** tab and enter the following scopes:

   ```
   ZohoCRM.modules.ALL,ZohoCRM.org.ALL,ZohoCRM.users.ALL,ZohoCRM.settings.ALL,ZohoCRM.send_mail.all.CREATE,ZohoCRM.files.CREATE,ZohoCRM.files.READ
   ```

5. Set the **time duration** to **10 minutes**.
6. Provide a scope description (This is not vital to the registration).
7. Click **Create**, select your CRM, and click **Create** again.
8. Download your **credentials file**.

### Generate Refresh Token

Now, execute the following **cURL** command to obtain a refresh token. Ensure you use the **correct region URL** for OAuth authentication.

#### **Zoho Accounts Domains:**

| Region            | Accounts URL                    |
| ----------------- | ------------------------------- |
| US                | `https://accounts.zoho.com`     |
| AU                | `https://accounts.zoho.com.au`  |
| EU                | `https://accounts.zoho.eu`      |
| IN                | `https://accounts.zoho.in`      |
| CN                | `https://accounts.zoho.com.cn`  |
| JP                | `https://accounts.zoho.jp`      |
| SA (Saudi Arabia) | `https://accounts.zoho.sa`      |
| CA (Canada)       | `https://accounts.zohocloud.ca` |

### Execute cURL Request

Replace the placeholders (`CLIENT_ID`, `CLIENT_SECRET`, and `AUTHORIZATION_CODE`) with your actual values before executing the request.

```sh
curl --request POST \
  --url 'https://YOUR_REGION_ACCOUNT_URL/oauth/v2/token' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data 'grant_type=authorization_code' \
  --data 'client_id=YOUR_CLIENT_ID' \
  --data 'client_secret=YOUR_CLIENT_SECRET' \
  --data 'redirect_uri=YOUR_REDIRECT_URI' \
  --data 'code=AUTHORIZATION_CODE'
```

### Expected Response

If the request is successful, you should receive a response similar to the following:

```json
{
  "access_token": "{access_token}",
  "refresh_token": "{refresh_token}",
  "api_domain": "https://www.zohoapis.com",
  "token_type": "Bearer",
  "expires_in": 3600
}
```

# Define the Zoho OAuth token endpoint based on your region

$uri = "https://YOUR_REGION_ACCOUNT_URL/oauth/v2/token"

# Define the request body with required parameters

$body = @{
grant_type = "authorization_code"
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
redirect_uri = "YOUR_REDIRECT_URI"
code = "AUTHORIZATION_CODE"
}

### Generate Refresh Token using PowerShell (Windows Users)

⚠️ Use this PowerShell command if you're on Windows. Do NOT use cURL—this is for PowerShell only! ⚠️

#### Define the Zoho OAuth token endpoint based on your region

$uri = "https://YOUR_REGION_ACCOUNT_URL/oauth/v2/token"

# Define the request body with required parameters

$body = @{
grant_type = "authorization_code"
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
redirect_uri = "YOUR_REDIRECT_URI"
code = "AUTHORIZATION_CODE"
}

##### Convert body to URL-encoded form data

```
$body = $body | ForEach-Object { "$( $_.Key )=$( $_.Value )" } -join "&"
```

#### Send the POST request using Invoke-RestMethod

```
$response = Invoke-RestMethod -Uri $uri -Method Post -ContentType "application/x-www-form-urlencoded" -Body $body
```

#### Output the response

```
$response
```

## Configure Zoho Botpress Integration

Once you have the necessary credentials, navigate to the **Zoho Botpress Integration** configuration page and enter the following details:

- **Client ID**
- **Client Secret**
- **Refresh Token**
- **Region**

This completes the registration and integration process for **Zoho Botpress**. You are now ready to start making authorized API calls.

---

For more details, refer to the [Zoho API Documentation](https://www.zoho.com/crm/developer/docs/).

---

## API Functions & Usage

Below are the available actions in this integration:

### 1️⃣ **Record Management**

#### **Insert Record**

- **Method:** `POST /crm/v7/{module}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "data": [{ "Last_Name": "Daly", "First_name": "Paul", "Email": "[email protected]" }]
  }
  ```
- **Output:**
  ```json
  {
    "success": true,
    "message": "Request successful",
    "data": {
      "code": "SUCCESS",
      "message": "Record added",
      "status": "success",
      "details": {
        "id": "27234000000176001",
        "Created_By": "Matea Vasileski",
        "Modified_By": "Matea Vasileski",
        "Created_Time": "2025-02-26T18:39:39-05:00",
        "Modified_Time": "2025-02-26T18:39:39-05:00"
      }
    }
  }
  ```

#### **Get Records**

- **Method:** `GET /crm/v7/{module}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "params": { "fields": "Email" }
  }
  ```
- **Output:**
  ```json
  {
    "success": true,
    "message": "Request successful",
    "data": {
      "id": "27234000000157008",
      "Full_Name": "Jim Mulani",
      "First_Name": "Jim",
      "Last_Name": "Mulani",
      "Email": "[email protected]",
      "Company": "envy",
      "Owner": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Created_By": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Modified_By": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Created_Time": "2025-02-23T21:51:21-05:00",
      "Modified_Time": "2025-02-26T18:19:10-05:00",
      "Lead_Status": null,
      "Lead_Source": null,
      "Record_Status": "Available"
    }
  }
  ```

#### **Get Record By ID**

- **Method:** `GET /crm/v7/{module}/{recordId}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "recordId": "27234000000157008"
  }
  ```
- **Output:**
  ```json
  {
    "success": true,
    "message": "Request successful",
    "data": {
      "id": "27234000000157008",
      "Full_Name": "Jim Mulani",
      "First_Name": "Jim",
      "Last_Name": "Mulani",
      "Email": "[email protected]",
      "Company": "envy",
      "Owner": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Created_By": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Modified_By": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Created_Time": "2025-02-23T21:51:21-05:00",
      "Modified_Time": "2025-02-26T18:19:10-05:00",
      "Lead_Status": null,
      "Lead_Source": null,
      "Record_Status": "Available"
    }
  }
  ```

#### **Update Record**

- **Method:** `PUT /crm/v7/{module}/{recordId}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "recordId": "27234000000162001",
    "data": [{ "Email": "[email protected]" }]
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Record updated",
    "status": "success",
    "details": {
      "id": "27234000000157008",
      "Created_By": "Matea Vasileski",
      "Modified_By": "Matea Vasileski",
      "Created_Time": "2025-02-23T21:51:21-05:00",
      "Modified_Time": "2025-02-26T18:55:37-05:00"
    }
  }
}
```

#### **Delete Record**

- **Method:** `DELETE /crm/v7/{module}/{recordId}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "recordId": "27234000000162008"
  }
  ```
- **Output:**
  ```json
  {
    "success": true,
    "message": "Request successful",
    "data": {
      "code": "SUCCESS",
      "message": "Record deleted",
      "status": "success",
      "details": {
        "id": "27234000000157008"
      }
    }
  }
  ```

#### **Search Records**

- **Method:** `GET /crm/v7/{module}/search`
- **Input:**
  ```json
  {
    "module": "Leads",
    "criteria": "(First_Name:equals:John)"
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "records": [
      {
        "id": "27234000000176001",
        "Full_Name": "Daly",
        "Email": "[email protected]",
        "Created_Time": "2025-02-26T18:39:39-05:00",
        "Modified_Time": "2025-02-26T18:39:39-05:00",
        "Owner": {
          "name": "Matea Vasileski",
          "email": "[email protected]"
        },
        "Record_Status": "Available"
      },
      {
        "id": "27234000000174002",
        "Full_Name": "Daly",
        "Email": "[email protected]",
        "Created_Time": "2025-02-26T18:17:10-05:00",
        "Modified_Time": "2025-02-26T18:17:10-05:00",
        "Owner": {
          "name": "Matea Vasileski",
          "email": "[email protected]"
        },
        "Record_Status": "Available"
      }
    ],
    "pagination": {
      "per_page": 200,
      "count": 2,
      "page": 1,
      "sort_by": "id",
      "sort_order": "desc",
      "more_records": false
    }
  }
}
```

---

### 2️⃣ **Appointments Management**

#### **Create Appointment**

- **Method:** `POST /crm/v7/Appointments__s`
- **Input:**
  ```json
  [
    {
      "Appointment_Name": "Matea - Mowing Service",
      "Appointment_For": {
        "module": {
          "api_name": "Contacts"
        },
        "name": "k m",
        "id": "27234000000163029"
      },
      "Service_Name": {
        "name": "mow",
        "id": "27234000000168178"
      },
      "Appointment_Start_Time": "2025-02-24T19:33:00Z",
      "Owner": "27234000000095001",
      "Location": "Business Address",
      "Address": "Business Address",
      "Additional_Information": "",
      "Remind_At": [
        {
          "unit": 30,
          "period": "minutes"
        }
      ],
      "Price": "$1.00"
    }
  ]
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Record added",
    "status": "success",
    "details": {
      "id": "27234000000175008",
      "Created_By": "Matea Vasileski",
      "Modified_By": "Matea Vasileski",
      "Created_Time": "2025-02-26T19:21:59-05:00",
      "Modified_Time": "2025-02-26T19:21:59-05:00"
    }
  }
}
```

#### **Get Appointments**

- **Method:** `GET /crm/v7/Appointments__s`
- **Input:**
  ```json
  {
    "params": { "fields": "Service_Name" }
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "records": [
      {
        "id": "27234000000159008",
        "Service_Name": {
          "name": "mow",
          "id": "27234000000168178"
        }
      }
    ],
    "pagination": {
      "per_page": 200,
      "count": 1,
      "page": 1,
      "sort_by": "id",
      "sort_order": "desc",
      "more_records": false
    }
  }
}
```

#### **Get Appointment By ID**

- **Method:** `GET /crm/v7/Appointments__s/{appointmentId}`
- **Input:**
  ```json
  {
    "appointmentId": "123456"
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "appointment": {
      "id": "27234000000175008",
      "Appointment_Name": "Matea - Mowing Service",
      "Service_Name": {
        "name": "mow",
        "id": "27234000000168178"
      },
      "Appointment_For": {
        "name": "k m",
        "id": "27234000000163029",
        "module": "Contacts"
      },
      "Owner": {
        "name": "Matea Vasileski",
        "email": "[email protected]"
      },
      "Created_By": {
        "name": "Matea Vasileski",
        "email": "[email protected]"
      },
      "Modified_By": {
        "name": "Matea Vasileski",
        "email": "[email protected]"
      },
      "Appointment_Start_Time": "2025-02-24T14:33:00-05:00",
      "Appointment_End_Time": "2025-02-24T15:03:00-05:00",
      "Duration": 30,
      "Status": "Overdue",
      "Location": "Business Address",
      "Remind_At": [
        {
          "unit": 30,
          "period": "minutes"
        }
      ],
      "Created_Time": "2025-02-26T19:21:59-05:00",
      "Modified_Time": "2025-02-26T19:21:59-05:00",
      "Record_Status": "Available"
    }
  }
}
```

#### **Update Appointment**

- **Method:** `PUT /crm/v7/Appointments__s/{appointmentId}`
- **Input:**
  ```json
  {
    "appointmentId": "27234000000159008",
    "data": {
      "appointments": [
        {
          "Appointment_Name": "Update appt",
          "Appointment_For": {
            "module": "Contacts",
            "name": "k m",
            "id": "27234000000163029"
          },
          "Service_Name": {
            "name": "mow",
            "id": "27234000000168178"
          },
          "Appointment_Start_Time": "2025-02-24T19:33:00Z",
          "Owner": "27234000000095001",
          "Location": "Business Address",
          "Address": "Business Address",
          "Additional_Information": "",
          "Remind_At": [
            {
              "unit": 30,
              "period": "minutes"
            }
          ],
          "Price": "$1.00"
        }
      ]
    }
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Record updated",
    "status": "success",
    "details": {
      "id": "27234000000159008",
      "Created_By": "Matea Vasileski",
      "Modified_By": "Matea Vasileski",
      "Created_Time": "2025-02-24T19:44:23-05:00",
      "Modified_Time": "2025-02-26T19:48:20-05:00"
    }
  }
}
```

#### **Delete Appointment**

- **Method:** `DELETE /crm/v7/Appointments__s/{appointmentId}`
- **Input:**
  ```json
  {
    "appointmentId": "123456"
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Record deleted",
    "status": "success",
    "details": {
      "id": "27234000000159008"
    }
  }
}
```

---

### 3️⃣ **File Management**

#### **Upload File**

- **Method:** `POST /crm/v7/files`
- **Input:**

```json
{
  "fileUrl": "https://example.com/file.pdf"
}
```

- **Output:**

```json
{
  "success": true,
  "message": "File uploaded successfully",
  "data": {
    "code": "SUCCESS",
    "message": "File uploaded successfully",
    "status": "success",
    "details": {
      "name": "20250226050635-LO9N1PT0.webp",
      "id": "36c38a1979b316686084c58303b1b6cb654eb04f0f1038ed0a8fdf8a6ff28598dceae7f8711509bfd80b56bf8cd4dbba"
    }
  }
}
```

#### **Get File**

- **Method:** `GET /crm/v7/files/{fileId}`
- **Input:**

```json
{
  "fileId": "dcc53e79cfef0810414e8335b0e11d8882a51116f390194f400828673ca4a59492a22be84db32aa8425d0859862491f9"
}
```

- **Output:**

```json
{
    "success":true,
    "message":"Request successful",
    "data": BinaryFileData
}
```

---

### 4️⃣ **Organization & User Management**

#### **Get Organization Details**

- **Method:** `GET /crm/v7/org`
- **Input:**
  No input is required.

- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "organization": {
      "id": "27234000000000684",
      "company_name": "Envyro",
      "domain_name": "org110000680144",
      "primary_email": "[email protected]",
      "currency": "Canadian Dollar - CAD",
      "currency_symbol": "$",
      "time_zone": "America/Toronto",
      "country_code": "US",
      "license_details": {
        "paid": true,
        "paid_type": "professional",
        "paid_expiry": "2025-03-23T20:00:00-04:00",
        "users_license_purchased": 1
      },
      "created_time": "2024-09-11T11:04:19-04:00"
    }
  }
}
```

#### **Get Users**

- **Method:** `GET /crm/v7/users`
- **Input:**
  ```json
  {
    "params": { "status": "active" }
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "users": [
      {
        "id": "27234000000095001",
        "full_name": "Matea Vasileski",
        "email": "[email protected]",
        "role": "CEO",
        "profile": "Administrator",
        "status": "active",
        "country": "Canada",
        "state": "Ontario",
        "time_zone": "America/Toronto",
        "created_time": "2024-09-11T11:04:19-04:00",
        "modified_time": "2024-09-11T11:04:19-04:00"
      },
      {
        "id": "27234000000103062",
        "full_name": "Milos Arsik",
        "email": "[email protected]",
        "role": "CEO",
        "profile": "Administrator",
        "status": "closed",
        "time_zone": "America/Toronto",
        "created_time": "2024-09-16T00:36:14-04:00",
        "modified_time": "2024-11-01T12:18:54-04:00"
      }
    ],
    "pagination": {
      "per_page": 200,
      "count": 2,
      "page": 1,
      "more_records": false
    }
  }
}
```

---

### 5️⃣ **Emails**

#### **Send Email**

- **Method:** `POST /crm/v7/emails`
- **Input:**
  ```json
  {
    "module": "Leads",
    "recordId": "123456",
    "data": [
      {
        "from": {
          "user_name": "Matea Vasileski",
          "email": "[email protected]"
        },
        "to": [
          {
            "user_name": "user1",
            "email": "[email protected]"
          }
        ],
        "cc": [],
        "bcc": [],
        "subject": "Important Update",
        "content": "Here is an important update for you.",
        "mail_format": "html"
      }
    ]
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Your mail has been sent successfully.",
    "status": "success",
    "details": {
      "message_id": "2e660cab6382a85766b68e77778eadf168f923354a69b362ace2e52ce0b934ba"
    }
  }
}
```

---

Crea Mejor con Botpress

Cree increíbles experiencias con agentes de IA.

Empieza - es gratis
Aprende más en Botpress Academy

Crea Agentes de AI mejor y más rápido con nuestra colección curada de cursos, guías y tutoriales.

Contratar a un experto

Póngase en contacto con nuestros desarrolladores certificados para encontrar un constructor experto que se adapte a sus necesidades.

Todos los sistemas operativos
SOC 2
Certificado
GDPR
Conforme
© 2025
Plataforma
Precios
Estudio de agentes
Motor autónomo
Bases de conocimiento
Traspaso humano
Tablas
Hub
Integraciones
Canales
LLMs
Recursos
Hable con Ventas
Documentación
Contratar a un experto
Vídeos
Historias de clientes
Referencia API
Blog
Estado
v12 Recursos
Comunidad
Apoyo comunitario
Hágase socio
Conviértete en embajador
Afiliarse
Empresa
Acerca de
Carreras profesionales
Noticias y prensa
Legal
Privacidad