Zoho Books and GoCardless Integration: Automate Direct Debit Collection
On this page Collecting payments on time is one of the most persistent challenges for…
HR teams that split their day between Zoho People and Slack know the friction: a leave request sits in the Zoho People inbox for hours because the approver is heads-down in Slack, birthday reminders go unnoticed in email, and employees message HR directly for leave balance queries that could be self-served. A proper Zoho People Slack integration eliminates that friction by pushing the right HR events into the channels where your team already works, and letting employees pull their own data through slash commands. This guide walks through the full implementation: Zoho Flow configurations for push notifications, Zoho People API setup for self-service queries, notification templates, and testing procedures you can follow step by step.
Zoho People handles leave management, attendance tracking, employee onboarding, and performance reviews. Slack is where most distributed teams spend their working hours. When these two systems operate independently, HR events create response delays that compound across the organisation.
Consider the numbers. A mid-size company with 150 employees generates roughly 40 to 60 leave requests per month. If each request notification sits unread in a Zoho People email for even 2 hours, that is 80 to 120 hours of cumulative wait time monthly. Slack notifications cut that delay to minutes because managers see the request in the channel they already have open.
The integration covers three categories of HR communication:
The combination of push notifications (Zoho Flow to Slack) and pull queries (Slack slash command to Zoho People API) covers the full spectrum of day-to-day HR communication without employees ever leaving their messaging app.
Before building, understand how the pieces connect. The integration uses two distinct pathways:
Zoho Flow acts as the automation layer. It listens for trigger events in Zoho People (a new leave request, an approved leave, a birthday match) and executes an action in Slack (post a message to a channel, send a direct message). No custom code is needed for this path. Zoho Flow provides pre-built connectors for both Zoho People and Slack, and you configure the trigger-action pairs through a visual builder.
For self-service, you create a Slack slash command (e.g., /leavebalance) that calls a lightweight middleware endpoint. That endpoint authenticates against the Zoho People API using OAuth 2.0, fetches the requesting employee’s leave data, and returns a formatted response to Slack. This path requires a small backend component, which can run on Zoho Catalyst, AWS Lambda, Google Cloud Functions, or any serverless platform.
| Component | Role | Authentication |
|---|---|---|
| Zoho People | Source of HR data (leaves, attendance, employee records) | OAuth 2.0 (Zoho accounts) |
| Zoho Flow | Event-driven automation, push notifications | Connected via Zoho account (single sign-on) |
| Slack Workspace | Notification delivery, slash command interface | Slack App (Bot Token) |
| Middleware (optional) | Handles slash command requests, calls Zoho People API | Slack verification + Zoho OAuth |
This is the highest-value automation. Every leave request triggers a Slack notification to the approving manager, and every approval or rejection triggers a confirmation back to the employee.
Use this template structure for clear, actionable notifications:
New Leave Request | {Employee Name} | {Leave Type}
From: {Start Date} To: {End Date} ({Number of Days} days)
Reason: {Reason}
Action needed: Approve or reject in Zoho People
Map each placeholder to the corresponding Zoho People trigger field. Zoho Flow shows all available fields from the leave request form, including employee name, department, leave type, date range, and reason.
Use Zoho Flow’s Decision node to route notifications differently based on leave duration or type. For example, route leave requests of 3 or more days to a senior manager channel, while shorter requests go to the direct manager only. You can also filter by leave type: sick leave notifications might go to HR directly, while casual leave goes to the team lead.
Create a second flow with the trigger Leave Request Approved (or Rejected). This sends a Slack DM to the employee confirming the outcome:
Your {Leave Type} request for {Start Date} to {End Date} has been {Status}.
Approved by: {Approver Name}
Test both flows by submitting a test leave request in Zoho People and verifying the Slack messages arrive in the correct channels.
Employee milestones are easy to automate but often overlooked. Zoho People stores date of birth and joining date for every employee. Zoho Flow can check these dates daily and push notifications to a designated Slack channel.
The notification template for birthdays:
Happy Birthday, {Employee Name}! Wishing you a great day from the entire team.
For work anniversaries, follow the same pattern but filter on the joining date field. Include the number of years to add context:
{Employee Name} completes {Years} years with us today. Congratulations!
These notifications take under 10 minutes to set up and run without any maintenance once configured. They contribute to employee engagement without requiring HR to manually track dates and send messages.
For teams that track attendance through Zoho People, daily or weekly attendance summaries posted to Slack give managers visibility without logging into a separate dashboard.
Create a Zoho Flow with a schedule trigger at end of business (e.g., 6:00 PM). Fetch attendance records for the day from Zoho People, aggregate the data, and post a summary to the team’s Slack channel:
Attendance Summary | {Date}
Present: {Count} | Absent: {Count} | On Leave: {Count} | Late Arrivals: {Count}
A Friday afternoon summary gives managers the weekly picture. Fetch records for Monday through Friday, calculate totals per employee, and format a table-style message. Slack supports basic formatting with code blocks and tables, which works well for structured data.
For larger organisations (200+ employees), posting individual attendance records would create noise. Instead, post aggregate numbers to the manager channel and use a Slack thread or a link back to the Zoho People attendance dashboard for details.
This is the pull-based self-service component. Employees type /leavebalance in Slack and get their current leave balance without contacting HR or logging into Zoho People.
ZOHOPEOPLE.leave.READ/leavebalancehttps://your-function.zoho.com/leavebalance)The middleware receives the slash command request from Slack, identifies the employee by their Slack email (which must match the Zoho People employee email), calls the Zoho People Leave API, and returns the formatted balance. Here is the logic flow:
users.info APIGET /people/api/leave/getLeaveTypeDetails?userId={employeeId}PermittedCount, AvailedCount, and BalanceCountThe response displayed to the employee in Slack:
Your Leave Balance (as of {today}):
Casual Leave: 5 available / 12 total
Sick Leave: 3 available / 6 total
Earned Leave: 10 available / 15 total
Deploy the middleware function, then test by typing /leavebalance in Slack. Verify the response matches the data shown in Zoho People’s leave dashboard. Test with multiple employees to confirm the email mapping works correctly. Handle edge cases: what happens if the Slack email does not match any Zoho People record? Return a clear error message directing the employee to contact HR.
Well-formatted Slack messages make the difference between notifications that get acted on and notifications that get ignored. Follow these guidelines for all Zoho-to-Slack notification templates:
| Notification Type | Channel | Format | Frequency |
|---|---|---|---|
| Leave request (new) | #hr-approvals or manager DM | Bold employee name, leave type, dates, reason | Real-time |
| Leave approved/rejected | Employee DM | Status, dates, approver name | Real-time |
| Birthday | #celebrations | Employee name, short wish | Daily (9 AM) |
| Work anniversary | #celebrations | Employee name, years completed | Daily (9 AM) |
| Attendance summary | #team-updates or manager channel | Aggregate counts, late arrivals | Daily (6 PM) or weekly |
| Leave balance query | Slash command response (ephemeral) | Table of leave types with balances | On demand |
The biggest risk with any Slack integration is over-notifying. Follow these rules:
Before rolling out to the full organisation, run through this testing checklist:
/leavebalance in Slack. Verify the response returns within 3 seconds.| Issue | Cause | Fix |
|---|---|---|
| Slack message not arriving | Expired Slack OAuth token | Re-authenticate Slack connection in Zoho Flow |
| Wrong channel | Channel ID changed after renaming | Update the channel selection in Zoho Flow action |
| Missing employee fields | Field mapping not set | Re-map trigger fields in the Zoho Flow builder |
| Slash command timeout | Middleware cold start or API rate limit | Use provisioned concurrency or cache the OAuth token |
| Leave balance mismatch | Stale API token | Refresh the Zoho OAuth token automatically using the refresh token |
While this guide focuses on Zoho Flow (the native Zoho option), it is worth knowing how alternatives compare for a Zoho and Slack integration:
| Criteria | Zoho Flow | Zapier | Custom (API) |
|---|---|---|---|
| Setup complexity | Low (visual builder, native Zoho auth) | Low (similar visual builder) | High (code, hosting, OAuth) |
| Cost | Included with Zoho One; standalone from $10/month | Free tier limited; paid from $29.99/month | Hosting costs only |
| Zoho People triggers | Native, full event coverage | Limited trigger options | Full API access |
| Slash command support | Not natively (needs middleware) | Not natively (needs middleware) | Full control |
| Maintenance | Minimal (Zoho-managed) | Minimal (Zapier-managed) | You maintain code and infrastructure |
| Best for | Zoho-first organisations | Multi-vendor stacks | Complex, custom requirements |
For organisations already using Zoho’s product suite, Zoho Flow is the natural choice. It shares authentication with Zoho People, has deeper trigger coverage for Zoho apps, and avoids the per-task pricing model of third-party platforms.
For a full overview of all available options, explore our complete guide to Zoho integrations.
Can Zoho People send leave approval notifications directly to Slack without Zoho Flow?
Zoho People does not have a built-in Slack integration. You need an automation layer like Zoho Flow, Zapier, or a custom webhook to push leave notifications from Zoho People to Slack channels. Zoho Flow is the recommended option for organisations already on the Zoho ecosystem because it shares authentication and offers native Zoho People triggers.
How do I map Slack users to Zoho People employees for the slash command?
The slash command middleware uses the Slack user’s email address (retrieved via the Slack users.info API) to look up the matching employee record in Zoho People. This requires that employee email addresses in Zoho People match their Slack workspace emails exactly. If your organisation uses different emails for each platform, you will need a mapping table in your middleware.
What Zoho People API scopes are needed for the leave balance slash command?
You need the ZOHOPEOPLE.leave.READ scope for fetching leave balances and the ZOHOPEOPLE.forms.READ scope for looking up employee records by email. Generate an OAuth refresh token with both scopes through the Zoho API Console’s Self Client option, and store the refresh token securely in your middleware’s environment variables.
Is there a rate limit on the Zoho People Leave API?
Yes. The Leave Type Details endpoint allows 30 API calls per minute with a 2-minute lock period if exceeded. For a slash command serving a 200-person company, this limit is rarely hit since queries are user-initiated and spread throughout the day. If you anticipate higher volume, cache leave balances for 5 to 10 minutes in your middleware.
Can I use Zoho Cliq instead of Slack for these HR notifications?
Yes. Zoho Cliq has native integration with Zoho People, making the setup even simpler since both are Zoho products. However, if your team primarily uses Slack for day-to-day communication, building the Zoho People Slack integration through Zoho Flow ensures notifications reach people where they actually work. The choice depends on which messaging platform your team has standardised on.
Aaxonix configures Zoho People and Zoho Flow integrations for teams that want leave alerts, milestone notifications, and self-service HR queries inside Slack, with no ongoing maintenance overhead. Book a free consultation and get a working integration plan scoped to your team size and Zoho setup.
Book a free consultationA well-configured Zoho People Slack integration turns your messaging app into an HR self-service portal. Managers approve leaves faster because the request appears where they are already working. Employees check their own balances without waiting for HR. And milestones like birthdays and anniversaries get recognised automatically instead of falling through the cracks. Start with the leave approval flow (the highest-impact automation), add milestone notifications next, and build the slash command when your team is ready for full self-service.
Our team builds systems that actually work. No fluff, just honest architecture and clean implementation.