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
I need help lease Email
I' not getting an email replay when someone open a ticket
Sigma function call hangs forever from Desk widget — app_install_id/encapiKey are null
Calling ZOHODESK.request() from the widget to invoke a Sigma DRE function URL hangs forever (never resolves, never rejects, no error) until client timeout. Tried with merge fields app_install_id={{sigmaInstallId}}/{{installationId}} and encapiKey={{enCapApiKey}}
Draft quotes, sales orders, and raise invoices for services in CRM
Create Quotes, Sales Orders, and Invoices for Services in Zoho CRM You can now draft Quotes, and Sales Orders as well as raise Invoices for services in Zoho CRM. And how is that possible? By filling out the Service subform in your Quotes, Sales Orders
Error Code 2945 , PATTERN_NOT_MATCHED
Hi, I am trying out Zoho Creator API. However, I always get the following <response> <code>2945</code> <message>PATTERN_NOT_MATCHED</message> </response> However, error code list error as Invalid Ticket. I do not know what is wrong.
Canva Integration
Hello! As many marketing departments are streamlining their teams, many have begun utilizing Canva for all design mockups and approvals prior to its integration into Marketing automation software. While Zoho Social has this integration already accomplished,
Action Required: Allowlist New IP Ranges for the EU Data Center
Dear Users, We are adding new IP ranges for the Zoho Analytics EU data center (https://analytics.zoho.eu) If you connect Zoho Analytics to cloud databases (both Live Connect and import), such as Amazon RDS, Amazon Redshift, or Microsoft Azure, you must
Tips & Tricks #3: Zoho CRM - Agentes en la página de inicio
Hola a todos, Vuestros Agentes realizan un trabajo muy útil. Encuentran información como clientes potenciales importantes, oportunidades de venta y actualizaciones relevantes. Sin embargo, hasta ahora no era posible ver esa información directamente en
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,
'Pinned' notes feature of a pipeline record
Hi team, Could you please implement a feature which will allow users to pin different notes so that they will appear at the very top of the notes tab in a pipeline record. Sometimes we have a wide range of notes on a record which means more important
Associate emails from both primary and secondary contacts to deal
We need to associate emails from multiple contacts to a deal. Please advise how this can be achieved. At present, only emails from primary contacts can be associated. Thanks
Custom Button Creation from Layout Editor in Zoho CRM
Hello All, Buttons in Zoho CRM act as triggers that perform a specific action when clicked. Zoho CRM includes a set of system buttons that help you carry out common actions with a single click. Beyond these, your organization can create custom buttons
#PitStop3: Share & Collect Payment using Zoho Invoice
We have reached another milestone in our journey. Post #15 to #20 weren't just about sharing invoices, they were about building a payment workflow that works for you, your customers and your business. Here's a quick wrap of what we covered in this segment:
Suggestions for Improving the Deluge Development Experience
Hello, I would like to share some ideas that could significantly improve the Deluge development experience, especially for partners and developers building larger solutions across the Zoho ecosystem. Some key areas that would add a lot of value: Deluge
Enhancement announcement: Mitigate mailbox clutter using the new field: "Sync emails from"
Dear Customers, We hope you're well! We are here with a minor enhancement in email integration in Zoho CRM. Emails have become the primary mode of communication these days. Because of which mailboxes are getting overly cluttered day after day. To help
Zoho CRM Sandbox now supports integrations
Hello everyone, We are now expanding Zoho CRM Sandbox to support integrations with other Zoho products. You can connect, configure, and validate the behavior of your integrated tools within a safe, isolated environment - testing end-to-end without touching
Building Toppings #8 - Using widgets to extend the Bigin UI
Hello Biginners, In our previous forum post, we explored schedules and workflow functions and learned how to automate real-time and time-based actions inside a topping. In this post we'll look at how to embed custom UI components inside Bigin using widgets.
Tip #81 – Turn every session into a story with Session Highlights – 'Insider Insights'
Hello Zoho Assist Community! Picture this: your team wraps up dozens of remote support sessions every week. Each one involved troubleshooting, tools, fixes, and back-and-forth with customers. But when it's time to review what actually happened across
Zoho CRM APIs
Hello, I think as a developer, it is very important to have the ability to manage, develop, and execute functions directly from my local development environment (for example, VS Code). Zoho CRM should have a way to create, deploy, and manage functions
🎙️ Ask The Experts: Get Your Bigin Questions Answered Live
We've seen so many thoughtful questions from our #BiginnersClub community over the years. While we're always happy to help here, we're excited to introduce a new way for you to connect with us directly. Join us for Ask The Experts, a one-hour live fireside
Postcode problems
So we were very pleased to see we could limit shipping with postcodes. Brilliant. Unfortunately we have discovered It does not seem fit for purpose. In the UK we write postcodes in various ways Examples BH217NL BH21 7NL Bh217nl bh217NL and many more ways
Certain items certain shipping
Me again it would be helpful to have different shipping for different categories. Our example are salt. Delivery is free but have a minimum delivery. Pickup is cheaper so it has its own category- pickup.
Cookies Consent Management in Webforms
Hello Everyone! We are excited to introduce Cookie Consent Management for webforms. Read on to learn more. Webforms are online forms embedded on websites that allow users to submit data and create records in Zoho CRM. These forms utilize cookies to track
Payment links in Bigin just got supercharged
Greetings, We're happy to announce major enhancements to the Payments feature in Bigin. As you may already know, Bigin supports Payments integration, which enables you to create and send payment links directly from Bigin to your customers. It also allows
Disable Spam filter
Hi Support Team, Please disable spam filter for https://desk.zoho.in/support/keboli. Some spam ticket ids: #102, #103, #104
I just signed up
Hi, I have just signed up for the domain griffithcgenterprises.com. I would like to make two adjustments: If possible, I would prefer a 5 GB hosting/email plan instead of the current 10 GB option, as I believe that should be sufficient for my needs at
History tab stuck loading indefinitely on Android (v2.22.0)
History tab stuck loading indefinitely on Android (v2.22.0) — server returns 500 on visitorhistoryviews Hi all, I'm running into an issue where the History tab in the SalesIQ Android app (v2.22.0) never loads — it just spins indefinitely. Screenshots
Não consigo enviar e receber e-mail
Estou tendo problema de envio e recebimento de e-mail (meu e-mail é ands....lisi.com.br) Esta mensagem foi criada automaticamente pelo software de entrega de e-mails. Uma mensagem que você enviou não pôde ser entregue a um ou mais destinatários. Este
إلغاء الإشتراك
أريد إلغاء الإشتراك نهائياً.
Opening two notes at once in the Mac app
Just like the title says - I want two notes open the same time on my Mac Air. AI search seems to think I have the option to open one window, then click on a second one. But of course if one window is open I can't see the others. It also recommended using
Introducing the Employee Portal for internal job posting
Employee referrals and internal applications are one of the most trusted hiring channels. But in many organizations, employees only hear about openings through messages, word of mouth, or after the role has already been open for a while. When employees
Department Customization Copy/Paste
Hello! I love the new customization of the layouts, rules and templates! However, we have several "departments" that operate similar and as I'm updating either ticket layout or workflow rules, I'm finding that I have to do it in each department. I would
How do you import mail from Thunderbird into ZOHO mail
Hi, We have Thunderbird on our Apple Macs and want to transfer the emails from this to our shiny new Zoho mail account. I know using Outlook on a PC you can zip the .eml files up and upload them into specific folders on your ZOHO mail account using this form: mail.zoho.com/mail/jsp/importFolder.jsp However as Thunderbird use mbox files I'm not sure how to do it. Can anyone let me know if they have migrated mail from Thunderbird to Zoho mail and how they did it. I have many folders and emails to transfer
How to Open .mbox file in Gmail with Attachments?
Gmail offer users to backup INBOX folder in .mbox file format via Google Takeout Feature. Howver there is no such option to Restore Gmail MBOX. Thus I would like to suggest you to choose an alternate approach i.e. MBOX to Gmail Wizard. This utility will open .mbox file in Gmail with attachments. Steps to open MBOX file in Gmail are; Run MBOX to Gmail Wizard Click Add File and add .mbox file. Enter your Gmail login credentials. Click Convert button. Finished! This is how you can open MBOX file in
Poor Zoho Support
Been trying to reach support via telephone and email. The support has always been slow to respond but now its been two weeks without a return call. I have even sent them screen shots of the problem I've having with no results. Is anyone had the same problem.
Desk Contact Name > split to First and Last name
I am new to Zoho and while setting up the Desk and Help Center, I saw that new tickets created or submitted from the Help Center used the Contact Name field. This would create a new Contact but put the person's name in the Last Name field only. The First
SalesIQ operators will not receive any messages if customers do not answer the Pre-Chat questions in Flow Controls.
Hi Zoho SalesIQ Team, I am reaching out to report a issue regarding the Brands > Flow Controls SalesIQ operators will not receive any messages if customers do not answer the Pre-Chat questions in Flow Controls and continue sending messages without completing
Add Comprehensive Accessibility Features to Zoho Writer
Hello Zoho Writer Team, We hope you are doing well. We would like to submit a feature request to enhance Zoho Writer with a full set of accessibility tools, similar to the accessibility options already available in the Zoho Desk agent interface. 🚧 Current
Copying a Document with its Citations
When I copy a document that contains citations using File>Make a Copy from the document's menu the text copies but the citations do not (according to Google they should). Is this the correct way to make a complete copy of a document with its citations
Bing ads integration and tracking
Hi, Is there any way to track Bing ads in the same way that we are able to track google adwords? It is important for us to be able to determine the conversion rate of our Bing ads. If this is not possible now, will this feature be added in the future?
#20 Your Business Shouldn't Stop Just Because You Do
Imagine you are on a well-deserved vacation. Your clients are expecting invoices at the beginning of the month, recurring customers are due for billing, and payments are still coming in. Do you carry your laptop everywhere, hoping you don't miss a billing
Next Page