Zoho
Setup connector
The Zoho Desk connector provides comprehensive access to Zoho's customer service platform, enabling ticket management, agent administration, and file handling capabilities. This guide will walk you through setting up and configuring the Zoho Desk connector.
Zoho Desk is a customer service and support platform that helps teams manage customer inquiries, track tickets, and provide efficient support. The Zoho Desk connector allows Leena AI to automate ticket management, agent operations, and file handling seamlessly.
Overview
The Zoho Desk connector uses OAuth 2.0 authentication to securely connect with Zoho's customer service platform.
Prerequisites
Before setting up the Zoho Desk connector, ensure you have:
- Access to Zoho API Console (https://api-console.zoho.in/)
- Zoho Desk administrator privileges
- Ability to create OAuth 2.0 applications in Zoho
- Access to your Leena AI workspace with connector management permissions
Setting up the Zoho Desk Connector
Step 1: Access the Integrations Page
- Log in to your Leena AI workspace
- Navigate to Settings > Integrations
- Click on Add Connector
- Search for "Zoho Desk" and select it from the list
Step 2: Create OAuth 2.0 Application in Zoho
- Login to Zoho API Console: Go to https://api-console.zoho.in/
- Create OAuth Client:
- Click on Add Client button
- Choose Server based Applications
- Fill in the form fields:
- Client Name: Enter a descriptive name (e.g., "Leena AI Integration")
- Homepage URL: Enter your organization's URL
- Authorized Redirect URIs: Use the Redirect URI provided by Leena AI (from Step 3)
- Click the Create button
- Important: Note the Client ID and Client Secret that are displayed
Step 3: Configure Connection in Leena AI
The Zoho Desk connector uses OAuth 2.0 authentication. You'll need to provide:
| Parameter | Description | Example |
|---|---|---|
| Client ID | OAuth application client ID | From Step 2 |
| Client Secret | OAuth application client secret | From Step 2 |
| Authorization Code | One-time authorization code | This is fetched once admin successfully authenticates |
| Redirect URI | OAuth redirect URL. This is auto-filled. You can use this while registering an app on Zoho under Step 2 | https://app.leena.ai/oauth/callback |
Step 4: Configure Connection Settings
| Setting | Description | Default Value |
|---|---|---|
| Base URL | API endpoint URL | https://desk.zoho./<location> |
| API Version | API version to use | v1 |
| Token Refresh | Automatic token management | Handled automatically |
Note: Replace <location> in the Base URL with your Zoho data center location (e.g., com, in, eu, com.au, jp).
Step 5: Required Scopes
Configure the following scopes for your Zoho Desk connector:
| Scope | Description | Purpose |
|---|---|---|
| Desk.tickets.READ | Read ticket data | View ticket information |
| Desk.tickets.CREATE | Create tickets | Create new tickets |
| Desk.tickets.UPDATE | Update tickets | Modify ticket details and resolution |
| Desk.tickets.DELETE | Delete tickets | Move tickets to trash |
| Desk.settings.READ | Read settings data | View agent and organization settings |
| Desk.settings.CREATE | Create settings | Add new agents |
| Desk.settings.UPDATE | Update settings | Modify agent status |
| Desk.basic.READ | Basic read operations | General system information access |
| Desk.basic.CREATE | Basic create operations | File uploads and basic operations |
| Desk.basic.UPDATE | Basic update operations | General update operations |
Step 6: Test Connection
- After entering all required credentials, click Test Connection
- If successful, you'll see a green confirmation message
- If the test fails, verify your OAuth configuration and credentials
Step 7: Save Configuration
- Once the connection test passes, click Save
- The Zoho Desk connector is now ready to use in your workflows
Troubleshooting Common Issues
OAuth 2.0 Issues:
- Invalid credentials: Verify Client ID and Client Secret are correct
- Redirect URI mismatch: Ensure the Redirect URI in Zoho matches the one provided by Leena AI
- Authorization failed: Check if the authorization code is valid and not expired
- Scope errors: Ensure all required scopes are added to your Zoho OAuth application
Connection Issues:
- Base URL errors: Verify the correct data center location in the Base URL
- Token refresh failed: Check if your OAuth application has the necessary permissions
- API version mismatch: Ensure you're using the correct API version (v1)
Security Best Practices
- Client Secret Security: Store Client ID and Client Secret securely
- Principle of Least Privilege: Only grant necessary scopes to the OAuth application
- Access Monitoring: Monitor API usage through Zoho admin panels
- Regular Audits: Review connector permissions and access logs periodically
- Token Management: Ensure automatic token refresh is working properly
The connector is now ready to be used by your Leena AI Agents for automated customer service and ticket management workflows.
Create a ticket
Creates a new ticket in the organization.
Scope: Desk.tickets.CREATE
Required Parameters
| Parameter | Description | Example |
|---|---|---|
| Organization | Select the Organization from dropdown | Single select. Renders all the Organizations created within an Instance |
| Subject | Ticket subject | The subject line for the ticket |
| Department | Associated department ID. This is a dropdown field | Departments configured under the platform |
Optional Parameters
| Parameter | Description |
|---|---|
| Contact | Select an existing contact or create a new contact. Contact is the email address via which a ticket is created or needs to be associated with |
| Contact email ID | If an existing contact exists, select the contact or add the email ID of the new contact |
| Product | Select the product from the dropdown |
| Uploads | Used to attach uploads/supporting documents with the ticket |
| Phone | Phone contact associated with the ticket |
| Description | Ticket description |
| Status | Ticket status |
| Assignee | Select the assignee for the ticket from the dropdown |
| Category | Ticket category |
| Sub-Category | Ticket subcategory |
| Resolution | Ticket resolution |
| Due Date | Due date associated with the ticket |
| Priority | Priority level of the ticket |
| Language | Associated language |
| Channel | Communication channel |
| Classification | Ticket classification, For example - Incident, Problem, Question, Others |
| Web URL | Web URL via which the ticket is raised |
| Team | Associated Team to whom the ticket is assigned |
| Secondary contacts | Secondary contacts |
Example Usage
Basic Ticket Creation
{
"organization": "Leena AI Support",
"subject": "Unable to login to account",
"department": "Technical Support"
}Ticket with Full Details
{
"organization": "Leena AI Support",
"subject": "Payment processing error",
"department": "Billing",
"contact": "[email protected]",
"description": "Customer experiencing issues with payment processing on checkout page",
"priority": "High",
"status": "Open",
"assignee": "[email protected]",
"category": "Technical Issue",
"channel": "Web Form",
"classification": "Incident"
}Ticket with Attachments
{
"organization": "Leena AI Support",
"subject": "Bug report - UI issue",
"department": "Development",
"contact": "[email protected]",
"description": "Button not responding on mobile view",
"priority": "Medium",
"uploads": ["file-id-123"],
"category": "Bug Report",
"product": "Mobile App"
}Ticket with Team Assignment
{
"organization": "Leena AI Support",
"subject": "Feature request - Dashboard customization",
"department": "Product",
"contact": "[email protected]",
"description": "Request for custom dashboard widgets",
"priority": "Low",
"team": "Product Development Team",
"classification": "Question",
"dueDate": "2025-12-31"
}Response
Upon successful creation, the action returns:
- Ticket ID
- Ticket number
- Subject
- Status
- Created timestamp
- Assignee information
- Department details
Common Use Cases
- Customer Support: Create tickets from customer inquiries via chat, email, or phone
- Bug Reporting: Automatically create tickets for reported bugs
- Service Requests: Generate tickets for internal service requests
- Incident Management: Create incident tickets for system issues
- Feature Requests: Track feature requests through ticketing system
- Automated Workflows: Create tickets from external system triggers
Get a ticket
Retrieves detailed information about a specific ticket.
Scope: Desk.tickets.READ
Required Parameters
| Parameter | Description | Example |
|---|---|---|
| Organization | Select the Organization from dropdown | Single select. Renders all the Organizations created within an Instance |
| ticketId | Select the ticket from dropdown | Single select. Renders all the tickets created within an Instance |
Optional Parameters
| Parameter | Description | Type |
|---|---|---|
| Include | Include additional data | Select the fields associated with a ticket, to be returned. For example - contacts, products, assignee/s, departments, team |
Example Usage
Get Basic Ticket Info
{
"organization": "Leena AI Support",
"ticketId": "12345"
}Get Ticket with Additional Data
{
"organization": "Leena AI Support",
"ticketId": "12345",
"include": "contacts,products,assignee,departments,team"
}Get Ticket with Contact Details
{
"organization": "Leena AI Support",
"ticketId": "67890",
"include": "contacts,assignee"
}Response
The action returns detailed ticket information including:
- Ticket ID and number
- Subject and description
- Status and priority
- Department and team
- Assignee information
- Contact details (if included)
- Product information (if included)
- Created and updated timestamps
- Custom fields
- Attachments
Common Use Cases
- Status Checking: Allow users to check ticket status via virtual assistant
- Ticket Details: Retrieve complete ticket information for agents
- Reporting: Generate reports with detailed ticket data
- Integration: Sync ticket information with external systems
- Audit Trail: Review ticket history and changes
- Customer Updates: Provide customers with ticket progress updates
List all tickets
Retrieves all tickets for the given organization.
Scope: Desk.tickets.READ
Required Parameters
| Parameter | Description | Type/Example |
|---|---|---|
| Organization | The Organization for which all the tickets are to be fetched. This is a dropdown field | Dropdown field |
Optional Parameters
| Parameter | Description | Example |
|---|---|---|
| From | Starting index for pagination | 1 |
| Limit | Number of tickets to retrieve | 100 |
| Departments | Filter by department IDs. This is a dropdown field | Departments configured under the platform |
| Teams | Filter by team IDs. This is a dropdown field | Teams configured under the platform |
| Assignee | Filter by assignee. This is a dropdown field | Assignee/s added under the platform |
| Channel | Filter by channel | Select the channel via which the ticket is raised |
| Status | Filter by ticket status | Select the status of ticket which needs to be filtered. You can keep it blank to return all tickets |
| Sort by | Sorting tickets by a particular field/attribute of ticket | Text field. Add the field via which sorting needs to be done |
| Sort order | Sort order (asc/desc) | This needs to be passed with 'Sort by' |
| Received in days | Filter by received days | Last X days within which the ticket is raised |
| Include | Include additional data | Select from the dropdown |
| Fields | Specific fields to return | Add specific fields that are to be returned as a part of ticket details |
| Priority | Filter by priority | Specific priority of the tickets which are to be returned |
Example Usage
List All Tickets
{
"organization": "Leena AI Support"
}List Tickets with Pagination
{
"organization": "Leena AI Support",
"from": 1,
"limit": 50
}List Open Tickets by Department
{
"organization": "Leena AI Support",
"departments": ["Technical Support", "Billing"],
"status": "Open",
"sortBy": "createdTime",
"sortOrder": "desc"
}List High Priority Tickets
{
"organization": "Leena AI Support",
"priority": "High",
"status": "Open",
"assignee": "[email protected]",
"limit": 25
}List Recent Tickets with Filters
{
"organization": "Leena AI Support",
"receivedInDays": 7,
"channel": "Email",
"include": "contacts,assignee",
"sortBy": "priority",
"sortOrder": "desc"
}List Tickets by Team
{
"organization": "Leena AI Support",
"teams": ["Support Team A", "Support Team B"],
"status": "Open",
"from": 1,
"limit": 100
}Response
The action returns a list of tickets with:
- Ticket ID and number
- Subject
- Status and priority
- Department and team
- Assignee information
- Created and updated timestamps
- Contact information (if included)
- Total count of tickets
- Pagination information
Common Use Cases
- Dashboard Display: Show all open tickets on support dashboard
- Agent Workload: List tickets assigned to specific agents
- Department Reports: Generate department-wise ticket reports
- Priority Management: Filter and display high-priority tickets
- Performance Metrics: Analyze ticket volume and response times
- Escalation Management: Identify tickets requiring escalation
Upload a file
Uploads a file to Zoho Desk for use in tickets. While creating a ticket, an uploaded file/document can be associated with a ticket.
Scope: Desk.basic.CREATE
Required Parameters
| Parameter | Description |
|---|---|
| Organization | Select an Organization from dropdown, which has been configured under Zoho |
| File Name | File name with extension |
| File data | Base64 string or public URL |
Example Usage
Upload File from URL
{
"organization": "Leena AI Support",
"fileName": "error-screenshot.png",
"fileData": "https://example.com/files/error-screenshot.png"
}Upload File from Base64
{
"organization": "Leena AI Support",
"fileName": "log-file.txt",
"fileData": "data:text/plain;base64,VGhpcyBpcyBhIHNhbXBsZSBsb2cgZmlsZQ=="
}Upload Document
{
"organization": "Leena AI Support",
"fileName": "user-manual.pdf",
"fileData": "https://example.com/documents/user-manual.pdf"
}Upload Image
{
"organization": "Leena AI Support",
"fileName": "product-image.jpg",
"fileData": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}Response
Upon successful upload, the action returns:
- File ID
- File name
- File size
- Upload timestamp
- File URL
Common Use Cases
- Ticket Attachments: Upload files before creating tickets
- Documentation: Upload user guides or manuals
- Evidence: Upload screenshots or error logs
- Reports: Upload analysis reports or test results
- Images: Upload product images or diagrams
- Logs: Upload system or application logs
Create a ticket's attachment
Adds an attachment to a specific ticket.
Scope: Desk.tickets.UPDATE
Required Parameters
| Parameter | Description |
|---|---|
| Organization | Select the Organization from dropdown |
| Ticket | Select the specific ticket from dropdown, created within a specific Organization |
| File Name | File name with extension |
| File Data | Base64 string or public URL |
Optional Parameters
| Parameter | Description |
|---|---|
| Is Public | Make attachment public. This is a boolean configuration |
Example Usage
Add Private Attachment
{
"organization": "Leena AI Support",
"ticket": "12345",
"fileName": "troubleshooting-steps.pdf",
"fileData": "https://example.com/files/troubleshooting-steps.pdf"
}Add Public Attachment
{
"organization": "Leena AI Support",
"ticket": "12345",
"fileName": "solution-guide.pdf",
"fileData": "https://example.com/files/solution-guide.pdf",
"isPublic": true
}Add Screenshot from Base64
{
"organization": "Leena AI Support",
"ticket": "67890",
"fileName": "error-screenshot.png",
"fileData": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...",
"isPublic": false
}Add Log File
{
"organization": "Leena AI Support",
"ticket": "54321",
"fileName": "application-log.txt",
"fileData": "data:text/plain;base64,VGhpcyBpcyBhbiBhcHBsaWNhdGlvbiBsb2c="
}Response
Upon successful attachment, the action returns:
- Attachment ID
- File name
- File size
- Visibility status (public/private)
- Upload timestamp
- Associated ticket ID
Common Use Cases
- Resolution Evidence: Attach screenshots showing issue resolution
- Documentation: Add relevant documentation to tickets
- Customer Communication: Attach files for customer reference
- Internal Notes: Add internal documentation (private attachments)
- Public Resources: Share publicly accessible resources with customers
- Audit Trail: Attach evidence for compliance or audit purposes
Best Practices
File Management:
- File Size: Keep file sizes reasonable to avoid upload issues
- File Formats: Use appropriate file formats (PDF for documents, PNG/JPG for images)
- Naming Convention: Use descriptive file names with proper extensions
- Visibility: Set appropriate public/private visibility based on content
Security:
- Sensitive Data: Use private attachments for sensitive information
- Public Access: Only make attachments public when necessary
- File Validation: Validate file types and sizes before upload
- Access Control: Ensure proper permissions are set
Error Handling
Common error scenarios:
- File Too Large: File exceeds maximum size limit
- Invalid Format: File format is not supported
- Ticket Not Found: Invalid ticket ID
- Upload Failed: Network or server issues during upload
- Permission Denied: Insufficient permissions to add attachments
- Organization Mismatch: Ticket doesn't belong to specified organization
Updated about 20 hours ago
