{"id":2193,"date":"2026-04-27T04:30:00","date_gmt":"2026-04-27T04:30:00","guid":{"rendered":"https:\/\/aaxonix.com\/resources\/?p=2193"},"modified":"2026-04-11T18:44:50","modified_gmt":"2026-04-11T18:44:50","slug":"zoho-people-slack-integration-leave-alerts","status":"publish","type":"post","link":"https:\/\/aaxonix.com\/resources\/zoho-people-slack-integration-leave-alerts\/","title":{"rendered":"Zoho People and Slack Integration: Leave Alerts, Birthday Notifications, and HR Self-Service"},"content":{"rendered":"<style>\n.aax-post{font-family:'Poppins',sans-serif;color:#1a2332;max-width:820px;margin:0 auto;line-height:1.75}\n.aax-post h2{font-size:1.55rem;font-weight:600;margin:2.5rem 0 .9rem;color:#0a1628}\n.aax-post h3{font-size:1.15rem;font-weight:600;margin:1.8rem 0 .6rem;color:#1a2332}\n.aax-post p{margin:0 0 1.1rem}\n.aax-post ul,.aax-post ol{margin:0 0 1.1rem;padding-left:1.5rem}\n.aax-post li{margin-bottom:.45rem}\n.aax-post table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.93rem}\n.aax-post th{background:#0a1628;color:#fff;padding:.6rem 1rem;text-align:left}\n.aax-post td{padding:.55rem 1rem;border-bottom:1px solid #e8edf4}\n.aax-post tr:nth-child(even) td{background:#f5f7fb}\n.aax-post .faq-section{background:#f5f7fb;border-radius:10px;padding:1.8rem 2rem;margin:2.5rem 0}\n.aax-post .faq-item{margin-bottom:1.2rem;border-bottom:1px solid #e0e6ef;padding-bottom:1.2rem}\n.aax-post .faq-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}\n.aax-post .faq-question{font-weight:600;color:#0a1628;margin-bottom:.5rem}\n.aax-post .faq-answer{color:#3a4a5c;line-height:1.65}\n.aax-post .aax-cta{background:linear-gradient(135deg,#0a1628 0%,#1a3a5c 100%);border-radius:12px;padding:1.8rem 2rem;margin:2.5rem 0;text-align:center}\n.aax-post .aax-cta p{color:#e8edf4;margin:0 0 1.2rem;font-size:1.05rem}\n.aax-post .aax-cta a{display:inline-block;background:#fff;color:#0a1628;font-weight:600;padding:.65rem 1.6rem;border-radius:6px;text-decoration:none;font-size:.95rem}\n<\/style>\n<div class=\"sp-toc-wrap\"><nav class=\"sp-blog-toc\" id=\"spBlogToc\" style=\"display:none\">\n  <h4><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"vertical-align:middle;margin-right:6px\"><line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"\/><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"\/><line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"\/><line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"\/><line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"\/><line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"\/><\/svg>On this page<\/h4>\n  <ol class=\"sp-toc-list\" id=\"spTocList\"><\/ol>\n<\/nav><\/div>\n<div class=\"aax-post\">\n\n<p>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 <strong>Zoho People Slack integration<\/strong> 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.<\/p>\n\n<h2>Why Connect Zoho People with Slack<\/h2>\n\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<p>The integration covers three categories of HR communication:<\/p>\n\n<ul>\n<li><strong>Leave workflow alerts:<\/strong> New leave requests, approval\/rejection confirmations, and leave calendar summaries pushed to designated Slack channels<\/li>\n<li><strong>Employee milestone notifications:<\/strong> Birthdays, work anniversaries, and onboarding completions posted to a team channel automatically<\/li>\n<li><strong>Self-service queries:<\/strong> Employees check their own leave balance, attendance summary, or holiday list directly from Slack using slash commands<\/li>\n<\/ul>\n\n<p>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.<\/p>\n\n<h2>Zoho People Slack Integration Architecture<\/h2>\n\n<p>Before building, understand how the pieces connect. The integration uses two distinct pathways:<\/p>\n\n<h3>Push Path: Zoho Flow<\/h3>\n\n<p><a href=\"https:\/\/aaxonix.com\/resources\/zoho-flow-automation-india\/\" class=\"sp-content-link\">Zoho Flow<\/a> 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.<\/p>\n\n<h3>Pull Path: Slack Slash Command + Zoho People API<\/h3>\n\n<p>For self-service, you create a Slack slash command (e.g., <code>\/leavebalance<\/code>) that calls a lightweight middleware endpoint. That endpoint authenticates against the Zoho People API using OAuth 2.0, fetches the requesting employee&#8217;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.<\/p>\n\n<table>\n<tr><th>Component<\/th><th>Role<\/th><th>Authentication<\/th><\/tr>\n<tr><td>Zoho People<\/td><td>Source of HR data (leaves, attendance, employee records)<\/td><td>OAuth 2.0 (Zoho accounts)<\/td><\/tr>\n<tr><td>Zoho Flow<\/td><td>Event-driven automation, push notifications<\/td><td>Connected via Zoho account (single sign-on)<\/td><\/tr>\n<tr><td>Slack Workspace<\/td><td>Notification delivery, slash command interface<\/td><td>Slack App (Bot Token)<\/td><\/tr>\n<tr><td>Middleware (optional)<\/td><td>Handles slash command requests, calls Zoho People API<\/td><td>Slack verification + Zoho OAuth<\/td><\/tr>\n<\/table>\n\n<h2>Setting Up Zoho Flow for Leave Approval Notifications<\/h2>\n\n<p>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.<\/p>\n\n<h3>Step 1: Create the Zoho Flow Connection<\/h3>\n\n<ol>\n<li>Log in to <strong><a href=\"https:\/\/www.zohoflow.com\/\" target=\"_blank\" rel=\"noopener\">Zoho Flow<\/a><\/strong><\/li>\n<li>Click <strong>Create Flow<\/strong> and name it &#8220;Leave Request to Slack&#8221;<\/li>\n<li>Select <strong>Zoho People<\/strong> as the trigger app<\/li>\n<li>Choose the trigger event: <strong>Leave Request Created<\/strong> (this fires when any employee submits a new leave request)<\/li>\n<li>Authenticate with your Zoho People organisation if not already connected<\/li>\n<\/ol>\n\n<h3>Step 2: Configure the Slack Action<\/h3>\n\n<ol>\n<li>Add <strong>Slack<\/strong> as the action app<\/li>\n<li>Select <strong>Send Channel Message<\/strong> as the action<\/li>\n<li>Connect your Slack workspace by authorising the Zoho Flow Slack app<\/li>\n<li>Choose the target channel (e.g., #hr-leave-requests or the manager&#8217;s direct message)<\/li>\n<li>Build the message template using Zoho People field variables<\/li>\n<\/ol>\n\n<h3>Step 3: Message Template for Leave Requests<\/h3>\n\n<p>Use this template structure for clear, actionable notifications:<\/p>\n\n<p><code>New Leave Request | {Employee Name} | {Leave Type}<\/code><br>\n<code>From: {Start Date} To: {End Date} ({Number of Days} days)<\/code><br>\n<code>Reason: {Reason}<\/code><br>\n<code>Action needed: Approve or reject in Zoho People<\/code><\/p>\n\n<p>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.<\/p>\n\n<h3>Step 4: Add Conditional Logic (Optional)<\/h3>\n\n<p>Use Zoho Flow&#8217;s <strong>Decision<\/strong> 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.<\/p>\n\n<h3>Step 5: Create the Approval Confirmation Flow<\/h3>\n\n<p>Create a second flow with the trigger <strong>Leave Request Approved<\/strong> (or Rejected). This sends a Slack DM to the employee confirming the outcome:<\/p>\n\n<p><code>Your {Leave Type} request for {Start Date} to {End Date} has been {Status}.<\/code><br>\n<code>Approved by: {Approver Name}<\/code><\/p>\n\n<p>Test both flows by submitting a test leave request in Zoho People and verifying the Slack messages arrive in the correct channels.<\/p>\n\n<h2>Birthday and Anniversary Notifications via Zoho Flow<\/h2>\n\n<p>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.<\/p>\n\n<h3>Configuring the Birthday Flow<\/h3>\n\n<ol>\n<li>In Zoho Flow, create a new flow with a <strong>Schedule<\/strong> trigger set to run daily at 9:00 AM (or your preferred time)<\/li>\n<li>Add a <strong>Zoho People<\/strong> action: <strong>Fetch Records<\/strong> from the Employee form<\/li>\n<li>Use a <strong>Date Filter<\/strong> to match employees whose date of birth matches today&#8217;s month and day<\/li>\n<li>For each matching employee, add a Slack <strong>Send Channel Message<\/strong> action to your #celebrations or #general channel<\/li>\n<\/ol>\n\n<p>The notification template for birthdays:<\/p>\n\n<p><code>Happy Birthday, {Employee Name}! Wishing you a great day from the entire team.<\/code><\/p>\n\n<p>For work anniversaries, follow the same pattern but filter on the joining date field. Include the number of years to add context:<\/p>\n\n<p><code>{Employee Name} completes {Years} years with us today. Congratulations!<\/code><\/p>\n\n<p>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.<\/p>\n\n<h2>Attendance Summary Notifications<\/h2>\n\n<p>For teams that track attendance through <a href=\"https:\/\/aaxonix.com\/resources\/zoho-people-hr-india\/\" class=\"sp-content-link\">Zoho People<\/a>, daily or weekly attendance summaries posted to Slack give managers visibility without logging into a separate dashboard.<\/p>\n\n<h3>Daily Check-in\/Check-out Summary<\/h3>\n\n<p>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&#8217;s Slack channel:<\/p>\n\n<p><code>Attendance Summary | {Date}<\/code><br>\n<code>Present: {Count} | Absent: {Count} | On Leave: {Count} | Late Arrivals: {Count}<\/code><\/p>\n\n<h3>Weekly Attendance Report<\/h3>\n\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<h2>Building the Slack Slash Command for Leave Balance<\/h2>\n\n<p>This is the pull-based self-service component. Employees type <code>\/leavebalance<\/code> in Slack and get their current leave balance without contacting HR or logging into Zoho People.<\/p>\n\n<h3>Step 1: Register a Zoho People API Client<\/h3>\n\n<ol>\n<li>Go to <strong><a href=\"https:\/\/api-console.zoho.com\/\" target=\"_blank\" rel=\"noopener\">Zoho API Console<\/a><\/strong><\/li>\n<li>Create a <strong>Self Client<\/strong> application<\/li>\n<li>Note the <strong>Client ID<\/strong> and <strong>Client Secret<\/strong><\/li>\n<li>Generate a refresh token with the scope <code>ZOHOPEOPLE.leave.READ<\/code><\/li>\n<li>Store the refresh token securely in your middleware&#8217;s environment variables<\/li>\n<\/ol>\n\n<h3>Step 2: Create a Slack App with Slash Command<\/h3>\n\n<ol>\n<li>Go to <strong><a href=\"https:\/\/api.slack.com\/apps\" target=\"_blank\" rel=\"noopener\">Slack API Apps page<\/a><\/strong> and create a new app for your workspace<\/li>\n<li>Under <strong>Slash Commands<\/strong>, create <code>\/leavebalance<\/code><\/li>\n<li>Set the <strong>Request URL<\/strong> to your middleware endpoint (e.g., <code>https:\/\/your-function.zoho.com\/leavebalance<\/code>)<\/li>\n<li>Install the app to your workspace and note the <strong>Bot Token<\/strong> and <strong>Signing Secret<\/strong><\/li>\n<\/ol>\n\n<h3>Step 3: Middleware Logic<\/h3>\n\n<p>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:<\/p>\n\n<ol>\n<li>Verify the Slack request signature using the Signing Secret<\/li>\n<li>Extract the user&#8217;s Slack email via the Slack <code>users.info<\/code> API<\/li>\n<li>Map the email to a Zoho People employee ID using the <strong>Fetch Records<\/strong> API<\/li>\n<li>Call the <strong>Leave Type Details<\/strong> endpoint: <code>GET \/people\/api\/leave\/getLeaveTypeDetails?userId={employeeId}<\/code><\/li>\n<li>Parse the response to extract each leave type&#8217;s <code>PermittedCount<\/code>, <code>AvailedCount<\/code>, and <code>BalanceCount<\/code><\/li>\n<li>Format and return a Slack message<\/li>\n<\/ol>\n\n<p>The response displayed to the employee in Slack:<\/p>\n\n<p><code>Your Leave Balance (as of {today}):<\/code><br>\n<code>Casual Leave: 5 available \/ 12 total<\/code><br>\n<code>Sick Leave: 3 available \/ 6 total<\/code><br>\n<code>Earned Leave: 10 available \/ 15 total<\/code><\/p>\n\n<h3>Step 4: Deploy and Test<\/h3>\n\n<p>Deploy the middleware function, then test by typing <code>\/leavebalance<\/code> in Slack. Verify the response matches the data shown in Zoho People&#8217;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.<\/p>\n\n<h2>Notification Templates and Best Practices<\/h2>\n\n<p>Well-formatted Slack messages make the difference between notifications that get acted on and notifications that get ignored. Follow these guidelines for all <a href=\"https:\/\/aaxonix.com\/resources\/zoho-desk-slack-integration\/\" class=\"sp-content-link\">Zoho-to-Slack notification<\/a> templates:<\/p>\n\n<table>\n<tr><th>Notification Type<\/th><th>Channel<\/th><th>Format<\/th><th>Frequency<\/th><\/tr>\n<tr><td>Leave request (new)<\/td><td>#hr-approvals or manager DM<\/td><td>Bold employee name, leave type, dates, reason<\/td><td>Real-time<\/td><\/tr>\n<tr><td>Leave approved\/rejected<\/td><td>Employee DM<\/td><td>Status, dates, approver name<\/td><td>Real-time<\/td><\/tr>\n<tr><td>Birthday<\/td><td>#celebrations<\/td><td>Employee name, short wish<\/td><td>Daily (9 AM)<\/td><\/tr>\n<tr><td>Work anniversary<\/td><td>#celebrations<\/td><td>Employee name, years completed<\/td><td>Daily (9 AM)<\/td><\/tr>\n<tr><td>Attendance summary<\/td><td>#team-updates or manager channel<\/td><td>Aggregate counts, late arrivals<\/td><td>Daily (6 PM) or weekly<\/td><\/tr>\n<tr><td>Leave balance query<\/td><td>Slash command response (ephemeral)<\/td><td>Table of leave types with balances<\/td><td>On demand<\/td><\/tr>\n<\/table>\n\n<h3>Reducing Notification Fatigue<\/h3>\n\n<p>The biggest risk with any Slack integration is over-notifying. Follow these rules:<\/p>\n\n<ul>\n<li>Use <strong>dedicated channels<\/strong> for HR notifications, not #general. Employees opt in by joining the channel.<\/li>\n<li>Make leave approval notifications <strong>direct messages<\/strong> to the specific manager, not broadcast to the whole team.<\/li>\n<li>Post attendance summaries to <strong>manager-only channels<\/strong>, not public ones.<\/li>\n<li>Use <strong>ephemeral messages<\/strong> for slash command responses so only the requesting employee sees the output.<\/li>\n<li>Set birthday and anniversary notifications to a <strong>single daily batch<\/strong> rather than individual messages throughout the day.<\/li>\n<\/ul>\n\n<h2>Testing and Troubleshooting the Integration<\/h2>\n\n<p>Before rolling out to the full organisation, run through this testing checklist:<\/p>\n\n<h3>Zoho Flow Push Notifications<\/h3>\n\n<ol>\n<li>Submit a test leave request in Zoho People. Confirm the Slack notification arrives in the correct channel within 60 seconds.<\/li>\n<li>Approve the test request. Confirm the approval notification reaches the employee&#8217;s Slack DM.<\/li>\n<li>Reject a separate test request. Verify the rejection message includes the correct status and approver.<\/li>\n<li>Test the birthday flow by temporarily changing a test employee&#8217;s date of birth to today&#8217;s date. Confirm the message posts to the celebrations channel at the scheduled time.<\/li>\n<li>Check Zoho Flow&#8217;s execution history for any failed runs. Common issues: expired Slack token (re-authenticate the Slack connection), incorrect channel ID, or Zoho People field mapping errors.<\/li>\n<\/ol>\n\n<h3>Slash Command Self-Service<\/h3>\n\n<ol>\n<li>Type <code>\/leavebalance<\/code> in Slack. Verify the response returns within 3 seconds.<\/li>\n<li>Compare the returned balance with the Zoho People dashboard for the same employee. Numbers must match exactly.<\/li>\n<li>Test with an employee whose Slack email differs from their Zoho People email. Confirm a helpful error message appears.<\/li>\n<li>Check the middleware logs for any API errors, rate limit hits, or authentication failures.<\/li>\n<\/ol>\n\n<h3>Common Issues and Fixes<\/h3>\n\n<table>\n<tr><th>Issue<\/th><th>Cause<\/th><th>Fix<\/th><\/tr>\n<tr><td>Slack message not arriving<\/td><td>Expired Slack OAuth token<\/td><td>Re-authenticate Slack connection in Zoho Flow<\/td><\/tr>\n<tr><td>Wrong channel<\/td><td>Channel ID changed after renaming<\/td><td>Update the channel selection in Zoho Flow action<\/td><\/tr>\n<tr><td>Missing employee fields<\/td><td>Field mapping not set<\/td><td>Re-map trigger fields in the Zoho Flow builder<\/td><\/tr>\n<tr><td>Slash command timeout<\/td><td>Middleware cold start or API rate limit<\/td><td>Use provisioned concurrency or cache the OAuth token<\/td><\/tr>\n<tr><td>Leave balance mismatch<\/td><td>Stale API token<\/td><td>Refresh the Zoho OAuth token automatically using the refresh token<\/td><\/tr>\n<\/table>\n\n<h2>Comparing Integration Approaches: Zoho Flow vs. Zapier vs. Custom Build<\/h2>\n\n<p>While this guide focuses on Zoho Flow (the native Zoho option), it is worth knowing how alternatives compare for a <a href=\"https:\/\/aaxonix.com\/resources\/zoho-crm-slack-integration\/\" class=\"sp-content-link\">Zoho and Slack integration<\/a>:<\/p>\n\n<table>\n<tr><th>Criteria<\/th><th>Zoho Flow<\/th><th>Zapier<\/th><th>Custom (API)<\/th><\/tr>\n<tr><td>Setup complexity<\/td><td>Low (visual builder, native Zoho auth)<\/td><td>Low (similar visual builder)<\/td><td>High (code, hosting, OAuth)<\/td><\/tr>\n<tr><td>Cost<\/td><td>Included with Zoho One; standalone from $10\/month<\/td><td>Free tier limited; paid from $29.99\/month<\/td><td>Hosting costs only<\/td><\/tr>\n<tr><td>Zoho People triggers<\/td><td>Native, full event coverage<\/td><td>Limited trigger options<\/td><td>Full API access<\/td><\/tr>\n<tr><td>Slash command support<\/td><td>Not natively (needs middleware)<\/td><td>Not natively (needs middleware)<\/td><td>Full control<\/td><\/tr>\n<tr><td>Maintenance<\/td><td>Minimal (Zoho-managed)<\/td><td>Minimal (Zapier-managed)<\/td><td>You maintain code and infrastructure<\/td><\/tr>\n<tr><td>Best for<\/td><td>Zoho-first organisations<\/td><td>Multi-vendor stacks<\/td><td>Complex, custom requirements<\/td><\/tr>\n<\/table>\n\n<p>For organisations already using <a href=\"https:\/\/aaxonix.com\/services\/zoho\/\" class=\"sp-content-link\" target=\"_blank\">Zoho&#8217;s product suite<\/a>, 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.<\/p>\n\n<p>For a full overview of all available options, explore our <a href=\"https:\/\/aaxonix.com\/resources\/zoho-integrations-complete-guide\/\" class=\"sp-content-link\">complete guide to Zoho integrations<\/a>.<\/p>\n<div class=\"faq-section\">\n<h2>Frequently Asked Questions<\/h2>\n<div class=\"faq-item\">\n<p class=\"faq-question\">Can Zoho People send leave approval notifications directly to Slack without Zoho Flow?<\/p>\n<p class=\"faq-answer\">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.<\/p>\n<\/div>\n<div class=\"faq-item\">\n<p class=\"faq-question\">How do I map Slack users to Zoho People employees for the slash command?<\/p>\n<p class=\"faq-answer\">The slash command middleware uses the Slack user&#8217;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.<\/p>\n<\/div>\n<div class=\"faq-item\">\n<p class=\"faq-question\">What Zoho People API scopes are needed for the leave balance slash command?<\/p>\n<p class=\"faq-answer\">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&#8217;s Self Client option, and store the refresh token securely in your middleware&#8217;s environment variables.<\/p>\n<\/div>\n<div class=\"faq-item\">\n<p class=\"faq-question\">Is there a rate limit on the Zoho People Leave API?<\/p>\n<p class=\"faq-answer\">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.<\/p>\n<\/div>\n<div class=\"faq-item\">\n<p class=\"faq-question\">Can I use Zoho Cliq instead of Slack for these HR notifications?<\/p>\n<p class=\"faq-answer\">Yes. <a href=\"https:\/\/aaxonix.com\/resources\/zoho-cliq-team-messaging\/\" class=\"sp-content-link\">Zoho Cliq<\/a> 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.<\/p>\n<\/div>\n<\/div>\n\n<div class=\"aax-cta\">\n<p>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.<\/p>\n<a href=\"https:\/\/aaxonix.com\/contact\/\">Book a free consultation<\/a>\n<\/div>\n\n<p>A 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.<\/p>\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>On this page HR teams that split their day between Zoho People and Slack know the friction: a leave request sits in&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2192,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[511],"tags":[545,544,354,480,167,75,546],"class_list":["post-2193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-zoho","tag-employee-notifications","tag-hr-automation","tag-leave-management","tag-slack-integration","tag-zoho-flow","tag-zoho-people","tag-zoho-people-api"],"_links":{"self":[{"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/posts\/2193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/comments?post=2193"}],"version-history":[{"count":2,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/posts\/2193\/revisions"}],"predecessor-version":[{"id":2658,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/posts\/2193\/revisions\/2658"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/media\/2192"}],"wp:attachment":[{"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/media?parent=2193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/categories?post=2193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aaxonix.com\/resources\/wp-json\/wp\/v2\/tags?post=2193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}