플랫폼
특징
상담원 스튜디오
신속한 에이전트 구축 및 사용자 지정
자율 엔진
LLMs 사용하여 대화 및 작업 안내
지식 베이스
사용자 지정 지식 소스로 봇을 학습시키세요
테이블
대화 데이터 저장 및 관리
채널
Whatsapp 엠블럼
WhatsApp
Instagram 엠블럼
Instagram
Facebook Messenger 로고
Messenger
Slack 로고
Slack
모든 채널
통합
허브스팟 로고
HubSpot
Notion 로고
Notion
Jira 로고
Jira
Calendly 로고
Calendly
모든 통합
LLM 공급자
OpenAI 로고
OpenAI
Anthropic 로고
Anthropic
Groq 로고
Groq
허깅페이스 로고
Hugging Face
모두 LLMs
솔루션
For
엔터프라이즈
미션 크리티컬 프로덕션 워크플로우 자동화
대행사
정교한 상담원 서비스 제공
개발자
상담원 개발을 위한 강력한 API 살펴보기
고객 사례
성공적인 고객 사례를 통해 Botpress 이 전 세계 비즈니스를 어떻게 혁신하고 있는지 알아보세요.
산업별
전자 상거래
교육
금융
호스피탈리티
모든 산업
부서별
판매
엔지니어링
제품
ITSM
모든 부서
사용 사례별
쇼핑 도우미
리드 생성
직원 경험
티켓 관리
모든 사용 사례
자원
필수
Academy
선별된 강좌를 통해 빌드 배우기
라이브러리
AI 워크플로우를 개선하기 위한 리소스
블로그
Botpress 및 AI 에이전트에 대한 인사이트 및 업데이트
건물
디스코드
수천 명의 동료와 함께 아이디어를 공유하세요
문서
종합 가이드 및 참고 자료
API
외부 시스템과 함께 사용하기 위한 참고 자료
LLM 순위
모델 제공업체의 성능 및 비용 비교
영상
튜토리얼, 데모 및 제품 워크스루
변경 로그
최신 Botpress 업데이트에 대한 최신 정보
파트너
파트너가 되세요
인증된 전문가 네트워크에 가입하세요
전문가 고용하기
파트너 및 컨설턴트와 연결
문서
엔터프라이즈
가격정책
로그인
연락처가입하기
돌아가기 Hub

Zoho

v3.1.1
워크스페이스에 설치
관리: Botpress 팀
  # 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"
    }
  }
}
```

---

더 나은 구축 Botpress

놀라운 AI 상담원 경험을 만들어 보세요.

시작하세요 - 무료입니다
화살표 아이콘
자세한 내용은 다음에서 확인하세요. Botpress Academy

엄선된 교육 과정, 가이드 및 튜토리얼 컬렉션을 통해 AI 에이전트를 더 빠르고 효과적으로 구축하세요.

전문가 고용하기

인증된 개발자와 연결하여 필요에 맞는 전문 빌더를 찾아보세요.

모든 시스템 운영
SOC 2
인증
GDPR
규정 준수
© 2025
플랫폼
가격정책
상담원 스튜디오
자율 엔진
지식 베이스
테이블
허브
통합
채널
LLMs
자원
판매 부서와 대화하기
문서화
전문가 고용하기
영상
고객 사례
API 참조
블로그
상태
V12 자원
커뮤니티
커뮤니티 지원
파트너가 되세요
홍보대사 되기
제휴사 되기
회사
회사에 대해서
경력
뉴스 & 보도자료
법적
개인 정보 보호
© Botpress 2025