I wish remote work were permanently mandated so we could join work calls from a movie theatre or even while skydiving! But wait, it's time to wake up! The alarm has snoozed twice, and your team has already logged on for the day.
Keeping tabs on attendance shouldn't feel like guiding a flock of rebellious sheep. Hence, let's automate check-in and check-out notifications using the Zoho Cliq Platform Schedulers and the Zoho People API, eliminating the guesswork in attendance management and reducing the risk of errors associated with manual monitoring.
How does this solution benefit a business?
- Real-time reminders reduce instances of ghost check-ins and ensure accurate recording of everyone's logged hours.
- Essential for attendance tracking, payroll accuracy, compliance with labour laws, and audits.
- The entire team stays informed, fostering a cohesive workflow that eliminates the need for micromanagement.
Pre-requisites:
Before beginning to script the code below, we must create a connection in Cliq with Zoho People. Once a connection is created and connected, you can use it in Deluge integration tasks and invoke URL scripts to access data from the required service.
Create a Zoho People default connection with any unique name with the scopes - ZohoPeople.Attendance.ALL , ZohoPeople.forms.ALL and ZohoPeople.leave.ALL
ⓘ Document for reference : Connections in Cliq
How to obtain or locate the channel unique name in Cliq?
Navigate to the top right corner of the channel and locate the three dots. Click it.
In the menu that appears, select "Channel info" and a pop-up will open, displaying detailed channel information.
Hover over the "Connectors" section and click it. Under "API Parameters," you will find the Channel ID and unique name.
We need to create two schedulers, specifically one for check-in and another for check-out.
- After a successful login in Cliq, hover to the top right corner and click your profile. Post clicking, navigate to Bots & Tools > Schedulers.
- On the right, click the "Create Scheduler" button.
- To learn more about schedulers and their purposes, refer to the Introduction to Schedulers.
- Create a scheduler using your preferred name. Specify the following details: the scheduler name and a description.
- For the recurring period, choose the type "Weekly." Select Monday through Friday and set the time of execution to 11 AM or any other time that aligns with your company's check-in time, or customise the recurring period based on your specific use case.
- Finally, click "Save & edit code" and paste the following code.
- currentDate = zoho.currentdate;
- currentDateString = currentDate.toString("dd-MMM-yyyy");
- fromIndex = 1;
- toIndex = 200;
- // Get all active users
- users = zoho.people.getRecords("employee",fromIndex,toIndex,{},"{CONNECTION_LINK_NAME}");
- usersList = List();
- usersList.addAll(users);
- iterations = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
- // Get All Employees ( 4000 MAX )
- if(users.size() == 200)
- {
- for each iteration in iterations
- {
- fromIndex = fromIndex + toIndex;
- toIndex = toIndex + 200;
- users = zoho.people.getRecords("employee",fromIndex,toIndex,{},"{CONNECTION_LINK_NAME}");
- if(users.size() > 0 && users.size() == 200)
- {
- usersList.addAll(users);
- }
- else if(users.size() > 0 && users.size() < 200)
- {
- usersList.addAll(users);
- break;
- }
- else
- {
- break;
- }
- }
- }
-
- // Get all the employees checkedin from the morning.
- getAttendenceEntries = invokeurl
- [
- url :"https://people.zoho.com/api/attendance/fetchLatestAttEntries?duration=240"
- type :GET
- connection:"{CONNECTION_LINK_NAME}"
- ];
- latestAttendanceRecords = getAttendenceEntries.get("response").get("result");
- checkedInUsers = List();
- for each userRecord in latestAttendanceRecords
- {
- checkedInEmployeeEmail = userRecord.get("emailId");
- checkedInUsers.add(checkedInEmployeeEmail);
- }
-
- // Get all the employees who applied for leave both approved and pending ( Remove PENDING to exclude only the leave approved employees )
- leaveApprovedEmployees = invokeurl
- [
- url :"https://people.zoho.com/api/v2/leavetracker/leaves/records?from=" + currentDateString + "&to=" + currentDateString + "&dateFormat=dd-MMM-yyyy&approvalStatus=[APPROVED,PENDING]"
- type :GET
- connection:"{CONNECTION_LINK_NAME}"
- ];
- info leaveApprovedEmployees;
- leaveApprovedEmployeesList = List();
- for each member in leaveApprovedEmployees.get("records")
- {
- leaveApprovedEmployeesList.add(member.get("EmployeeId"));
- }
- info leaveApprovedEmployeesList;
-
-
- // Add the users to yet to checkin list if they are not checked from the morning and not applied for leave
- usersYetToCheckIn = list();
- for each user in usersList
- {
- employeeEmail = user.get("EmailID");
- employeeId = user.get("EmployeeID");
- employeeStatus = user.get("Employeestatus");
- if(!checkedInUsers.contains(employeeEmail) && !leaveApprovedEmployeesList.contains(employeeId) && employeeStatus.equals("Active"))
- {
- usersYetToCheckIn.add(employeeEmail);
- }
- }
-
- // Mention the list of users in the channel.
- if(usersYetToCheckIn.size() == 0)
- {
- info "No users were found yet to checked-in at 11 PM today. Great to see everyone wrapping in on time! ✅";
- }
- else
- {
- usersYetToCheckInString = "";
- for each user in usersYetToCheckIn
- {
- usersYetToCheckInString = usersYetToCheckInString + "[" + user + "](mail:" + user + ") \n";
- }
- usersYetToCheckInString = usersYetToCheckInString.subString(0,usersYetToCheckInString.length() - 2);
- response = Map();
- card = Map();
- card.put("title","Employees who haven’t checked in yet ( " + usersYetToCheckIn.size() + " )");
- card.put("thumbnail","https://i.pinimg.com/originals/85/e9/f3/85e9f3f5ac31fc5aab586e208297f43d.gif");
- card.put("theme","modern-inline");
- response.put("card",card);
- response.put("text",usersYetToCheckInString);
- info zoho.cliq.postToChannel("{CHANNEL_UNIQUE_NAME}",response);
- }

- Now, let's follow the same steps and create a scheduler for checkout reminders. Under the recurring period, choose the type as "Weekly." Select Monday through Friday and set the time of execution to 7 PM or any other time that aligns with your company's checkout time, or customise the recurring period based on your specific use case.
- Click "Save & edit code" and paste the following code.
- attendanceResponse = invokeurl
- [
- url :"https://people.zoho.com/api/attendance/fetchLatestAttEntries?duration=600"
- type :GET
- connection:"{CONNECTION_LINK_NAME}"
- ];
- info attendanceResponse;
- todayDate = zoho.currenttime.toString("YYYY-MM-dd");
- latestAttendanceRecords = attendanceResponse.get("response").get("result");
- usersWithoutCheckout = list();
- if(latestAttendanceRecords.size() > 0)
- {
- for each userRecord in latestAttendanceRecords
- {
- userEmail = userRecord.get("emailId");
- dailyEntries = userRecord.get("entries");
- for each dailyEntry in dailyEntries
- {
- if(dailyEntry.containsKey(todayDate))
- {
- todayEntryDetails = dailyEntry.get(todayDate);
- attendanceLogs = todayEntryDetails.get("attEntries");
- for each logEntry in attendanceLogs
- {
- if(!logEntry.containsKey("checkOutTime"))
- {
- usersWithoutCheckout.add("{@" + userEmail + "}");
- }
- }
- }
- }
- }
- }
- usersWithoutCheckoutString = usersWithoutCheckout.toString("\n");
- if(usersWithoutCheckoutString.trim().length() == 0){
- usersWithoutCheckoutString = "No users were found checked-in after 7 PM today. Great to see everyone wrapping up on time! ✅";
- }
- response = Map();
- card = Map();
- card.put("title","List of users who remain checked in ( " + usersWithoutCheckout.size() + " )");
- card.put("thumbnail","https://media.tenor.com/Hd8nLZZTPRYAAAAi/alarm-clock-alarm.gif");
- card.put("theme","modern-inline");
- response.put("card",card);
- response.put("text",usersWithoutCheckoutString);
- info zoho.cliq.postToChannel("{CHANNEL_UNIQUE_NAME}",response);

Wrapping up and checking out for the day, hopefully
Whether you're from HR, tired of chasing attendance logs, or an enthusiastic team lead trying to increase your team's visibility and adjust workload accordingly, Cliq Platform's schedulers are essential and ensure that accurate tracking is consistent and compliance is maintained. Additionally, this would be scalable to handle organizations of any size.
If attendance tracking is a binge-watchable series, what plot twist would these reminders add to your team's script? Let us know in the comments below!
Recent Topics
[Important announcement] Zoho Writer will mandate DKIM configuration for automation users
Hi all, Effective Dec. 31, 2024, configuring DKIM for From addresses will be mandatory to send emails via Zoho Writer. DKIM configuration allows recipient email servers to identify your emails as valid and not spam. Emails sent from domains without DKIM
Column letter from number
Hello, I am trying to select a cell and i have the column number. How do i do this or is there a way of getting the letter from the number? Thank you
API credit COQL COUNT
The docs describe API credits in COQL from the LIMIT perspective: https://www.zoho.com/crm/developer/docs/api/v8/COQL-Overview.html When using aggregate functions such as `COUNT` or `SUM`, is that billed as 1 API credit?
Trigger a Workflow Function if an Attachment (Related List) has been added
Hello, I have a Case Module with a related list which is Attachment. I want to trigger a workflow if I added an attachment. I've seen some topics about this in zoho community that was posted few months ago and based on the answers, there is no trigger
Standard Description Field - Can I change label or add dd tooltip
Is there a way fo you guys to allow the customer to change the label name for the description field in the customer portal when submitting tickets. Or at least allow us to add a tooltip to clarify what description we need from them. I know I can create my own separate multi line description field but if I do that, it doesn't have the nice toolbar with Bold, Italic, Underline, color, font, indent, etc. Can you please allow us to add a tooltip to the zoho standard description field?
Weekly Tips : Save Time with Saved Search
Let's assume your work requires you to regularly check emails from important clients that have attachments and were sent within a specific time period. Instead of entering the same conditions every time—like sender, date range, and attachments included—you
Remove 'This is an automated mail from Zoho Sign' in footer
Hi there, Is it possible to remove or change the text under the e-mail templates? I can't figure out how to do that: Would love to hear from you. Kind regards, Tristan
How can I link Products in a Deal Subform to the Products Module
Hello, I have a pricing subform on our Deals page and use a lookup field to associate a product with each line. I want to be able to look at a product page within the Products module and see a list of the deals connected to that product. I have this working
Organize and manage PDFs with Zoho PDF Editor's dashboard
Hello users, Zoho PDF Editor's dashboard is a one-stop place to upload, sort, share PDF files, and more. This article will explore the various capabilities that Zoho PDF Editor's dashboard offers. A few highlights of Zoho PDF Editor's dashboard: Upload
Updating records through Zoho Sheets View doesn't update timeline or trigger workflow rules
I have noticed that when i update a series of record with the zoho sheets view (see here http://d.pr/i/ahnR) it doesn't update timeline history or trigger workflow rules. I am using it in the Deals module. Looking forward for some more info. Denis
Passing Info from Function to Client Script
Hello, I have recently started making use of client script for buttons, allowing me to give the user information or warnings before they proceed. This is great. However, I have never quite managed to pass back any extra information from the function to
Automatically Update Form Attachment Service with Newly added Fields
Hi, When I have a Form Setup and connected to a 3rd Party Service such as OneDrive for Form Attachments, when I later add a new Upload Field I have to remove and redo the entire 3rd Party Setup from scratch. This needs to be improved, such as when new
Cannot get code to work with v2.mergeAndStore!
Please can someone help me pass subform items into a repeating mail merge table row using v2.mergeAndStore? I have a mail merge template created in Writer and stored in Workdrive. This template is referenced by a custom CRM function which merges all of
Drag 'n' Drop Fields to a Sub-Form and "Move Field To" Option
Hi, I would like to be able to move fields from the Main Page to a Sub-Form or from a Sub-Form to either the Main Page or another Sub-Form. Today if you change the design you have to delete and recreate every field, not just move them. Would be nice to
Zoho Payroll for Canada
Is anyone else having problems getting setup for Canada?
Passing the CRM
Hi, I am hoping someone can help. I have a zoho form that has a CRM lookup field. I was hoping to send this to my publicly to clients via a text message and the form then attaches the signed form back to the custom module. This work absolutely fine when
Super Admin Logging in as another User
How can a Super Admin login as another user. For example, I have a sales rep that is having issues with their Accounts and I want to view their Zoho Account with out having to do a GTM and sharing screens. Moderation Update (8th Aug 2025): We are working
One Contact with Multiple Accounts with Portal enabled
I have a contact that manages different accounts, so he needs to see the invoices of all the companies he manage in Portal but I found it not possible.. any idea? I tried to set different customers with the same email contact with the portal enabled and
Reopen ticket on specific date/time
Is there a way that we can close a ticket and setup a reopen of that ticket on a specific date and time? (without using the "on hold" ticket option)
User Automation: User based workflow rules & webhooks
User management is an undeniable part of project management and requires adequate monitoring. As teams grow and projects multiply, manual coordination for updating users & permissions becomes difficult and can give way to errors. User automation in Zoho
Disable Zoho Contacts
We don't want to use this app... How can we disable it?
Default Ticket View - Table?
Guys, We mostly use the table view to queue tickets. Maybe I am missing it - but how can I set that view as 'default" for all our agents? Thanks JV
Zoho One IS BUGGY
Here are some things that just don't work: - Disabling applications from certain Spaces - Adding users (probably only for me) - Renaming applications in Zoho One Portal (fixed by now) - Reordering applications in Spaces When I try to reorder: It feels
Paid Support Plans with Automated Billing
We (like many others, I'm sure) are designing or have paid support plans. Our design involves a given number of support hours in each plan. Here are my questions: 1) Are there any plans to add time-based plans in the Zoho Desk Support Plans feature? The
Merge Fields that previously worked are now giving an Error!
Saving a URL Link button on the Deal module. The below fields used to save without issue at all, but now produce an error of "URL contains unsupported merge field!" ${Contacts.Mailing Street} ${Contacts.Mailing City} ${Contacts.Mailing State} ${Contacts.Mailing
Move email between inboxes?
Is it possible to move emails from one team inbox to another? We would like to be able to have a single "catch-all" inbox for incoming requests, and then move the email to the appropriate department inbox. I was hoping we would be able to accomplish this
Clarification on Zoho Forms 1-User Plan: Multiple Submitters and Approvers
Question Content (Copy–Paste Ready) Hello Zoho Team, I would like clarification regarding Zoho Forms pricing and user limits. I am planning to subscribe to the ₹700/month (1 user) plan. My use case is as follows: Only 1 person (myself) will create and
CRM Cadences recognise auto-responses
I have leads in a Cadence. I get an auto-responder reply "I'm out of the office..." Normally Cadences seems to know that isn't a real reply and keeps the lead enrolled in the cadence. However, today, Cadences has UNENROLLED a Lead who sent an auto-reponse
App for Mac OS X please!
It would be awesome to have a mail app for Mac OS X that included all the cool features such as steams, calendar, tasks, contacts, etc. Most people prefer native apps, rather than running it through a web browser. I know that we can use the IMAP, CalDAV,
Ability to Edit Ticket Subject when Splitting a Ticket
Often someone will make an additional or new request within an existing ticket that requires we split the ticket. The annoying part is that the new ticket maintains the subject of the original ticket after the split so when the new ticket email notification
Facing Issues with Sites Mobile font sizes
my page renediaz.com is facing issues mobile view, when i try to lower font sizes in home page, instead of changing the size, it changes the line space
Zoho Books Payroll
How am I supposed to do payroll and pay my employees with Zoho Books? I think it's pretty strange that an accounting software doesn't have the ability to perform one of the most common functions in business; paying your employees. Am I missing something,
Different Task Layouts for Subtasks
I was wondering how it would be possible for a subtask to have a different task layout to the parent task.
60 Days Into Zoho - Tiktok Branding Startup -7 Questions?!
Wsp Everybody I co-own a TikTok Branding / Consulting Startup & have been using Zoho for the past 60 days - Am now looking to make our overall operations & processes more Efficient & Effective! Curious to know how others are using the platform & what's
Notifications in Cliq client for Linux
If I got it right, Cliq desktop client for Linux does not use the generally accepted notification method via org.freedesktop.Notification interface. For this reason, Cliq notifications do not look and behave as all other notifications. Is it possible
Canvas templates can now be shared with different CRM organizations
----------------------------------------Moderated on 14th February, 2023------------------------------------------- Dear all, This feature is now open for all users in all DCs. To learn more about importing and exporting canvas templates, read our help
Unable to produce monthly P&L reports for previous years
My company just migrated to Books this year. We have 5+ years financial data and need to generate a monthly P&L for 2019 and a monthly P&L YTD for 2020. The latter is easy, but I'm VERY surprised to learn that default reports in Zoho Books cannot create
Change Last Name to not required in Leads
I would like to upload 500 target companies as leads but I don't yet have contact people for them. Can you enable the option for me to turn this requirement off to need a Second Name? Moderation update (10-Jun-23): As we explore potential solutions for
Reply to Email for SO/PO
Hello, We are new to Zoho Books and running into an issue. Our support@ email is our integration user. When our team is sending out PO/SO's we are updating the sender email, but for some reason many of our responses are coming back to our support@ email
ZOHO Payroll Canada
Any plans on the roadmap for Canada?
Next Page