Package Information
Available Nodes
Documentation
n8n-nodes-zohopeople-easyautomate
Free and open fair-code licensed node-based Workflow Automation Tool
Zoho People is a cloud-based HR software crafted to nurture employees, quickly adapt to changes, and make HR management agile and effective
š Table of Contents
- About
- Features
- Installation
- Configuration
- Usage
- Usage Examples
- Requirements
- Development
- License
- Author
šÆ About
n8n-nodes-zohopeople-easyautomate is an official community node for n8n that enables integration with Zoho People API. This node allows you to automate HR processes, manage employee data, track time, handle leaves, attendance, and much more - all within the powerful n8n automation engine.
⨠Features
This node provides support for 7 main Zoho People resources:
š Forms
- Fetch list of forms
- Get bulk records with tabular sections
- Get record count in forms
š Attendance
- Employee check-in/check-out
- Bulk attendance import
- Fetch last attendance entries
- Employee shift details
- Get attendance entries for specific date
- Regularization records
- Update user shifts
š¼ Cases
- List case categories
- View case details
šļø Leave
- Add leave (day-based and hour-based)
- Cancel leave
- Get leave types
- Get holidays
- Advanced leave records retrieval (V2 API)
- Single leave record
- User reports
- Booked and balance reports
- Bradford reports
- Encashment reports
ā±ļø Timer
- Start timer
- Pause timer
- Resume timer
- Get currently running timer
- Add comments
- Get comments
- Delete comments
š Timesheet
- Approve or reject timesheets
- Create timesheets
- Delete timesheets
- Get specific timesheet details
- Get timesheets list
- Modify timesheets
šļø View
- Default and custom views
- Fetch views for specific form
š¦ Installation
1. Via n8n Community Nodes (Recommended)
This is the easiest installation method:
- Open your n8n instance
- Go to Settings ā Community Nodes
- Click Install a community node
- Type:
n8n-nodes-zohopeople-easyautomate - Click Install
2. Via npm
If you're managing n8n locally, you can install the node using npm:
cd ~/.n8n/nodes
npm install n8n-nodes-zohopeople-easyautomate
Or in your n8n root directory:
npm install n8n-nodes-zohopeople-easyautomate
After installation, restart n8n:
n8n start
3. Via Docker
If you're using n8n in a Docker container, add the following line to your Dockerfile before the font installation command:
RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-zohopeople-easyautomate
Complete Dockerfile example:
FROM n8nio/n8n
USER root
# Install Zoho People node
RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-zohopeople-easyautomate
# Rest of configuration...
USER node
Then rebuild and run the container:
docker build -t n8n-custom .
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8n-custom
For docker-compose:
version: '3.8'
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=password
volumes:
- ~/.n8n:/home/node/.n8n
command: >
/bin/sh -c "
cd /usr/local/lib/node_modules/n8n &&
npm install n8n-nodes-zohopeople-easyautomate &&
n8n start
"
š Configuration
Step 1: Create OAuth Application in Zoho
Before using the node, you need to configure OAuth2 in Zoho Developer Console:
Log in to Zoho API Console:
- Go to https://api-console.zoho.com/
- Sign in with your Zoho account
Create a new application:
- Click Add Client
- Select Server-based Applications
Fill in application details:
- Client Name:
n8n Zoho People Integration(or any name) - Homepage URL: Your n8n instance URL (e.g.,
https://your-domain.com) - Authorized Redirect URIs:
ā ļø Important: Replacehttps://your-domain.com/rest/oauth2-credential/callbackyour-domain.comwith your actual n8n instance URL
- Client Name:
Save application credentials:
- After creating the application, save:
- Client ID
- Client Secret
- You'll need these in the next step
- After creating the application, save:
Step 2: Configure Credentials in n8n
Open n8n:
- Go to Credentials in the main menu
- Click New ā Search for Zoho People OAuth2 API
Fill in OAuth2 credentials:
Field Value Description API Domain Select your region šŗšø US / šŖšŗ EU / š¦šŗ AU / š®š³ IN / šØš³ CN.
IMPORTANT: The Zoho OAuth2 returns a URL, but it is incorrect for Zoho People API and should not be used as-is.Client ID Your Client ID From Zoho API Console Client Secret Your Client Secret From Zoho API Console Authorization URL Automatic Depends on region Access Token URL Select region US/EU/AU/IN/CN Authorize:
- Click Connect my account
- Log in to Zoho and accept permissions
- After successful authorization, you'll see a green "Connected" status
Save credentials:
- Click Save
š Usage
Basic Usage
- Create a new workflow in n8n
- Add Zoho People node
- Select or create credentials (OAuth2)
- Select Resource
- Select Operation
- Fill in required fields
- Execute the workflow
Simple Workflow Example
[Trigger: Webhook or Cron] ā [Zoho People: Get Leave Types] ā [Set Node] ā [Email Node]
š Usage Examples
Example 1: Automated Leave Reporting
Goal: Send daily email with today's leave list every morning.
Workflow:
[Cron: 7:00 AM daily]
ā [Zoho People: Get Leave Records V2]
- from: {{$now.format('yyyy-MM-dd')}}
- to: {{$now.format('yyyy-MM-dd')}}
- approvalStatus: ["APPROVED"]
ā [Function: Format data]
ā [Gmail: Send Email]
Example 2: Attendance Sync from Biometric System
Goal: Sync data from biometric system every 5 minutes.
Workflow:
[Cron: Every 5 minutes]
ā [HTTP Request: Fetch from biometric system]
ā [Function: Transform data]
ā [Zoho People: Attendance Bulk Import]
ā [Slack: Notify on error]
Example 3: Automatic Timer Start
Goal: Start timer when employee begins work on Jira task.
Workflow:
[Jira Trigger: Issue updated]
ā [IF: Status = "In Progress"]
ā [Zoho People: Start Timer]
- jobId: {{$json["issue"]["key"]}}
- workDate: {{$now.format('yyyy-MM-dd')}}
ā [Slack: Notify user]
Example 4: Weekly Time Report
Goal: Generate and send time report to manager every Friday.
Workflow:
[Cron: Friday 5:00 PM]
ā [Zoho People: Get Timesheets]
- user: "all"
- approvalStatus: "pending"
ā [Function: Generate report]
ā [Google Sheets: Append data]
ā [Gmail: Send to manager]
Example 5: Unapproved Timesheet Reminder
Goal: Send reminder to employees with unapproved timesheets.
Workflow:
[Cron: Monday 9:00 AM]
ā [Zoho People: Get Timesheets]
- approvalStatus: "draft"
ā [Split In Batches]
ā [Gmail: Send reminder]
- To: {{$json["email"]}}
š» Requirements
- n8n: v0.200.0 or newer
- Node.js: 20.19 or newer
- Zoho People: Active account with API access
- OAuth2: Configured application in Zoho API Console
š ļø Development
Building from Source
# Clone repository
git clone https://github.com/kamilfityka/n8n-nodes-zohopeople-easyautomate.git
# Navigate to directory
cd n8n-nodes-zohopeople-easyautomate
# Install dependencies
npm install
# Build project
npm run build
# Run linter
npm run lint
# Run tests
npm test
Project Structure
n8n-nodes-zohopeople-easyautomate/
āāā nodes/
ā āāā ZohoPeople/
ā āāā ZohoPeople.node.ts # Main node file
ā āāā GenericFunctions.ts # API helper functions
ā āāā types.d.ts # Type definitions
ā āāā descriptions/ # Parameter descriptions
ā ā āāā AttendanceDescription.ts
ā ā āāā CasesDescription.ts
ā ā āāā FormDescription.ts
ā ā āāā LeaveDescription.ts
ā ā āāā SharedFields.ts
ā ā āāā TimerDescription.ts
ā ā āāā TimesheetDescription.ts
ā ā āāā ViewDescription.ts
ā āāā operations/ # Operation logic
ā āāā AttendanceOperations.ts
ā āāā CasesOperations.ts
ā āāā FormOperations.ts
ā āāā LeaveOperations.ts
ā āāā TimerOperations.ts
ā āāā TimesheetOperations.ts
ā āāā ViewOperations.ts
āāā credentials/
ā āāā ZohoPeopleOAuth2Api.credentials.ts
āāā package.json
āāā tsconfig.json
āāā README.md
Available Scripts
npm run build- Compile TypeScript and copy filesnpm run dev- Watch mode for developmentnpm run format- Format code using Prettiernpm run lint- Check code using ESLintnpm run lintfix- Fix ESLint issues automaticallynpm test- Run Jest tests
š License
This project is licensed under Apache 2.0 with Commons Clause - see LICENSE.md for details.
Commons Clause means that:
- ā You can use this software for free
- ā You can modify the code
- ā You can distribute modified versions
- ā You cannot sell commercial versions of this software as a service
šØāš» Author
Kamil Fityka
- Email: kamil.fityka@easyautomate.pl
- GitHub: @kamilfityka
- Company: EasyAutomate
š Support
If this project is helpful, please consider:
- ā Starring the repository on GitHub
- š Reporting bugs via Issues
- š§ Submitting Pull Requests with improvements
- š Improving documentation
š Useful Links
Built with ā¤ļø for the n8n community
Powered by EasyAutomate
