Enable your teams to respond in seconds by bridging the gap between booking confirmation and team notification. No sticky notes, no calendar nudges and no follow-up frenzies. For businesses that rely on scheduled appointments, real-time visibility is a crucial operational need.
Timely automated communication is essential for managing important appointments and bookings. Let's integrate Zoho Bookings with Zoho Cliq via the Cliq developer platform's bots and workflows, ensuring that every appointment confirmation is automated and reaches Cliq chats promptly.
Business Benefits
- Operational Efficiency: This custom solution eliminates the need for manual dashboard monitoring. Booking updates are automatically communicated to Cliq as they occur.
- Enhanced Customer Experience: Faster internal awareness leads to expedited confirmations, better-prepared staff, and a more seamless appointment experience.
- Centralized Communication: All booking activities are consolidated in the same Cliq channel your team uses daily, minimizing context switching and preventing information silos.
- Enterprise-Ready, No Additional Cost: Built entirely on the Zoho Cliq Developer platform, this custom solution requires no third-party middleware. It operates within your existing Zoho subscription framework.
Step 1: Create a bot
- Go to the top-right corner of your profile and click on it.
- Select "Bots and Tools" from the dropdown menu.
- To create a new bot, click on "Create Bot" under the "Bots" section.
- Enter a name and description for your bot and ensure that channel configuration settings are enabled during setup.
- Finally, save the bot.
Step 2: Retrieve the bot webhook URL
- Webhook tokens are listed in the Bots & Tools section along with other internal tools.
- When you access the webhook tokens module, you'll need to authenticate using two-factor authentication (2FA), verify your identity, and then click "Continue."
- After authenticating, you can create, edit, and manage your webhook tokens as needed.
- Generate a webhook token and retrieve the bot's webhook URL as instructed.
Step 3: Generate Cliq bot incoming url
To create the bot's incoming URL, combine the bot's endpoint with the webhook token.
- Navigate to the newly created bot and click on it. A pane will appear showing the bot's URL details.
- Copy your bot's incoming endpoint from this window and append your token to it:
- https://cliq.zoho.com/api/v2/bots/<yourbotname>/incoming?zapikey=<webhooktoken>
Keep this URL handy, as you will need to paste it into the Zoho Bookings workflow later.
Step 4 : Creating a workflow in Zoho Bookings

- Log in to Zoho Bookings.
- In the left panel, navigate to one of the following options:
- Workflows → Custom Workflows → Create New Workflow
- or Workflows → Create Workflow → Create New Workflow.
- If you chose Workflows → Custom Workflows → Create New Workflow, complete the following fields:
- Workflow Name: Enter a name for your workflow.
- Trigger When: Select "Booked."
- Occurrence: Choose "Immediately."
- Choose Service (e.g., IT Consulting): Select your Service.
- Perform Action: Select "Execute Custom Functions."
- Customize Template: Paste the following code.
- In the template editor, paste the code, replacing "<bot incoming url>" with the full URL you created in the previous step.
- bookingInfoMap = Map();
- bookingInfoMap.put("BookingInfo",bookingInfo);
- cliqWebhookTrigger = invokeurl
- [
- url : "<bot incoming url>"
- type :POST
- parameters:{"Book Details":bookingInfo} + ""
- headers:{"content-type":"application/json"}
- ];
- info cliqWebhookTrigger;
- Click Create Workflow. With this setup, whenever a new appointment is booked, it will trigger a notification to your Cliq bot's incoming handler.

Step 6 : Setting up bot incoming webhook handler
- Head back to Cliq, locate the bot you created under the "Bots and Tools" section, and access its incoming webhook handler.
- The incoming webhook handler is designed to allow third-party services, such as Zoho Bookings, to post messages directly to your bot.
- Copy and paste the below code, then click "Save".
Pre-requisites before scripting:
Create a Zoho Cliq Default Connection:
Before you begin scripting the code below, you need to create a connection in Zoho Cliq. Once the connection is established, you can use it in Deluge integration tasks and invoke URL scripts to access data from the required service.
Use a unique name for the connection with the scope set to ZohoCliq.Reminders.All.
Note: Refer to the document on Connections in Cliq for more information.
Post Alerts to a Channel:
To post an alert to a channel, you'll need the unique names of both the channel and the bot. This is necessary as we will use the zoho.cliq.postToChannelAsBot Deluge task in the code below. Follow these steps to retrieve these names:
How to Obtain the Channel Unique Name in Cliq?:
- Navigate to the top right corner of your preferred channel and click on the three dots.
- In the menu that appears, select "Channel info." A pop-up will display detailed information about the channel.
- Hover over the "Connectors" section and click on it.
- Under "API Parameters," you will find the channel unique name.
How to Obtain the Bot Unique Name in Cliq?
- Go to "Bots & Tools," and under the bots section, select your preferred bot.
- Copy the API endpoint URL. The bot's unique name is located between "bots/" and the next slash ("/").
Example:
In this example, the bot's unique name is crmupdatesincliq.
Retrieve the Bot Chat ID:
- Open Zoho Cliq and navigate to your bot in the chat window.
- Click on the bot to open the conversation.
- Check the URL in your browser; the bot chat ID is the alphanumeric string that appears after "chats/".
Example:
In this example, the bot chat ID is CT_9874563201845670134_10005673821-B7.
After creating the connection, retrieving the channel unique name, bot unique name, and bot chat ID, keep this information handy for use in the code below.
Script
- response = Map();
- info params;
- info headers;
- info body;
- bookingDetails = body.get("Book Details");
- info bookingDetails;
- bookingID = bookingDetails.get("booking_id");
- workspaceName = bookingDetails.get("workspace_name");
- customerEmail = bookingDetails.get("customer_email");
- startTime = bookingDetails.get("start_time");
- endTime = bookingDetails.get("end_time");
- timeZone = bookingDetails.get("time_zone");
- summaryUrl = bookingDetails.get("summary_url");
- responseMsgCard = {"text":"### 📅 New Appointment","card":{"theme":"modern-inline"},"slides":{{"type":"label","title":"Details","buttons": [
- {"label": "Open Summary","action": {"type": "open.url","data": {"web":summaryUrl}}}],"data":{{"🆔 Booking ID":bookingID},{"🏢 Workspace":workspaceName},{"📧Customer Email":customerEmail},{"🕒 Time":startTime + " - " + endTime},{"🌍 TZ":timeZone}}}}};
- info zoho.cliq.postToBot("<bot unique name>",responseMsgCard);
- //Post to your Bot
- info zoho.cliq.postToChannelAsBot("<Channel unique name>","<bot unique name>",responseMsgCard);
- //It will send to channel with bot permission.
- //--------------------------------- To set reminder -------------------------------//
- eventTimeZone = bookingDetails.get("time_zone");
- info eventTimeZone;
- userTimeZone = user.get("timezone");
- dateTimeObj = bookingDetails.get("start_time").toTime("dd-MMM-yyyy HH:mm:ss",eventTimeZone).toString("dd-MM-yyyy HH:mm:ss");
- info dateTimeObj;
- info dateTimeObj.toTime("dd-MM-yyyy HH:mm:ss",user.get("timezone")).subMinutes(60);
- datetime_30min_sub = dateTimeObj.toTime("dd-MM-yyyy HH:mm:ss",userTimeZone).subMinutes(30).toString("dd-MMM-yyyy HH:mm:ss",userTimeZone);
- datetime_60min_sub = dateTimeObj.toTime("dd-MM-yyyy HH:mm:ss",userTimeZone).subMinutes(60).toString("dd-MMM-yyyy HH:mm:ss",userTimeZone);
- info datetime_60min_sub+"datetime_60min_sub";
- info datetime_30min_sub+"datetime_30min_sub";
- secondsVal_60sec_before = datetime_60min_sub.unixEpoch(userTimeZone);
- secondsVal_30sec_before = datetime_30min_sub.unixEpoch(userTimeZone);
- info secondsVal_60sec_before;
- info secondsVal_30sec_before;
- reminderTimes = list();
- reminderTimes.add(secondsVal_60sec_before);
- reminderTimes.add(secondsVal_30sec_before);
- for each reminderTime in reminderTimes
- {
- param = Map();
- content = "Zoho Bookings Reminder : " + bookingID;
- param.put("content",content);
- param.put("time",reminderTime);
- chatidsList = list();
- chatidsList.add("<Bot chat id>");
- param.put("chat_ids",chatidsList);
- createReminder = invokeurl
- [
- url :"https://cliq.zoho.com/api/v2/reminders"
- type :POST
- parameters:param + ""
- connection:"<your connection name>"
- ];
- info createReminder;
- }
- return response;

Team responsiveness and operational clarity are critical, and automated booking alerts create a measurable impact. Businesses managing a scalable client base and operating on appointments cannot afford delays in information. Every booking that goes unnoticed is a missed chance to respond and deliver.
This custom solution brings real-time Zoho booking data into the Cliq communication layer, effectively filling the gap, letting teams stay coordinated, respond faster, and deliver a consistently better experience to every customer.
If you have any further questions or need support, please reach out to support@zohocliq.com, and we'll be happy to assist you.
Recent Topics
Allow Super Admins to Edit Task “Created By” and Issue “Reporter” Fields
Hello Zoho Projects Team, We hope you are doing well. We would like to submit a feature request regarding the ability to manage and correct system ownership fields in Zoho Projects, specifically: Task → Created By Issue → Reporter / Reported By Current
Team folder not created when creating project using zoho flow
When I try to automate project creation using zoho flow, and I have enabled workdrive integration to automatically create team folders to attach to the project, this only works when I create a new project through the UI. But I am trying to automate project
The Social Wall: April 2026
Hello everyone, This month, we’re excited to bring you a set of new updates for Threads in Zoho Social, designed to make publishing, monitoring, and managing your content much easier Threads updates You’ll now see a few useful improvements in the compose
Sort or filter CRM report by count value
Hi there, I'm trying to create a report that will show me high frequency bookings (leads) coming through within a time period for any particular account - this is so we can proactively reach out to these accounts. I have a report that shows the information
Error when changing user permission from read only to user.
Hi there, Ive tried to change one of my users to be able to edit, however i kept getting the error user license exceed.
Marketing Tip #30: Promote your brand differently on each social platform
Not all social platforms work the same way. Posting the same content in the same way across every channel can limit your reach. Each platform has its own discovery system, and understanding what it prioritizes can dramatically improve how your brand is
Whatsapp Limitation Questions
Good day, I would like to find out about the functionality or possibility of all the below points within the Zoho/WhatsApp integration. Will WhatsApp buttons ever be possible in the future? Will WhatsApp Re-directs to different users be possible based
**Building Role-Appropriate Accountability Layers in Zoho Projects - Looking for Real-World Experience**
We're a small ISP/telecom operator on Zoho One and I'm trying to solve what I think is a common organizational problem. Would love to hear from others who've tackled it. **The Core Problem** Staff will only consistently use a project management system
Duplicate entries for contacts birthdays
Good morning I have recently started to use my Zoho calendar and noticed that there are multiple birthday events showing for some of my contacts. I have checked my contacts and there were duplicates for some contacts which I have now rectified but the
How to Generate Separate Labels for Each Invoice SKU Line Item in Zoho Books?
Hi everyone, I’m trying to implement a requirement in Zoho Books where separate labels need to be generated for each SKU/item from an invoice. Scenario: One invoice can contain multiple products/SKU items Each item/box should have its own separate label
Using IMAP configuration for shared email inboxes
Our customer service team utilizes shared email boxes to allow multiple people to view and handle incoming customer requests. For example, the customer sends an email to info@xxxx.com and multiple people can view it and handle the request. How can I configure
[Bug] WebAuthn passkey registration blocked on rpIds with TLDs longer than 6 characters (.accountant, .technology, etc.) — isValidDomain regex too strict
Hi, Filing on behalf of an enterprise customer where Zoho Vault is deployed across the company. The Chrome extension blocks WebAuthn passkey registration on legitimate sites whose Relying Party ID (rpId) has a TLD longer than 6 letters. This affects every
What's New in Zoho Billing | March 2026
March is here with a fresh wave of updates to Zoho Billing. From making compliance easier, reporting more flexible, to making day-to-day workflows smoother across the board. Here's everything that's new this month. Introducing Usage-Based Billing Reports
Subforms in Creator-Lookup Price
I've got a modular called Price List with items and prices. Ive got another module called Estimates with a subform that looks up that Price List. I am trying to get the "Price" to auto-enter based on the Lookup field of the item name. Anyone know how
Feature request - pin or flag note
Hi, It would be great if you could either pin or flag one or more notes so that they remain visible when there are a bunch of notes and some get hidden in the list. Sometimes you are looking for a particular name that gets lost in a bunch of less important
Map Dependency Upgrades in Zoho CRM
Map Dependency Fields enhancements are available in CA, SA, JP, CN, UAE, AU and EU DCs. Latest update: Also available in IN and US DCs. Hello everyone, We’ve introduced a set of enhancements to Map Dependency Fields to make setup simpler, faster, and
CRM to FSM Setup
Good Afternoon, I am trying to connect CMS to FSM. My current field mapping is: Companies ↔ Accounts Contacts ↔ Contacts Service And Parts ↔ Products I'm setting this up for an elevator service company. The idea is that: Accounts represent Companies.
All new Address Field in Zoho CRM: maintain structured and accurate address inputs
Availability Update: 29 September 2025: It's currently available for all new sign-ups and for existing Zoho CRM orgs which are in the Professional edition exclusively for IN DC users. 2 March 2026: Available to users in all DCs except US and EU DC. 24
Collapsible Sections & Section Navigation Needed
The flexibility of Zoho CRM has expanded greatly in the last few years, to the point that a leads module is now permissible to contain up to 350 fields. We don't use that many, but we are using 168 fields which are broken apart into 18 different sections.
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
Inventory batch details
Hi there, I'm trying to get the batch details of an item, here's what I've done so far. I've sent cUrl request to the below endpoint and I get a successful response. Within in the response I find the "warehouses" property which correctly lists all the
How do I edit the Calendar Invite notifications for Interviews in Recruit?
I'm setting up the Zoho Recruit Interview Calendar system but there's some notifications I don't have any control over. I've turned off all Workflows and Automations related to the Calendar Scheduling and it seems that it's the notification that is sent
Unable to send emails from iPhone and iPad
Curious, all of a sudden I'm unable to send emails from iPhone and iPad. I keeps asking for my password again and again. No problems from my MacBook Pro.
Journal Entries Do Not Show Multiple Entries to the Same Account
Another basic accounting function that Books ... Accountants sometimes write journal entries, debiting and/or crediting the same account in the same entry. This is due to the need to record specific activity in an account when we pull reports especially
Create static subforms in Zoho CRM: streamline data entry with pre-defined values
Last modified on (9 July, 2025): This feature was available in early access and is currently being rolled out to customers in phases. Currently available for users in the the AU, CA, and SA DCs. It will be enabled for the remaining DCs in the next couple
Partial customer Refund via customer Credit Card used to pay invoice
How can we process a partial refund through the same credit card that a customer used to pay the initial invoice? - In other words, say a customer was sent an invoice for $1200.00 and they paid it through Zoho with our online credit processor, PayFlow
Partial refunds
I am trying to process refund for a one item invoice, however the refund is partial: i am getting this error while creating credit note, can anyone share some wisdom about this
How in the heck do i record a (partial) refund???
I have a client. wrote an invoice for 3 services totalling $520. He paid it online (we use zoho to authorize.net) We went out and couldn't do one of the services I didn't see a way to initiate a refund through zoho books, so i did a $250 refund through authorize.net. Tried to edit the payment on zoho books, but it won't let me b/c "this payment was made on line" When i try to edit the invoice i get a popup about it no longer matching the payment. What do I do??? And why is it so hard to do something
Action Required: Update your Zoho Projects – Zoho Analytics integration
Dear Zoho Projects integration users, We would like to inform you about an upcoming update to the Zoho Projects–Zoho Analytics integration. Read the full migration announcement here. As shared in the announcement, we are updating the integration to support
Mirror Component in Zoho CRM: Access real-time related data without leaving your record
Hi everyone, This feature is now available for the JP, CA, SA, UAE, and AU DCs. We're excited to bring to you Zoho CRM's mirror component, which presents relevant data on a record's details page and keeps everything users need in one place without having
Workflows fail silently in Zoho CRM and there is no native way to know
Workflow automation is honestly one of the biggest reasons my clients choose Zoho. But there is one problem I keep running into across almost every implementation. When a workflow fails, nobody finds out. Email alerts hit daily limits and just stop. Custom
Office365(outlook emails) Zoho CRM integration
Hi guys We're looking to buy Zoho CRM and are currently trialling. I'm working from a MacBook fyi. I've so spent 3 hours on live chat today with Zoho as we couldn't get the two to integrate properly, even with the plug in installed but finally managed
When adding subform records, how do I access member fields of a name field
I have the following code (runs when a record is added to a form) if (input.P_liza != null) { input_deal = input.P_liza; rec = form_mapping[deal_name == input_deal]; id = input.N_mero_de_documento_de_Identificaci_n_Alfanum_rico; contact = -----redacted------.get_crm_contact_by_id(id);
Making "All Day Events" not default
When I go to schedule an event, the All Day checkbox is ticked by default. Generally, I don't plan all day events, so is there a way to make that not checked by default? I couldn't find a setting for this...
Create custom field in multiple modules
I am trying to create some custom fields that will be in both leads and contacts module without having to create them separately and then mapping them. How is that performed? it is too time-consuming to create 20+ fields and then do the same thing in a different module when they carry the same info. The idea is that when we get a lead from web site, there are items that we capture and once that lead is a client and moved to Contacts, that info should come over. So trying to find an easy way to create
Allow 2 logos for Branding, one for Light Mode and one for Dark Mode?
Our logo has a lot of black text on it. If we leave the background transparent, per recommendation of Zoho, when a user is viewing a file and turns on dark mode, our logo is not really visible and looks really weird. It would be really great if we could
Compensation | Salary Packages - Hourly Wage Needed
The US Bureau of Labor Statistics says 55.7% of all workers in the US are paid by the hour. I don't know how that compares to the rest of the world, but I would think that this alone would justify the need for having an hourly-based salary package option.
Tip #20 - Three things you probably didn't know you can do with picklists
Hello Zoho Sheet users! We’re back with another quick tip to help you make your spreadsheets smarter. Picklists are a great tool to maintain consistency in your spreadsheet. Manually entering data is time-consuming and often leaves typos and irregular
In Desk KB article, how do include an image in a numbered list without using a number or bullet?
We need to include images in our KBA steps as a numbered list. Here I have numbered steps. I want the image no numbering or bullet. Open Purchase Order Entry. Select the mail icon: Select the Save button. I see your own articles have images in number
Video Interview features
I tested the video interview feature. It's supported only on desktop version of chrome/firefox. Most of the times, the candidates are available on their cellphone. Need to have this for mobile devices too.
Next Page