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
Free webinar: Zoho Sign for Microsoft apps
Hello, Did you know Zoho Sign works right inside the Microsoft apps you already use? A signature request shouldn't mean leaving Teams for another tab, or downloading an Outlook attachment just to sign it. Zoho Sign integrates with Microsoft 365, Teams,
Billing Status and WO Status Field Colors -
Hello Team, I noticed that the colors of the Billing Status and WO Status fields in the WO module have been changed. (Org ID:170000078905) This is not urgent to correct, but I wanted to bring it to your attention so you can check whether this is a system
Introducing throw statements in Deluge
Hello everyone, We're introducing a powerful addition to Deluge that gives you more precise control over error handling in your scripts. Whether you're calling an external API, validating user input, or enforcing a business rule, there are moments when
Zoho Notebook、実はこんなところから使えます
ユーザーの皆様、こんにちは。ゾーホージャパンの田村です。 前回に続き、今回もZoho Notebookをご紹介します。 関連情報 メモの保存場所、見直しませんか?― Zoho Notebookで始める情報管理 仕事中、「この内容、メモに残してあとで見返したいな」と思う瞬間はありませんか? 会議中の一言、お客様とのやり取り、CRMで見つけた気づき、 ほんの数秒で終わる内容だからこそ、「あとで書こう」と思って、そのまま忘れてしまうこともあります。 そこで今回は、PCやスマートフォンはもちろん、普段お使いのZoho製品からもすぐにアクセスできるノートアプリ「Zoho
I have been looking for CVID to get segmate list where & how can fnd it?
I am trying to get segment details from the Zoho API. The API documentation says that the CVID is a mandatory parameter, but I cannot find the CVID in the "getmailinglists" API. Can you tell me where to find the CVID?
How do I increase the email attachment size in Zoho CRM ?
It looks like I'm limited to 10MB when sending an attachment using the email widget on a record in Zoho CRM. Is there a way to increase the size? Or can I use some other tool? From what I'm reading online, I'm maxed out at 10MB. Any insight would be greatly
Introducing Incentives for Zoho CRM: Build, automate, and track sales commissions
Dear Customers, We are here with an amazing news! We built a direct solution to help manage your commission provisioning activity in your business. From creating commission plans to issuing payouts, this application leverages your sales reps’ performance
Subforms and automation
If a user updates a field how do we create an automation etc. We have a field for returned parts and i want to get an email when that field is ticked. How please as Zoho tells me no automation on subforms. The Reason- Why having waited for ever for FSM
Cannot format "start date" field in Zoho Flow
I am trying to recreate a flow that connects Inventory package creation to Zoho projects (where a task is created in a defined project). I've been able to troubleshoot everything EXCEPT the date fields; specifically the "start date" - which is quite important
Dynamic Signature - Record owner
Hi everyone, I’m using Zoho Writer merge templates from Zoho CRM and have two questions: Owner signature: How can I automatically insert the CRM record owner’s signature in the merged document? I’m not sure where this signature is stored or how to reference
Add ZeptoMail to Zoho One
Hi Zoho Team, I would like to request that ZeptoMail be added as a fully included application within Zoho One. Why this is important Zoho One is positioned as a unified business operating system that brings the applications an organization needs under
GETTING THERE THANKS
So we are still testing thanks to the great Zoho team for firstly getting pricelists working (essential) and writing some code to hide delivery and pickup options. Brilliant. So price lists are a definite mainly because of VAT. We run our Zoho books with
Time Zone is incorrect
Time zone is not working properly...I've checked it twice. I'm eastern U.S. time it's currently 12:22 pm EST. CRM shows 3:22 pm EST.
CRM wants to access other apps and services on this device (Documents area)
Did anyone else see this today? It only seemed to popup in the Documents area. Blocking it did not stop the ability to upload files there... Why is this coming up and what apps/services is it requesting in the background? Also, is it applicable elsewhere
Custom module - change from autonumber to name
I fear I know the answer to this already, but thought I'd ask the question. I created a custom module and instead of having a name as being the primary field, I changed it to an auto-number. I didn't realise that all searches would only show this reference.
How can I populate dropdown data with information from another source or app?
I want to maintain a list of items in another app (say in excel or another database) and sync those as items in a drop down menu, instead of copy pasting to import. Is this kind of a feature available?
Dynamic Field Folders in OneDrive
Hi, With the 2 options today we have either a Dynamic Parent Folder and lots of attachments all in that one folder with only the ability to set the file name (Which is also not incremented so if I upload 5 photos to one field they are all named the same
Zoho Tables is now available in Zoho One!
Hello Zoho One users, We’re excited to announce that Zoho Tables is now included as a part of Zoho One suite! As teams grow, managing projects, approvals, inventories, campaign trackers, and operational workflows across multiple spreadsheets become difficult.
Getting there -thanks
So we are still testing thanks to the great Zoho team for firstly getting pricelists working (essential) and writing some code to hide delivery and pickup options. Brilliant. So price lists are a definite mainly because of VAT. We run our Zoho books with
Automatically remove commas
Team, Please be consistent in Zoho Books. In Payments, you have commas here: But when we copy and paste the amount in the Payments Made field, it does not accept it because the default setting is no commas. Please have Zoho Books remove commas autom
#3 Making it look like my business
Day 3: Meera had created her first invoice. The numbers were right, but something still felt unfinished. Her studio name was there, but the address did not look the way she wanted. Her logo was missing, and the invoice did not really feel like it came
Zoho Books - France
L’équipe de Zoho France reçoit régulièrement des questions sur la conformité de ses applications de finances (Zoho Books/ Zoho Invoice) pour le marché français. Voici quelques points pour clarifier la question : Zoho Books est un logiciel de comptabilité
Scan & Fill with double quote key/value pairs
Hi, An old Ticket moved to a Topic/Idea: I love the idea of the new Scan & Fill as it nearly covers my previous request for a QR Scanner to read a multi-part QR Code. My QR Codes are hard-coded as below: {"key1":"value1","key2":"value2","key3":"value3"}
Increase the "Maximum Saved Entries per User" Options Limit
Hi, You can create lots of saved entries, yet the Limit when you apply one is 25, we may often expect 32 to be in draft, and therefore want to enforce that, can we increase the limit of this field from 25 to 100 (As you can just turn it off and have more
HEIC File Type Viewer
Hi, It would be nice to be able to click on the images in the All Entries/Reports Tables which are HEIC the same as JPG, PNG, etc. so they open in a viewer from Zoho or the Attachment Service, today HEIC requires you to download each image and open it
Map Dependency Upgrades in Zoho CRM
Map Dependency Fields enhancements are now available across all DCs. Hello everyone, We’ve introduced a set of enhancements to Map Dependency Fields to make setup simpler, faster, and more intuitive. Map Dependency helps control how values appear across
Specific ListView Canvas on Canvas Home Page Always Loads Most Recent ListView, Not the One Specified
I had mentioned this to ZOHO, but I mainly wanted to see if others in the Community are also facing this problem. I created a Canvas ListView for a Custom Module, and then created a Canvas Home page (technically on a tab item, but I'm not sure if that
Programmatic Itemized Expenses?
It does not appear that it is possible to create itemized expenses programmatically (via the API)? Is this correct, or am I misunderstanding the situation?
Zoho Forms Submission URL
Hi Zoho, It would be great to have a URL which can take us to specific form entries. For example: https://forms.zoho.eu/ACCOUNTNAME/report/FORMNAME/records/UNIQUE-REF I currently have a use case where I want to use Zoho Flow to create a module entry in
Optional Parameter in Deluge Sendmail function to link email to record
I love sendmail - it offers flexibility (and, with standalone functions, commonality with minimal maintenance) over the years the templates hadn't offered. I understand the templates have come a long way, but I still prefer sendmail most days. That said...
Zoho CRM Functions: Redesigned Interface, Rich Analytics, and Multi-Language Support
Hello everyone! We have given Functions in Zoho CRM a major overhaul with a new interface that makes it easier to build, organize, monitor, and troubleshoot your functions throughout their lifecycle. As part of this revamp, we have also introduced a unified
📣 And the Bigin Customer Award winners are...
50+ entries. Customers from across the globe. So many great Bigin stories. And now, it's time to celebrate the people who stood out. We launched the Bigin Customer Awards to see how businesses are using Bigin in their own unique ways, and you did not
Report Configuration - Unable to select "File_Upload" under Supporting Document
Good day everyone. I encounter this issue whereby i have difficulty to select "File_Upload" under Supporting Document when i configuring my report. Ps: I have create Supporting Document in Zoho creator form as subform and the add this "File Upload" inside
Zoho CRM Multi-select values not translated
Hello! I have some issue with translate custom multi-select fields in zoho CRM in other language. I download export file, but it has all my custom fields and picklist values exept multi-select fields picklist values. Please, help me to undestand, is
Go Multilingual with Instant Bot Auto-Translation
Imagine you run a travel company with customers across different regions. Your website chatbot helps visitors discover travel packages, answers questions, and makes bookings. As your business expands into new markets, you want to offer the same experience
Create Flexible Layouts with Layout Rules
In a project, when a work moves from planning to execution, the information teams need can change at every stage. A project can need one set of details, a phase can need another, and a custom process may require an entirely different set of information.
Zoho Sites after login page blank
after i login to zoho sites, it stalls at a blank screen please help
Map My Client Locations for Zoho CRM Extension: Turn CRM Addresses Into Action
Hello everyone, Your CRM knows who your customers are. Now, see where they are on the interactive map directly from Zoho CRM. Introducing Map My Client Locations for Zoho CRM, an extension built for businesses that rely on sales visits, field service,
Find the conversions hiding outside your funnel: User Journeys is now live in PageSense
Hello Everyone, We are excited to announce that User Journeys is now live in Zoho PageSense. Here is what that means for you. Funnels are great for one thing. They tell you how the path you designed is performing. Homepage to product to cart to checkout,
Zoho CRM Error message #2 : Fixing [Invalid Credentials] and [Authentication Fail] while configuring IMAP
Hi Everyone! As a part of our Zoho CRM Error messages series, we're going to focus on couple of error messages that you might encounter while configuring IMAP and ways to resolve them. These are: [Invalid Credentials] [Authentication Fail] The annoying
Next Page