Hi everyone!
Welcome back to the Kaizen series! In the post, we discuss a use case in hospitality industry: how an Arrival Readiness web tab widget can be used to let reception staff identify and resolve issues before arrival of guests.
Use case
In the hospitality industry, every guest interaction is an opportunity to make a lasting impression. To ensure a smoother check-in process, reception staff should have access to information about which guests are arriving soon and be able to take the necessary action without hassle. The important question is:
"Which arrivals require action before the guest reaches the property?"
For example:
- A guest's ID verification is still pending.
- A guest has requested a service that has not yet been assigned.
- Other bookings are already ready for arrival.
Instead of making the reception staff open individual records and manually check these details, we can surface the information in a Zoho CRM Widget and provide an action directly from the dashboard. Without a focused dashboard, the team has to open each booking, inspect fields, and decide what to do. That takes time and increases the chance of missing something before guests arrive.
In this Kaizen, we'll build an Arrival Readiness Web Tab that:
- Retrieves bookings arriving within the next 48 hours.
- Determines the readiness of each booking.
- Displays a summary of arrivals requiring action.
- Allows staff to send an ID verification reminder.
- Allows staff to create a follow-up task for an unassigned special request.
- Updates the Booking record after the action is completed.
The solution combines CRM Widgets, Deluge Functions, REST API-enabled Functions, and CRM APIs.
To showcase this solution, we have created a custom module, Bookings, with the following custom fields:
|
Field Name
|
API Name
|
Data Type
|
| Arrival Date |
Check_In |
DateTime |
| Departure Date |
Check_Out |
DateTime |
| Guest Name |
Guest_Name |
Single Line |
| ID Verification |
ID_Verification |
Single Line |
| Owner |
Owner1 |
Single Line |
| Payment Status |
Payment_Status |
Pick List |
| Readiness |
Readiness |
Pick List |
| Reminder Sent |
Reminder_Sent |
Boolean |
| Reminder Sent At |
Reminder_Sent_At |
DateTime |
| Request Status |
Request_Status |
Pick List |
| Special Request |
Special_Request |
Multi Line (Small) |
| Verification Link |
Verification_Link |
Single Line |
We also have a web tab widget in which details are displayed.
Real-time flow inside the widget
When the widget loads:
- It calls 'getArrivalReadiness()'.
- The function fetches bookings and filters arrivals within the next 48 hours.
- Each booking is evaluated and assigned:
- readiness ('Ready', 'Action Required', 'Attention')
- issue
- recommended action
- The widget renders this as an actionable list.
- Staff can immediately trigger row-level actions:
- 'Send reminder' which then calls 'sendArrivalReminder(bookingId)'
- 'Assign task' which then creates a CRM Task and then calls 'assignArrivalTask(bookingId)'
- Booking fields are updated, and the widget refreshes to show status.
How the solution is split
We keep each responsibility separate:
- Three deluge functions
- getArrivalReadiness() that evaluates bookings and returns dashboard data
- sendArrivalReminder(bookingId) that sends reminder and updates reminder fields
- assignArrivalTask(bookingId) that updates booking request status after task creation
- Widget logic that renders UI, handles clicks, calls functions, refreshes view
This separation keeps UI logic in widget code and business rules in Deluge.
Step 1: Evaluate arrivals in the next 48 hours
When the widget loads, it calls getArrivalReadiness().
This function fetches bookings, filters arrivals within the next 48 hours, and evaluates each booking for readiness conditions.
Readiness rules:
| Field |
Field Conditions (exact)
|
Issue
|
Recommended Action
|
| Action Required |
ID_Verification == "Pending" |
ID verification pending |
Send reminder |
| Action Required |
Special_Request != "" AND Request_Status != "Assigned" AND Request_Status != "Completed" |
Special request is unassigned |
Assign task |
| Ready |
None of the above conditions matched |
No action required |
No action |
The getArrivalReadiness() evaluates a 48-hour window in four concrete sub-steps:
- Define the time window
- It sets now = zoho.currenttime
- It sets endTime = now.addHour(48)
- This creates the comparison range: [current time, current time + 48 hours]
- Fetch candidate bookings
- It pulls booking records using:
- zoho.crm.getRecords("Bookings", 1, 200)
- This gives the function a working set of bookings to inspect.
- Normalize each booking’s check-in time for comparison
- For each booking, it reads Check_In.
- It preserves the original CRM datetime string (checkInOriginal) for display/output.
- It extracts only the datetime portion (subString(0,19)) and parses it into a time object:
- checkIn = checkInText.toTime("yyyy-MM-dd'T'HH:mm:ss")
- This parsed value is used only for logical comparison.
- Filter to “arriving soon” records
- It includes only bookings where:
- checkIn >= now && checkIn <= endTime
- Only these bookings move to readiness classification (Ready, Action Required, Attention).
The function computes a rolling 48-hour window, converts each booking’s check-in to a comparable datetime, and keeps only records whose check-in falls inside that window.
Step 2: Return one action-ready payload to the widget
After each booking is classified, the function getArrivalReadiness() adds one row object to arrivals with: id, booking, guest, arrival, readiness, priority, issue, action.
At the same time, it builds summary with: total, ready, action_required, attention.
Finally, it returns a single response object:
- success
- generated_at
- window_hours
- summary
- arrivals
Because both summary cards and row-level actions come from this single payload, the widget can render in one function call (getArrivalReadiness) without additional CRM fetches.
Step 3: Render dashboard and bind row actions
Widget JS reads response.details.output, renders summary cards and actionable rows, then maps row actions to functions:
- Send reminder → sendArrivalReminder(bookingId)
- Assign task → create CRM Task, then call assignArrivalTask(bookingId)
All Deluge functions used by widget must be configured as Invoke as REST API.
Step 4: Execute “Send reminder” path for pending verification
For verification-pending bookings, sendArrivalReminder(bookingId) handles:
- Booking ID validation
- Booking lookup
- Guest email validation
- Duplicate reminder protection
- Email send
- Booking field updates (Reminder_Sent, Reminder_Sent_At)
This enables quick verification follow-up during pre-check-in.
Step 5: Execute “Assign task” path for unassigned requests
For unassigned special requests, widget creates a CRM Task linked to Bookings, then calls assignArrivalTask(bookingId) to update:
- Request_Status = Assigned
Using $se_module: "Bookings" ensures proper linkage to the custom module context.
Step 6: Refresh and reflect current operational truth
After any row action, widget refreshes readiness data so users immediately see updated status.
This creates a fast “identify → act → update → verify” loop.
Example outcomes:
- Laura Martin (BK-10492): ID verification pending → Action Required → Send reminder
- Ian Thomas (BK-10489): Late dinner request pending/unassigned → Action Required → Assign task
- Vivek Shah (BK-10491): Verification complete, no open request → Ready → No action
Conclusion
With this setup, the front office or operations team can move from record-checking to action execution in one screen.
You now have a working pattern that combines:
- readiness classification in Deluge
- direct actions in widget UI
- immediate CRM updates after each action
That combination is what makes the dashboard practically useful during real check-in prep.
We hope this Kaizen post is useful. If you have questions or suggestions, share them in the comments.
Recent Topics
Account Blocked due to Suspicious Activity.
Hello, Trying to get access to my account, I have found this message above in the subject of this message. I am unable to log back to my account (see err. mess. below.) and thus cannot get rif of this following the Zoho procedure : I followed the step
Zoho Recruit mailserver get blocked by Microsoft!
Hi, We have experienced this issue twice now, where Zoho Recruit outbound IP addresses are being blocked by Microsoft. We are confident that Microsoft is the blocking party, as all outbound emails to candidates with @hotmail.com, @live.com, and @outlook.com
Option to Disable Knowledge Base Section in Feedback Widget Popup Hello Zoho Desk Team
Hello Zoho Desk Team, How are you? We are actively using Zoho Desk and would like to make more use of the Feedback Widget. One of the ways we implement it is through the popup option. At the moment, the popup always displays the Knowledge Base section,
Months of WooCommerce–Zoho Inventory sync failures and repeated support requests – has anyone experienced this?
Months of WooCommerce–Zoho Inventory sync failures and repeated support requests – has anyone experienced this? I run a small retail business using WooCommerce and Zoho One. For months, I have been trying to resolve recurring synchronisation failures
Name autocomplete
Hi, During searching emails the web tool does not always propose the auto-completion of the saved emails. As a result I either have to go to contacts and look up the exact email, or the exact full name including the middle name and any dots, which is
How to Manage Two GST Numbers / Two Companies in a Single Zoho Inventory Organization?
Hi Team, We currently have two separate legal entities: A Proprietorship Firm with its own GSTIN A Private Limited Company with a different GSTIN However, operationally, both companies deal with the same products, and we would like to manage the physical
View Cannot Use UPC as Criteria
When creating a new custom view, the UPC field is not available as a criterion for the view. This seems strange, because both ISBN and EAN are available in the dropdown. Because of this, I feel like the situation is possibly an oversight rather than by
How To Implement an Auto-Check-out Feature for Attendance?
If an employee forgets to check out, the system should automatically check out the employee at 6:30 PM
Enhanced Zoho CRM and Office 365 calendar synchronization features!
Dear customers, We're excited to share some significant improvements to our Office 365 calendar synchronization features, aimed at providing you with more control and a more personalized experience. What’s new Choose your Office 365 calendar: During the
What are the best practices for managing tax records and financial information for a small business?
I’m interested in learning how other small business owners and accounting professionals organize their financial records and prepare for tax filing. With bookkeeping, expense tracking, income records, and tax documents all needing to stay accurate, having
How to Open Google Takeout and Thunderbird MBOX Files?
MBOX files are used by email clients and services, such as Google Takeout and Mozilla Thunderbird, to store email messages. It can, however, be difficult to open such files if you don't have an email programme that is compatible. Google Takeout enables
Convert MBOX to PDF Free on Mac and Windows
MBOX files are widely used for storing email messages in email clients such as Thunderbird, Apple Mail, and other programs that support the MBOX format. Although this format is useful for handling emails, it can at times be inconvenient to access the
How to Convert Apple Mac Mail to PST for Outlook for Free?
Apple Mail is a widely used email program among Mac users, but what do you do if you want to transfer your emails to Microsoft Outlook? In such a situation—for example, when you are moving from a Mac to a Windows computer or when you need to use Outlook
Cannot apply tags to multiple items at once
It is very frustrating needing to apply tags to notes individually. Even worse that it takes multiple clicks to do it. Can there please be an update to: 1.) Allow us to apply tags to batches of notes in one go. 2.) Make it less clicks to add a tag 3.)
Automating CRM backup storage?
Hi there, We've recently set up automatic backups for our Zoho CRM account. We were hoping that the backup functionality would not require any manual work on our end, but it seems that we are always required to download the backups ourselves, store them,
not able to convert pdf to jpg and other forms and vice versa.
i want to change my pdf to jpg, word, etc and some times jpg to pdf. i don't know how to do in this.
Changing an existing item to different accounts & inventory-tracked
Hi everyone, I have an item in Zoho Books that was originally set up as a non-inventory item. Over time, I associated it with different sales and purchase accounts, and I now have many invoices, bills, and reports that use this item. My business process
Address limits per customer by edition
I’m on the Standard edition and have reached a limit of 30 addresses under a single customer. Before I move to an annual Professional subscription, I need to confirm the following: What is the maximum number of addresses allowed under one contact, and
How to Convert Emails to PDF Format in Batch
It is helpful to convert emails into PDF format when you want to save important messages, when you need to share business correspondence, or when you wish to keep email records for future reference. PDF files can be readily opened, printed, and shared
Function #24: Automatically display deal name from Zoho CRM on quotes in Zoho Books
Deals allow businesses to organize and visualize their sales pipeline. This provides a clear overview of all potential opportunities and helps in making informed decisions. Zoho CRM empowers you to create deals or potentials for your clients and monitor
Lookups and Custom Modules
I created a Custom Module that I'm calling "Item Purchasing Group". This module will store information for groups of Items that must be purchased together (including minimum overall quantities and/or values, etc.). This will have a one-to-many relationship
Zoho Books | Product updates | October 2026
Hello users, October brings a range of new features and enhancements to Zoho Books, designed to simplify compliance, streamline accounting workflows, and improve inventory management. From the launch of the Nigeria Edition and France’s e-invoicing capabilities
Create custom rollup summary fields in Zoho CRM
Hello everyone, In Zoho CRM, rollup summary fields have been essential tools for summarizing data across related records and enabling users to gain quick insights without having to jump across modules. Previously, only predefined summary functions were
Button or Links order
Is there a way to re-order the buttons or links that are created? Moderation Update: With our recent enhancement to custom button creation from the layout editor, administrators can now reorder custom buttons directly from the layout editor, and this
Zoho Books | Product updates | August 2026
Hello users, July has been an exciting month for Zoho Books! This month, we're excited to introduce HTML PDF Templates, Placeholders as Pills, expanded approval workflows for Sales Returns and Journals, and significant compliance updates across the India,
Bulk updating tags
My organisation handles a number of restricted funds. We previously did this by having a chart of accounts where each restricted fund has its own income and expense accounts. However, our accountant changed this, moving all transactions into accounts
Download or Backup Bulk Emails from IMAP Server
Taking email messages from an IMAP server and saving them is a wise method for ensuring that important emails are kept safe and easy to access. No matter whether you have a business email address or a personal mailbox, keeping a local copy of your emails
Zoho Writer Label Template Merge/Print Via API/Webhook/Flow
Short version of goal: To be able to kick off a Zoho Writer Label Template Document via API or Webhook or even using Zoho Flow. As of right now I have been unable to figure out a way to do that. Long version of goal: We would like to press a button (run
Kaizen #263: Using Zoho CRM Skill to Build Widgets
Hello everyone! Welcome back to another exciting Kaizen post. In the previous Kaizen posts, we introduced the zoho-crm skill.md and explored how it can help with Zoho CRM APIs, Client Scripts, complex COQL queries, and Skill to build Queries. In this
Zoho notebook No login
Hello Team, I recently downloaded and installed the latest version of zoho notebook for windows. But I am not able to login without providing any sso or email address. Did you removed the no login feature for this app? This is just a windows app. can
Search is completely broken for PC
I go to note, try to search for "mtga" and it shows 702 results (it's a big note), highlights all letters "m" and I can't find anything. Same for "gathering" - it thinkgs I think only for "g". Looking for "zoho" shows as if I searched only for "z". Using
Losing description after merging tickets
Hello, We merge tickets when they are about the same topic from the same client. It happens sometimes. We recently noticed that after the merger only the description from the master ticket is left in a thread. And the slave-ticket description is erased.
Behind a great customer experience is a team
Hi everyone, October is here, and the first week marks the Customer service week. Each year, we thank our customer service professionals. Service professionals are all around us, even in our own workplaces: They handle essential administrative work like
What's New - August and September 2026 | Zoho Backstage
Hello everyone, August and September bring a fresh wave of intelligence to Zoho Backstage. AI takes the spotlight with tools that help you create content, support attendees, and manage how AI fits into your events. Alongside AI, we’ve refined email communication,
Images Not Displaying Properly in Zoho Desk
Hi, We are experiencing an issue with image rendering in Zoho Desk, affecting both incoming and outgoing emails. Images embedded in email conversations are not displaying properly. Instead, we see broken image icons or empty placeholders where the images
Announcing the new SKILL.md for Zoho CRM and the updated OAS repository!
We are introducing a new zoho-crm skill to make working with Zoho CRM Developer tools (like APIs, functions, widgets, client scripts, queries etc) easier and faster, with the help of AI in your preferred AI harness like Claude Code, Codex, Cursor, VSCode
Widget Height were destroyed
All widget heights in the Details Canvas view are broken. Moderation Update: This is a known issue with widget heights in Client Script popups and flyouts. A fix is in progress, and this post will be updated once it's released.
Zoho Projects - Has something changed regarding to linking Projects and Deals via the API?
I am trying to link Zoho Projects to Deals in CRM using the API, but each time, the Deal Contact is added as a Client user and receives an email invite asking them to join the organisation. These are internal projects and the customer should not have
How long does it take to review campaigns?
Hello Zoho, i scheduled my campaigns yesterday afternoon and it has been under review for over how many hours and those campaigns were supposed to be out yesterday so new ones can go out today. Is there something i'm doing wrong?
Convert MSG to PDF in Bulk with Attachment Free
Microsoft Outlook saves each email as an MSG file, keeping with it key information like the sender, the recipient, the subject, the date, the body of the message, and any attachments. It can, however, be quite difficult to access a large number of MSG
Next Page