Tip 22: How to allow employees to check in and out, and then automatically calculate their total work hours

Tip 22: How to allow employees to check in and out, and then automatically calculate their total work hours



Hi everyone,

Keeping accurate track of employee hours is crucial to smoothly running business. So this week, we wanted to go over how you can automate this whole process using Zoho Creator. With this tip, you'll learn how to set up a page that will make it easy for your employees to check in and out, and help you track their work hours on a daily basis.

To do this, let's create a sample application called Attendance App, and show you how you can use it to track the total work hours of each of your employees.

Application flow
  • Employees can check in and out by simply clicking on a button
  • Once the employee checks out, the total working hours will be calculated and updated in the admin report
  • Managers and administrators can then monitor the total work hours of each employee on a daily basis 
To do this, we need to create the following components:
  • Attendance form used to record the check in and check out times
  • Dashboard with check in and check out buttons, and two reports
  • A way for users to be given access to the application
  • A report for employees to view their check-in and check-out times
  • A report where the admin can view the details of all employees


Step 1: Create the attendance form

First, we need to create the attendance form to record the times. This form can be hidden, as the check-ins and check-outs are automatically recorded by clicking on the buttons on the page. 



Fields on the attendance form:
  • Email (Email field)
  • Check-in time (Date-Time field)
  • Check-out time (Date-Time field)
  • Total time (Single line field)
  • Status (Drop down field)
Step 2: Create functions for the check in and check out buttons

Now, let's create the two functions we need to record the check-in and check-out times. All you need to do is go to Workflows, click New Functions, and add some code snippets.

Function 1: To record the check-in time

The Check In button on the page calls a function, which adds a record to the attendance form. Use the below code to create the checkintime function:

  1. void login.checkintime()
  2. {
  3. fet = Attendance_form[Check_in_time == today &&Email == zoho.loginuserid]; 
  4. // This condition is to prevent an employee from checking in multiple times on the same day.
  5. if(fet.count() == 0)
  6. {
  7. new = insert into Attendance_form
  8. [
  9. Added_User=zoho.loginuser
  10. Email=zoho.loginuserid
  11. Check_in_time=zoho.currenttime
  12. Status="Checked In"
  13. ];
  14. } .
  15. // This adds a record in the attendance form, which captures the logged-in employee's email and the current time, and sets the status as "Checked In".
  16. openUrl("https://app.zohocreator.com/ownername/attendance-app/report-embed/User_report?zc_SecHeader=false&Email=" + zoho.loginuserid,"iframe","zohoview");
  17. // OpenURL will help you refresh the user-based report (embedded in the page) to display only the login-based entries.
  18. }

Function 2: To record the check-out time

Now, let's create a function that helps us record the check-out time. The Check Out button captures the check-out time, fetches the record containing the check-in time of the corresponding user, and calculates the total working time, which is the difference between the check-out and check-in times in the hours:minutes format.

  1. void login.checkouttime()
  2. {
  3. fet = Attendance_form[Check_in_time == today && Check_out_time == null && Email == zoho.loginuserid];

  4. //This condition checks the record based on the logged-in user and today's date, which has the check-out time as null. It avoids multiple check-outs and ensures the record is added by the corresponding user.

  5. if(fet.ID > 0)
  6. {
  7. fet.Check_out_time=zoho.currenttime;
  8. mil_sec = (fet.Check_out_time - fet.Check_in_time);
  9. actual_minutes = mil_sec / (1000 * 60);
  10. //1000 -> mill sec to sec, 60 -> sec to min
  11. mins = actual_minutes.toLong() % 60;
  12. // % 60 -> Exclude Hours
  13. hours = (actual_minutes / 60).toLong();
  14. // 60 -> min to hour, % 24 (optional) -> Exclude Days
  15. time_string = hours + " : " + mins;
  16. fet.Total_time=time_string;
  17. fet.Status="Checked Out";
  18. }
  19. else
  20. {
  21. // This part handles cases where the user checks in for a night shift, and by the time they check out, the date will have changed. In this case, we use zoho.currentdate.subDay(1) to get the previous date's record. This will be executed only if there isn't any matching record for today's date.
  22. fet1 = Attendance_form[Check_in_time == zoho.currentdate.subDay(1) && Check_out_time == null && Email == zoho.loginuserid];
  23. if(fet1.ID > 0)
  24. {
  25. fet1.Check_out_time=zoho.currenttime;
  26. mil_sec = (fet1.Check_out_time - fet1.Check_in_time);
  27. actual_minutes = mil_sec / (1000 * 60);
  28. //1000 -> mill sec to sec, 60 -> sec to min
  29. mins = actual_minutes.toLong() % 60;
  30. // % 60 -> Exclude Hours
  31. hours = (actual_minutes / 60).toLong();
  32. // 60 -> min to hour, % 24 (optional) -> Exclude Days
  33. time_string = hours + " : " + mins;
  34. fet1.Total_time=time_string;
  35. fet1.Status="Checked Out";
  36. }
  37. }
  38. openUrl("https://app.zohocreator.com/<workspaceName>/attendance-app/report-embed/User_report?zc_SecHeader=false&Email=" + zoho.loginuserid,"iframe","zohoview");

  39. // And this code refreshes the user-based report on the page to display the filtered login-based record with the updated check-out time and the total time.



Step 3: Add the buttons to the dashboard and link them to the functions


Once you've created both functions, you need to create two buttons—Check In and Check Out—on your dashboard, and link the function to these buttons. When a user clicks on them the function is executed and the time is captured.

To do that follow these steps: 
  1. Go to the page builder.
  2. Drag and drop a button onto the page builder, and you'll see a new window appear, where you can add other elements.
  3. Choose the Action type you want to perform—in this case, Execute function.
  4. Choose the function that needs to be executed (refer to the screenshot below). 
  5. Create both buttons and repeat these steps. 



Step 4: Add the reports to the dashboard Admin dashboard:

To track employee working hours This dashboard will help the admin keep track of employee work hours. Apart from the two buttons on the page, there are two reports, which are embedded using an HTML snippet.
  • The list report will dynamically display records based on the logged-in user (for example: if Employee A is logged in, they can only view their own times).
  • The Kanban report will list all the users who've checked in on that day, and it can only be viewed by the admins of the application. 
Now let's embed these two reports on the dashboard. To do that, we need to drag and drop the HTML snippet onto the page builder and write the script below:




  1. <%
  2. {
  3. a = "https://app.zohocreator.com/ownername/attendance-app/report-embed/User_report?zc_SecHeader=false&Email=" + zoho.loginuserid;
  4. %>
  5. <iframe name='zohoview' height='400' width='100%' frameborder='0' scrolling='Auto' src='<%=a%>'></iframe>
  6. <%
  7. if(zoho.loginuserid == zoho.adminuserid)
  8. {
  9. %>
  10. <div elName='zc-component' viewLinkName='Admin' params='zc_Header=true'>
  11. Loading View...</div>
  12. <%
  13. }
  14. }
  15. %>

In the code above, we're embedding the user report using an iframe, so that the user report (iframe) is automatically refreshed after a user clicks on Check In or Check Out. We've also hidden the secondary header present on the user report by setting up zc_SecHeader=false to prevent users from manually adding or modifying the record from the report. The logged-in user filter can be directly applied on the report, or by using the parameter "Email=" + zoho.loginuserid" in the URL.

The admin report is added using a DIV tag, and is displayed only to the account's super admin using the if condition. if(zoho.loginuserid == zoho.adminuserid)
If required, we can add other non-admin emails using the criteria below to make the admin report available for those particular users: 
if(zoho.loginuserid == zoho.adminuserid || zoho.loginuserid == "nonamdin@gmail.com") 

The admin will also have the option to check out users, in case they forget at the end of their shift.

Admin report

The Kanban report is created using the status field, which is a dropdown field, and you can add the code in On Update of the Status Field.For example, when the admin drags the record from the Check in time column to the Check out time column, the user will be automatically checked out. 

You need to choose Edited for Run when a record is while creating the workflow.




Below is the script you need to write in On Update of the Status Field, so that when the record is dragged and dropped to the Check out time column on the Kanban report, the check-out time will be captured.

  1. if(input.Status == "Checked Out" && input.Check_out_time == null)
  2. {
  3. input.Check_out_time = zoho.currenttime;
  4. mil_sec = (input.Check_out_time - input.Check_in_time);
  5. actual_minutes = mil_sec / (1000 * 60);
  6. //1000 -> mill sec to sec, 60 -> sec to min
  7. mins = actual_minutes.toLong() % 60;
  8. // % 60 -> Exclude Hours
  9. hours = (actual_minutes / 60).toLong();
  10. // 60 -> min to hour, % 24 (optional) -> Exclude Days
  11. time_string = hours + " : " + mins;
  12. input.Total_time = time_string;
  13. }
We've also added a filter to the admin report, that will allow the admin to view all the employees who checked in and out for the day. And, if required, you can edit it by week or month, depending on your requirements.



Note: We will soon roll out the hoursBetween function, which can be used to find the difference between the check in and check out times. This function will return the difference of hours between the given start and end date-time values.

We hope this tip was useful for you! If you have any questions, feel free to ask in the comments below, and we'll be happy to address them for you!




























    Access your files securely from anywhere









                          Zoho Developer Community




                                                • Desk Community Learning Series


                                                • Digest


                                                • Functions


                                                • Meetups


                                                • Kbase


                                                • Resources


                                                • Glossary


                                                • Desk Marketplace


                                                • MVP Corner


                                                • Word of the Day


                                                • Ask the Experts





                                                          Manage your brands on social media



                                                                Zoho TeamInbox Resources



                                                                    Zoho CRM Plus Resources

                                                                      Zoho Books Resources


                                                                        Zoho Subscriptions Resources

                                                                          Zoho Projects Resources


                                                                            Zoho Sprints Resources


                                                                              Qntrl Resources


                                                                                Zoho Creator Resources



                                                                                    Zoho CRM Resources

                                                                                    • CRM Community Learning Series

                                                                                      CRM Community Learning Series


                                                                                    • Kaizen

                                                                                      Kaizen

                                                                                    • Functions

                                                                                      Functions

                                                                                    • Meetups

                                                                                      Meetups

                                                                                    • Kbase

                                                                                      Kbase

                                                                                    • Resources

                                                                                      Resources

                                                                                    • Digest

                                                                                      Digest

                                                                                    • CRM Marketplace

                                                                                      CRM Marketplace

                                                                                    • MVP Corner

                                                                                      MVP Corner







                                                                                        Design. Discuss. Deliver.

                                                                                        Create visually engaging stories with Zoho Show.

                                                                                        Get Started Now


                                                                                          Zoho Show Resources

                                                                                            Zoho Writer

                                                                                            Get Started. Write Away!

                                                                                            Writer is a powerful online word processor, designed for collaborative work.

                                                                                              Zoho CRM コンテンツ






                                                                                                Nederlandse Hulpbronnen


                                                                                                    ご検討中の方




                                                                                                          • Recent Topics

                                                                                                          • Mobile Chat Window - Full Screen

                                                                                                            Hello, The mobile chat window takes up the full screen, which is highly confusing for most customers! Using a desktop machine, I see the same happens when reducing the browser width to 800px or below. This suggests that it responsive web design, causing the switch to full screen. Can we fix this very annoying behaviour ourselves using a custom css file? If so, can you please let me know how? Thanks
                                                                                                          • Is it possible to customize ZC Themes?

                                                                                                            I understand you can choose a layout and customize Brand Color, App Header, Menu, and Sub-Menu components, but can you override some of the default theme settings with CSS or a config file? For example, - Table highlight color - Listview auto filter highlight
                                                                                                          • Is it possible to create Custom function-based Lookup field in Zoho CRM

                                                                                                            Is it possible to create a custom function-based lookup field in Zoho CRM? If so, how? Use case: Need to fetch users from Zoho Projects into a dropdown field in Zoho CRM.
                                                                                                          • @mention in comments no notification

                                                                                                            Hi, hope someone can help. When we @mention someone in the comments in Zoho Creator, how is that user notifed as we don't get anything on email or in the app notifications. 
                                                                                                          • Zoho unified inbox

                                                                                                            The new changes have definitely improved things for switching between accounts.  But zoho still desperately needs a unified inbox.  It sucks to have to enter filters and folders for each and every inbox.  This seems like such a simple thing, i wonder why Zoho hasn't done it?
                                                                                                          • Add "Running Balance" column to Account Transaction Reports

                                                                                                            Hello, Currently Zoho Account Transaction Reports give you the opening balance, then lists the transactions, then provides the closing balance.  It would be great if you could add a column on the far right that shows the "Running Balance" on the account after each transaction.  There are many times when analyzing or tie-ing out transactions that this would be very helpful.  I currently have to frequently run a tape on my adding machine to get balance totals after a specific transaction on the list.
                                                                                                          • WhatsApp Channels in Zoho Campaigns

                                                                                                            Now that Meta has opened WhatsApp Channels globally, will you add it to Zoho Campaigns? It's another top channel for marketing communications as email and SMS. Thanks.
                                                                                                          • error : Object code : 6500

                                                                                                            b3 = map(); b3.put("name", "Test Project Name"); updateprojects2 = invokeurl [ url :"https://projectsapi.zoho.eu/restapi/portal/era0130/projects/169495000000928007/" type :PUT parameters: b3 connection:"in2" ]; info b3 ; info updateprojects2; ------------
                                                                                                          • How to book GST paid in zoho books

                                                                                                            hi, i am a new user to Zoho books and not able to book GST paid in books, kindly suggest how i can book it in books. thanks, siddharth
                                                                                                          • I got unknown charge from Zoho

                                                                                                            Good day, I need help disputing a charge I don't know from, zoho. I have ZohoMail and ZeptoMail. I purchase credits for ZeptoMail, and for ZohoMail I am not subcribed.
                                                                                                          • Function 56: Automatically enable the option for customers to pay via bank account

                                                                                                            Hello everyone and welcome back to our series! One of the key features of Zoho Books is its integration with multiple payment gateways, allowing you to receive online payments for your invoices. This ensures faster payments, automates payment tracking
                                                                                                          • Attach Files to Your Notecards and share them on the go!

                                                                                                            Hey everyone! We’re excited to share a feature many of you have been asking for — you can now attach files directly to your text notecards and share with ease! 🙌 This update was built with your feedback in mind, especially for those who wanted a simple
                                                                                                          • How to searchByCriteria records that are under approval?

                                                                                                            I need to search for both approved and pending approval records Is that possible with this method? Or I need to a different method? var priceReqID = $Page.record_id; log(priceReqID); var records = ZDK.Apps.CRM.Price_List_Item.searchByCriteria("Price_Request:equals:"
                                                                                                          • How to add Simple Analytics to Zoho Pages?

                                                                                                            I have a website with Zoho Pages, how do I add Simple Analytics on it? They seem to have code they need to be embedded https://docs.simpleanalytics.com/script
                                                                                                          • Cant seem to delete an email account

                                                                                                            Hello, I have researching for 4 days how to delete an email account and I am absolutely without a clue. The email account I am trying to delete is support<AT>fyshoes<dot>com. It's the first email account I made and it (is???) was associated with the super user (me). I have since changed it to adming<AT>fychoes<dot>com and I see the support email in my list but I just cant seem to get rid of it. Ultimately I want to associate that email account with another user that I want to add. This is really
                                                                                                          • Import data into Multi-Select lookup field from CSV/Excel

                                                                                                            How to import data into a multi-select lookup field from the CSV/Excel Sheet? Let's say I have an Accounts multi-select lookup field in the Deals module and I want to import the Deals with Accounts field. Steps:- 1. Create/edit a multi-select lookup field
                                                                                                          • Script that deletes a record?

                                                                                                            We're using WP Plugin "Integration for WooCommerce and Zoho Pro", and have created a couple of Feeds to send data to Zoho. We are trying to create Contact records, but only based upon condition. Tried to make it with small Deluge function and Workflow,
                                                                                                          • A formula that capitalises the first letter of each word

                                                                                                            Hi all, is there a zoho formula that can capitalise the first letter of each word in a string? INITCAP only capitalises the first letter of the first word.
                                                                                                          • Quotes in Commerce?

                                                                                                            In Zoho Ecommerce, I need to be able to generate quotes, negotiate with customers, and then generate invoices. Currently, I plan to integrate Zoho CRM to generate quotes. After negotiation and confirmation, I will push the details to Zoho Ecommerce to
                                                                                                          • Zoho Commerce - Mobile Application

                                                                                                            Does Zoho Commerce have a mobile application for customers to place an order?
                                                                                                          • Register user through Phone Number by Generating OTP

                                                                                                            In zoho commerce , I am developing website on online food store Inilialy the user get verification code to their email for registering there account for login. But I need to login using phone number by generating OTP automatically rather than verification
                                                                                                          • Custom Buttons for Mass Actions

                                                                                                            Hello everyone, We’ve just made Custom Buttons in Zoho Recruit even more powerful! You can now create Bulk Action Buttons that let you perform actions on multiple records at once, directly from the List View. What’s new? Until now, custom buttons were
                                                                                                          • Zoho Vault Passwords

                                                                                                            Is there a way to consume Zoho Vault Manager passwords using the API? Thanks in advance.
                                                                                                          • Is the ChatGPT Assistant integration capable of recognizing WhatsApp voice messages?

                                                                                                            I was wondering: if a visitor sends me a voice message on WhatsApp, would the assistant be able to transcribe it and reply to them?
                                                                                                          • Zoho Creator to Zoho CRM Images

                                                                                                            Right now, I am trying to setup a Notes form within Zoho Creator. This Notes will note the Note section under Accounts > Selected Account. Right now, I use Zoho Flow to push the notes and it works just fine, with text only. Images do not get sent (there
                                                                                                          • 【Zoho CRM】レポート機能のアップデート

                                                                                                            ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 今回は「Zoho CRM アップデート情報」の中から、レポート機能のアップデートをご紹介します。 目次 1. レポートのエクスポート時のレコードIDの表示について 2. 通貨項目の表示について 3. レポートの削除の監査ログへの反映について 1. レポートのエクスポート時のレコードIDの表示について これまで、レポートをエクスポートするとファイルにレコードIDが必ず含まれていました。レコードIDが識別子として役立つ場合もありますが、実際には多くの企業で参照されることはありません。
                                                                                                          • Translation in zoho bookings

                                                                                                            We cant translate zoho booking emails. The general text we can change. But what about text like: ""Here a link to join the meeting online:"" and "Add to Zoho Calendar" and "Add to Google Calendar"? No professional business have mixed languages. Its looking
                                                                                                          • Is there any way to bill one client in different currencies on different invoices?

                                                                                                            I have some customers who have their currency set as USD and most of their billing is done in USD.   However, from time to time I have a need to bill them in my base currency GBP for some specific invoices, but there seems to be no way of doing this that I can see. The only workaround that I can see is to create two client records for the same client, one for USD billing and one for GBP billing, but this is not an ideal situation. Is it likely that the (hopefully!) soon to arrive multi-currency support
                                                                                                          • API name for all fields in Zoho Project (Standard or custom)

                                                                                                            Hi! I struggle to find easily all API name of all field in Zoho Project to build my API rest with other services. We can find them very fast in CRM but not in PRoject.   Could you share a function to get the list of all API Name of any field of an App
                                                                                                          • Disappearing Mouse cursor in Zoho Mail / Windows 11 (Chrome + Edge)

                                                                                                            I'm seeing an issue when writing mails with the light theme with the mouse cursor being white and the document area also being white - making it nearly impossible to see the mouse cursor. I see the problem on Windows 11 under Chrome and Edge. (Yet to
                                                                                                          • Zoho Assist not rendering NinjaTrader chart properly

                                                                                                            Hi everyone. Just installed and testing Zoho Assist. I want to display my laptop' screen (Windows 11) on a monitor connected to my Mac mini. The laptop is running a stock trading program called NinjaTrader. Basically, when running, this program displays
                                                                                                          • Link(s) between Notes

                                                                                                            Hello Everyone, It would be great if links could be created between notes. Let's say we have 5 Notes A, B, C , D, E. I would like to be able to link Note A to Note B but not in other way, so no link appears in Note B linking to Note A. An so on, linking
                                                                                                          • Feature Request: Assign Documents to Already Entered Bills, Expenses, Invoices, etc.

                                                                                                            Hi Zoho Team, We are regular users of the Documents module in Zoho Books and appreciate its ability to keep financial records well-organized. However, we’ve noticed a limitation: There is no way to attach a document from the "Documents > Files" section
                                                                                                          • I don't see any WITHDRAWL transaction at all

                                                                                                            Hi I manually imported my bank statement to Zoho books today and I am a complete newbie. I have been reading the knowledgebase but unable to fix this. I only see "Uncategorized 91 DEPOSIT transactions". I don't see any WITHDRAWL transaction at all. Also,
                                                                                                          • Shared inbox unable to see replies

                                                                                                            Hi we are a small company me and someone else, we have a shared inbox for our sale@ and contact@ however we have this issue where by if i reply to an email or the other person reply to the email, it does not show it to them and therefore we end up replying
                                                                                                          • 404 error at checkout

                                                                                                            Our customers are getting a 404 error at checkout. Anyone else with the same problem?
                                                                                                          • FONT Sizing in Notebook

                                                                                                            Hi Kishore - What is the status of adding font sizing to the application? I have several things that I have pasted directly into Notebook and the fonts are HUGE! I would like the ability to highlight them and reduce the font to a legible size. Nothing
                                                                                                          • Can managers Upload documents to their direct rapports?

                                                                                                            Admin employees have the ability to upload documents to employees' files; however, managers do not have add/manage button - is it possible for managers to upload their direct reports' documents, such as absence documents or 121 documents. Is there something
                                                                                                          • Leave balance display for next year

                                                                                                            Is there a way to not have a rollover or not limit the leave balance depending on the date. For example an employee has 10 days leave balance and wants to apply for January leave in December. They cant because the rollover doesnt show the leave balance
                                                                                                          • Please add an “Auto-Apply Unused Credits” toggle

                                                                                                            Hello — please add a simple org-level option to automatically apply unused credits (credit notes, excess payments, retainers) to new invoices and/or bills. An ON/OFF toggle with choices “invoices”, “bills”, or “both” would save lots of manual work for
                                                                                                          • Next Page