npm package: @parthikhm/n8n-nodes-zoho-projects
Description: Zoho Projects Node for n8n
Author: Parthik Modi
Latest version: 0.1.2

# @parthikhm/n8n-nodes-zoho-recruit

This is an n8n community node that provides comprehensive integration with Zoho Recruit API. It allows you to automate your recruitment processes by managing candidates, notes, attachments, and more within your n8n workflows.

🚀 **Ultra-Lightweight**: Only **16.1 kB** package size - one of the smallest n8n nodes available!

[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation tool.

[Installation](#installation)  
[Node Description](#node-description)  
[How to Use](#how-to-use)  
[Credentials Setup](#credentials-setup)  
[Resources & Operations](#resources--operations)  
[Example Workflows](#example-workflows)  
[Version History](#version-history)

## Installation

Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

### Quick Installation

```bash
# From your n8n installation directory
npm install n8n-nodes-zoho-recruit

## Node Description

The Zoho Recruit node provides a comprehensive interface to interact with Zoho Recruit's API v2. It supports multiple resources and operations to help you automate your recruitment workflows.

### Key Features

- **Multi-Resource Support**: Candidates, Notes, Note Types, Attachments, Associated Records, and Status Management
- **Full CRUD Operations**: Create, Read, Update, Delete operations for all resources
- **Pagination Support**: Automatic handling of large datasets
- **File Upload**: Support for binary file uploads to attachments
- **Error Handling**: Robust error handling with meaningful error messages
- **OAuth2 Authentication**: Secure authentication using Zoho's OAuth2 flow
- **Ultra-Lightweight**: Optimized package size for fast downloads and minimal storage

### Supported Zoho Regions

- **Global**: `https://recruit.zoho.com`
- **Australia**: `https://recruit.zoho.com.au`
- **China**: `https://recruit.zoho.com.cn`
- **Europe**: `https://recruit.zoho.eu`

## How to Use

### 1. Add the Node to Your Workflow

1. Open n8n and create a new workflow
2. Click the "+" button to add a node
3. Search for "Zoho Recruit" in the nodes panel
4. Select the Zoho Recruit node and add it to your workflow

### 2. Configure the Node

1. **Select Resource**: Choose the resource you want to work with:
   - **Associated**: Get associated records between modules
   - **Attachments**: Manage file attachments
   - **Candidates**: Manage candidate records
   - **Notes**: Handle notes and comments
   - **Note Types**: Retrieve note type configurations
   - **Status**: Change status of records

2. **Select Operation**: Choose the operation to perform:
   - **Get All/Get Many**: Retrieve records with pagination
   - **Get**: Retrieve a single record by ID
   - **Create**: Create new records
   - **Update**: Update existing records
   - **Delete**: Delete records
   - **Search**: Search records with criteria
   - **Upload**: Upload files (for attachments)
   - **Get Associated Records**: Get associated records between modules
   - **Change Status**: Change status of records

3. **Configure Parameters**: Fill in the required parameters based on your selected operation

### 3. Connect to Other Nodes

Connect the Zoho Recruit node to other nodes in your workflow to:

- Process retrieved data
- Trigger actions based on Zoho Recruit events
- Create complex automation workflows

## Credentials Setup

### Prerequisites

Before setting up credentials, you need to create a Zoho Recruit API application:

1. **Log into Zoho Recruit**: Access your Zoho Recruit account
2. **Navigate to Developer Space**: Go to Setup → Developer Space → API
3. **Create Self-Client**: Click "Add" to create a new self-client
4. **Configure Scopes**: Add the required scopes for your use case

### Required Scopes

Based on the resources you plan to use, add these scopes:

#### For Candidates:

```

ZohoRecruit.modules.candidates.ALL
ZohoRecruit.modules.candidates.READ
ZohoRecruit.modules.candidates.CREATE
ZohoRecruit.modules.candidates.UPDATE
ZohoRecruit.modules.candidates.DELETE

```

#### For Notes:

```

ZohoRecruit.modules.notes.ALL
ZohoRecruit.modules.notes.READ
ZohoRecruit.modules.notes.CREATE
ZohoRecruit.modules.notes.UPDATE
ZohoRecruit.modules.notes.DELETE

```

#### For Attachments:

```

ZohoRecruit.modules.attachments.ALL
ZohoRecruit.modules.attachments.READ
ZohoRecruit.modules.attachments.CREATE
ZohoRecruit.modules.attachments.DELETE

```

#### For Note Types:

```

ZohoRecruit.settings.note_type.ALL
ZohoRecruit.settings.note_type.READ

```

### Setting Up Credentials in n8n

1. **Go to Credentials**: In n8n, navigate to Settings → Credentials
2. **Add New Credential**: Click "Add Credential"
3. **Select Zoho Recruit OAuth2 API**: Choose from the credential types
4. **Fill in the Details**:

   **For Global (recruit.zoho.com):**

```

Client ID: [Your Client ID]
Client Secret: [Your Client Secret]
Access Token URL: https://accounts.zoho.com/oauth/v2/token
Authorization URL: https://accounts.zoho.com/oauth/v2/auth
Scope: [Your required scopes]

```

**For Australia (recruit.zoho.com.au):**

```

Access Token URL: https://accounts.zoho.com.au/oauth/v2/token
Authorization URL: https://accounts.zoho.com.au/oauth/v2/auth

```

**For China (recruit.zoho.com.cn):**

```

Access Token URL: https://accounts.zoho.com.cn/oauth/v2/token
Authorization URL: https://accounts.zoho.com.cn/oauth/v2/auth

```

**For Europe (recruit.zoho.eu):**

```

Access Token URL: https://accounts.zoho.eu/oauth/v2/token
Authorization URL: https://accounts.zoho.eu/oauth/v2/auth

````

5. **Save and Test**: Save the credentials and test the connection

## Resources & Operations

### Candidates Resource

Manage candidate records in Zoho Recruit.

#### Operations:

- **Get All**: Retrieve all candidates with pagination support
- **Get**: Retrieve a single candidate by ID
- **Create**: Create a new candidate record
- **Update**: Update an existing candidate
- **Delete**: Delete a candidate record
- **Search**: Search candidates using Zoho's search criteria

#### Example Parameters:

```json
{
	"First_Name": "John",
	"Last_Name": "Doe",
	"Email": "john.doe@example.com",
	"Phone": "+1234567890",
	"Current_Job_Title": "Software Engineer"
}
````

### Notes Resource

Manage notes and comments associated with records.

#### Operations:

- **Get Many**: Retrieve notes with pagination
- **Create**: Create a new note
- **Update**: Update an existing note
- **Delete**: Delete notes (single or bulk)

#### Example Parameters:

```json
{
	"Note_Title": "Interview Feedback",
	"Note_Content": "Candidate performed well in technical interview",
	"Parent_Id": "1000000231009"
}
```

### Note Types Resource

Retrieve available note types for categorization.

#### Operations:

- **Get Many**: Retrieve all note types with pagination

### Attachments Resource

Manage file attachments for records.

#### Operations:

- **Get Many**: Retrieve attachments for a record
- **Delete**: Delete an attachment

### Status Resource

Change the status of records in Zoho Recruit.

#### Operations:

- **Change Status**: Change the status of candidates, applications, job openings, or offers

#### Supported Modules:

- **Candidates**: Change candidate status (e.g., New, Qualified, Rejected)
- **Applications**: Change application status with optional job association
- **Job Openings**: Change job opening status
- **Offers**: Change offer status (single record only)

#### Example Parameters:

```json
{
	"ids": ["568998000001714001"],
	"Candidate_Status": "New",
	"comments": "Status updated to New"
}
```

### Associated Resource

Get associated records between different modules in Zoho Recruit.

#### Operations:

- **Get Associated Records**: Retrieve associated records for a specific record ID

#### Supported Modules:

- **Candidates**: Get associated job openings for a candidate
- **Job Openings**: Get associated candidates for a job opening

#### Parameters:

- **Module**: The module to get associated records for (Candidates or Job Openings)
- **Record ID**: The unique ID of the record to get associated records for
- **Posting Title** (optional): Filter job openings by posting title
- **Candidate Statuses** (optional): Filter candidates by status
- **Page** (optional): Page number for pagination (default: 1)
- **Per Page** (optional): Number of records per page (default: 200)
- **Return All**: Whether to return all results or limit to specified number
- **Limit**: Maximum number of results to return (when Return All is false)

#### Example Use Cases:

1. **Get Job Openings for a Candidate**:
   - Module: Candidates
   - Record ID: Candidate ID
   - Posting Title: "Java Developer" (optional filter)

2. **Get Candidates for a Job Opening**:
   - Module: Job Openings
   - Record ID: Job Opening ID
   - Candidate Statuses: "Associated, Contacted" (optional filter)

#### Example Response:

```json
{
	"data": [
		{
			"id": "1000000231009",
			"Posting_Title": "Java Developer",
			"Department": "Engineering",
			"Status": "Open"
		}
	],
	"info": {
		"per_page": 200,
		"count": 1,
		"page": 1,
		"more_records": false
	}
}
```

## Example Workflows

### 1. Candidate Onboarding Workflow

**Purpose**: Automatically create a candidate record and add initial notes when a new application is received.

```mermaid
graph LR
    A[Webhook] --> B[Zoho Recruit: Create Candidate]
    B --> C[Zoho Recruit: Add Note]
    C --> D[Send Welcome Email]
    D --> E[Add to Calendar]
```

**Configuration**:

1. **Webhook Node**: Receives candidate application data
2. **Zoho Recruit Node (Create Candidate)**:
   - Resource: `candidate`
   - Operation: `create`
   - Data: Map webhook data to candidate fields
3. **Zoho Recruit Node (Add Note)**:
   - Resource: `note`
   - Operation: `create`
   - Note Content: "Application received and candidate created"
4. **Email Node**: Send welcome email to candidate
5. **Calendar Node**: Schedule initial screening call

### 2. Interview Feedback Workflow

**Purpose**: Collect interview feedback and update candidate records.

```mermaid
graph LR
    A[Form Trigger] --> B[Zoho Recruit: Update Candidate]
    B --> C[Zoho Recruit: Add Note]
    C --> D[Condition: Pass/Fail]
    D --> E[Schedule Next Round]
    D --> F[Send Rejection Email]
```

**Configuration**:

1. **Form Trigger**: Collect interview feedback
2. **Zoho Recruit Node (Update Candidate)**:
   - Resource: `candidate`
   - Operation: `update`
   - Update interview status and scores
3. **Zoho Recruit Node (Add Note)**:
   - Resource: `note`
   - Operation: `create`
   - Note Content: Interview feedback details
4. **Condition Node**: Check if candidate passed
5. **Branch 1**: Schedule next interview round
6. **Branch 2**: Send rejection email

### 3. Document Management Workflow

**Purpose**: Manage and track candidate documents and attachments.

```mermaid
graph LR
    A[Manual Trigger] --> B[Zoho Recruit: Get Attachments]
    B --> C[Zoho Recruit: Add Note]
    C --> D[Notify HR Team]
```

**Configuration**:

1. **Manual Trigger**: Start the workflow
2. **Zoho Recruit Node (Get Attachments)**:
   - Resource: `attachment`
   - Operation: `getMany`
   - Module: `Candidates`
   - Record ID: Candidate ID
3. **Zoho Recruit Node (Add Note)**:
   - Resource: `note`
   - Operation: `create`
   - Note Content: "Document review completed"
4. **Email Node**: Notify HR team of document status

### 4. Candidate Search and Export Workflow

**Purpose**: Search for candidates based on criteria and export results.

```mermaid
graph LR
    A[Manual Trigger] --> B[Zoho Recruit: Search Candidates]
    B --> C[Filter Results]
    C --> D[Export to CSV]
    D --> E[Send Report Email]
```

**Configuration**:

1. **Manual Trigger**: Start the workflow
2. **Zoho Recruit Node (Search Candidates)**:
   - Resource: `candidate`

### 5. Associated Records Analysis Workflow

**Purpose**: Analyze relationships between candidates and job openings to optimize recruitment strategies.

```mermaid
graph LR
    A[Manual Trigger] --> B[Zoho Recruit: Get Associated Records]
    B --> C[Process Data]
    C --> D[Generate Report]
    D --> E[Send Analytics Email]
```

**Configuration**:

1. **Manual Trigger**: Start the workflow
2. **Zoho Recruit Node (Get Associated Records)**:
   - Resource: `associated`
   - Operation: `getAssociated`
   - Module: `Candidates` or `Job Openings`
   - Record ID: Specific candidate or job opening ID
   - Optional filters: Posting title or candidate statuses
3. **Code Node**: Process and analyze the associated records data
4. **Google Sheets Node**: Generate a report with insights
5. **Email Node**: Send analytics report to recruitment team

**Use Cases**:

- **Candidate Analysis**: Get all job openings associated with a specific candidate to understand their interests
- **Job Opening Analysis**: Get all candidates associated with a job opening to assess candidate pool quality
- **Recruitment Strategy**: Analyze patterns in candidate-job associations to optimize job postings
  - Operation: `search`
  - Search Criteria: `((Experience:equals:5+ years))`

3. **Filter Node**: Apply additional filters
4. **CSV Node**: Export filtered results
5. **Email Node**: Send report to stakeholders

### 5. Status Management Workflow

**Purpose**: Automatically change candidate status based on interview results.

```mermaid
graph LR
    A[Form Trigger] --> B[Zoho Recruit: Change Status]
    B --> C[Zoho Recruit: Add Note]
    C --> D[Send Notification]
```

**Configuration**:

1. **Form Trigger**: Collect interview results
2. **Zoho Recruit Node (Change Status)**:
   - Resource: `status`
   - Operation: `changeStatus`
   - Module: `candidate`
   - Record IDs: Candidate ID
   - New Status: "Qualified" or "Rejected"
   - Comments: Interview feedback
3. **Zoho Recruit Node (Add Note)**:
   - Resource: `note`
   - Operation: `create`
   - Note Content: Status change details
4. **Email Node**: Send notification to HR team

### 6. Bulk Operations Workflow

**Purpose**: Perform bulk operations on multiple candidates.

```mermaid
graph LR
    A[Get All Candidates] --> B[Filter by Status]
    B --> C[Update Status]
    C --> D[Add Bulk Note]
    D --> E[Send Bulk Email]
```

**Configuration**:

1. **Zoho Recruit Node (Get All)**:
   - Resource: `candidate`
   - Operation: `getAll`
   - Return All: `true`
2. **Filter Node**: Filter candidates by status
3. **Zoho Recruit Node (Update)**:
   - Resource: `candidate`
   - Operation: `update`
   - Update status for filtered candidates
4. **Zoho Recruit Node (Add Note)**:
   - Resource: `note`
   - Operation: `create`
   - Add note to each candidate
5. **Email Node**: Send bulk email to candidates

## Version History

### 0.1.3

- **New Associated Resource**
- Added "Get Associated Records" operation for Associated resource
- Support for getting associated job openings for candidates
- Support for getting associated candidates for job openings
- Optional filtering by posting title and candidate statuses
- Full pagination support with "Return All" functionality
- Comprehensive error handling and validation

### 0.1.2

- **Performance Optimization**
- Reduced package size by 47% (from 30.4 kB to 16.1 kB)
- Removed unnecessary files (source maps, type declarations)
- Added comprehensive `.npmignore` for cleaner packages
- Optimized TypeScript configuration for smaller builds
- Improved installation speed and reduced storage requirements

### 0.1.1

- **Initial Release**
- Support for Candidates resource with full CRUD operations
- Support for Notes resource with create, read, update, delete operations
- Support for Note Types resource with read operations
- Support for Attachments resource with management capabilities
- Support for Status resource with Change Status operation
- OAuth2 authentication support for multiple Zoho regions
- Pagination support for all list operations
- Comprehensive error handling and validation

- Search functionality for candidates
- Bulk operations support

### Features Included:

- ✅ **Candidates**: Get All, Get, Create, Update, Delete, Search
- ✅ **Notes**: Get Many, Create, Update, Delete (single/bulk)
- ✅ **Note Types**: Get Many
- ✅ **Attachments**: Get Many, Delete
- ✅ **Status**: Change Status
- ✅ **Authentication**: OAuth2 with multi-region support
- ✅ **Pagination**: Automatic handling of large datasets
- ✅ **Error Handling**: Robust error messages and validation

## Support

For issues, questions, or contributions:

- **GitHub Issues**: [Create an issue](https://github.com/your-username/n8n-nodes-zoho-recruit/issues)
- **Documentation**: [Zoho Recruit API Documentation](https://www.zoho.com/recruit/developer-guide/)
- **n8n Community**: [n8n Community Forum](https://community.n8n.io/)

## License

[MIT](LICENSE.md)