Bidirectional sync between Zoho Bookings and Zoho CRM - Part 1

Bidirectional sync between Zoho Bookings and Zoho CRM - Part 1

Hey, community members!

The default integration between Zoho CRM and Zoho Bookings is unidirectional, which means that any appointments booked, rescheduled, or deleted in Zoho Bookings will be reflected in Zoho CRM. However, any modifications made to events in Zoho CRM that originated from Zoho Bookings will not be reflected back in Zoho Bookings. Hence, as we're announcing in this community post, we've made the sync bidirectional.

This community post will cover the process of configuring appointment bookings from Zoho CRM in Zoho Bookings, as well as managing appointment statuses such as Canceled, No Show and Completed. We have addressed the rescheduling action in a separate post. To view it, please click on the following link: Reschedule Action

This community post will be beneficial for active Zoho CRM users who handle all their meetings within Zoho CRM. Additionally, you can use this community post as a reference to explore various automation possibilities tailored to your business requirements. For instance, with this post's guidance, when you update a booking's status field to "Completed" in Zoho CRM, it will automatically sync with Zoho Bookings and trigger an automated "Mark as completed" email to customers. This enhancement will improve your Zoho Bookings and Zoho CRM synchronization experience, making appointment management easier.

Prerequisites of bidirectional sync: 
  • Zoho Bookings Premium subscription
  • Zoho CRM paid subscription
  • Enable Zoho CRM integration within Zoho Bookings
The purpose of enabling the Zoho CRM integration within Zoho Bookings is to transfer booking details from Zoho Bookings to Zoho CRM. In this configuration, the mandatory field is the Booking ID, which is passed from Zoho Bookings to Zoho CRM through the integration. Whenever an appointment is booked, customer details will be sent to the designated CRM module, and a corresponding record will be created in the Meetings module within Zoho CRM, which will help in automating the workflow.

Here's the complete demo video that covers all the configurations discussed in the community post below:

Timestamps for your reference: 

0:35 - Purpose of this community post
1:26 - Zoho CRM plugin installation
4:43 - Custom field creation
7:20 - Function creation
9:22 - Connection creation
10:24 - Configuring arguments 
11:06 - Workflow creation
13:33 - Argument mapping
14:41 - Output verification
17:41 - Conclusion



How we're approaching this bidirectional sync

1. Booking an appointment from Zoho CRM

Install the Zoho Bookings for Zoho CRM plugin within your Zoho CRM application. This plugin enables the creation of a "New Appointment" button within the Zoho CRM Leads and Contacts module, which enables you to select the desired booking page you wish to open. You can choose from various workspace, service, or staff booking pages. After configuration, you can initiate the process of scheduling bookings directly from within your Zoho CRM account. 
2. Booking status: Completed or No Show

To update a booking's status (Completed or No Show), we've added a new picklist properties field named "Booking Status" in the Meetings module and configured it with two options: "completed" and "no show". Depending on the booking status chosen, the corresponding booking in Zoho Bookings will be updated.
  • Details on how to add a custom field to the Meetings module : Customizing modules

  • Here's a video that demonstrates how to add a field to a module in Zoho CRM: Adding fields
Reference:




3. Booking status: Canceled 

Whenever a meeting is deleted from the Meetings module, the corresponding booking in the Zoho Bookings app will also be canceled automatically. The meeting can be deleted either from the Meetings module or directly from the calendar.





To enable bidirectional sync between Zoho CRM and Zoho Bookings

Complete these steps in Zoho CRM.

Step 1: Creating connections

You first need to establish a connection between Zoho CRM and Zoho Bookings. Zoho Bookings is listed as one of the default connections in Zoho CRM, making it simple to set up. Select the Zoho Bookings connection, define the connection name and scope, and you'll be all set. This connection will enable you to link both applications and facilitate the seamless transfer of data. 
Read here for more details on how to create connection in Zoho CRM: Connections

Step 2: Creating functions

In this context, we'll be creating three functions: one for marking appointments as completed, another for canceling appointments, a third for marking appointments as no shows, and a fourth for rescheduling appointments. For each function, we must also configure arguments, which pass values or data into a function when making a call. Here, we'll pass the booking ID to the function as an argument to update the necessary booking status.

i. To create a function for marking appointments as completed:
 
     1. Go to Setup > Developer Space > Functions.
     2. In the Functions page, click + Create New Function.

     3. Configure the function name, display name, and description.
     4. Set the category as automation.

More details:  Functions

This opens the Deluge script page.

     5. Next, configure the function's arguments:
          A. Click on Edit Arguments on the Deluge script page.

          B. Set the Parameter Name as bookingID. (Please note that the "bookingID" value is case sensitive and must match 
               the term used in the code).
          C. Set the type as string.

Reference:


Please configure the below code in the Deluge script page. 

Code link: Completed



By completing these steps, we've configured a function that will mark appointments as completed.

ii. To create a function for marking appointments as no shows

      1. Go to Setup > Developer Space > Functions.
      2. In the Functions page, click + Create New Function.

      3. Configure the function name, display name, and description.
      4. Set the category as automation.

More details:  Functions

This opens the Deluge script page.

      5. Next, configure the function's arguments:
           A. Click on Edit Arguments on the Deluge script page.

           B. Set the Parameter Name as bookingID. (Please note that the "bookingID" value is case sensitive and must match
                the term used in the code).
           C. Set the type as string. 

Reference:


Please configure the below code on the Deluge script page.

Code link: No show



By completing these steps, we've configured a function that marks appointments as no shows.

iii. To create a function for marking appointments as canceled

      1. Go to Setup > Developer Space > Functions.
      2. In the Functions page, click + Create New Function.

      3. Configure the function name, display name, and description.
      4. Set the category as automation.

More details:  Functions

This opens the Deluge script page.

      5. Next, configure the function's arguments:
            A. Click on Edit Arguments on the Deluge script page.

            B. Set the Parameter Name as bookingID. (Please note that the "bookingID" value is case sensitive and must match
                 the term used in the code).
            C. Set the type as string. 

Reference



Please configure the below code on the Deluge script page.

Code link: Cancel appointment 



By completing these steps, we've configured a function that marks appointments as canceled.

Code explanation

Below is an explanation of the code that covers all the configurations present in the three functions mentioned above (cancel, mark as completed, and mark as no show).

Line 1: Based on the Zoho Bookings account's data center, we're setting up the API endpoint URL configuration. 
Lines 2 - 4: To update appointments, we utilize the Zoho Bookings API. Within the update appointment API, there are two mandatory fields that need to be included: BookingID and action (completed/cancel/noshow). 

Lines 5 - 10: We use the invokeURL task for API calls. To learn more about the invokeURL task, please refer to the following document: InvokeURL task for API calls

Now, let's proceed and learn about the process of creating a workflow and linking the established functions to it. This will enable us to automate the entire appointment status updating process.


Step 3: Creating a workflow

Workflow rules are sets of actions (email notifications, tasks and field updates) that are executed when specified conditions are met. Here, we'll generate workflow rules for each action to activate the respective function, thereby automating the appointment status updating process.

More details: Workflow overview

i. Creating a workflow for "canceling" appointments in Zoho Bookings when a meeting is deleted in Zoho CRM

Part 1: Creating the rule

      1. Go to Setup > Automation > Workflow Rules.
      2. In the Workflow Rules page, click Create Rule.

      3. Select "Meetings" under Module and configure rule name and description as required.

More details: Create Rule

Reference: 


Part 2: Specifying the rule trigger

More details: Specify rule triggers

      1. Select Record Action > Delete > Done to execute the rule when meetings are deleted.

      2. Configure condition > All Meetings.

      3. Instant Actions > Function.

      4. Click the New Function button.


      5. In the Configure custom function page, select the "cancel" function you created from among the functions users in your organization have created.


Part 3: Argument mapping

      1. Press # to choose an argument value.

      2. Select Meetings under Module and BookingId in the field.

      3. Click the Save and Associate button.

Reference:


Below is the final flow of the cancel booking workflow:


At the end of Part 3, we will have created a workflow that will be executed automatically when meetings are deleted in Zoho CRM. Simultaneously, the bookings associated with the meeting will also be canceled in Zoho Booking.

ii. Creating workflow for updating an appointment's status as "no show" in Zoho Bookings when the meeting's booking status is marked as no show in Zoho CRM

Part 4: Creating the rule

      1. Go to Setup > Automation > Workflow Rules.
      2. In the Workflow Rules page, click Create Rule.

      3. Select Meetings under Module and configure the rule name and description as required.

More details: Create Rule

Reference:

 
Part 5: Specifying the rule trigger

If you encounter difficulties while navigating through the steps mentioned below, please refer to Part 2 above, where we have provided step-by-step screenshots for clarification.

      1. Record Action > Edit. 

      2. Enable the Specific field(s) gets modified and configure it per the screenshot below.
          a. This is to ensure that the workflow is executed only when the booking status under the meeting module is
              updated to "No Show".

      3. Configure condition > All Meetings.
      4. Instant Actions > Function > New Function.
      5. In the Configure custom function page, select the "no show" function you created from among the functions
          users in your organization have created.

Part 6: Argument mapping:

If you encounter difficulties while navigating through the steps mentioned below, please refer to Part 3 above, where we have provided step-by-step screenshots for clarification.

      1. Press # to choose an argument value.
      2. Select Meetings under Module and configure the field as "BookingId".
      3. Click Save and Associate button.

Reference:


Below is the final flow of the "No Show" booking status workflow:


At the end of part 6, we will have created a workflow that automatically executes when the booking status field within the Zoho CRM Meetings module is updated to "No Show." This action will result in the associated bookings for that meeting also being marked as "No Show" in Zoho Bookings.

iii. Creating workflow for updating appointment status as "Completed" in Zoho Bookings when the booking status field of the meeting is marked as completed in Zoho CRM.

Part 7: Creating the rule

      1. Go to Setup > Automation > Workflow Rules.
      2. In the Workflow Rules page, click Create Rule.

      3. Select Meetings under Module and configure rule name and description as required.

Reference:



Part 8: Specifying the rule trigger

If you encounter difficulties while navigating through the steps mentioned below, please refer to Part 2 above, where we have provided step-by-step screenshots for clarification.

      1. Record Action > Edit.

      2. Enable the Specific field(s) gets modified setting and configure it per the screenshot below.
            a. This serves to ensure that the workflow is executed only when the booking status under the Meetings module is
                updated to "Completed".

      3. Configure condition > All Meetings.
      4. Instant Actions > Function > New Function.
      5. In the Configure custom function page, select the "completed" function you created from among the functions users
          in your organization have created.

Part 9: Argument mapping:

If you encounter difficulties while navigating through the steps mentioned below, please refer to Part 3 above, where we have provided step-by-step screenshots for clarification.

      1. Press # to choose an argument value.
      2. Select Meetings under Module and configure the field as "BookingId".
      3. Click Save and Associate button.

Reference:


Below is the final flow of the "Completed" booking status workflow:


At the end of part 9, we will have created a workflow that is automatically executed when the booking status field within the Zoho CRM Meetings module is updated to "Completed." As a result, the associated bookings for that meeting will also be marked as "Completed" in Zoho Bookings.

Conclusion

We've reached the end of this community post. With the integration mentioned above in place, you'll be able to book, cancel, and update the status of appointments in Zoho Bookings directly from your Zoho CRM application. This will help you effectively manage your appointments in one place. As mentioned above, we've covered the rescheduling action in a separate post, which you can access by clicking on the following link: Reschedule Action

Furthermore, we've outlined a method for automating appointment statuses in detail. You can use this document as a reference to explore the various possibilities that suit your needs.
 
If you have any questions or need assistance with your configuration, please email us at hello@zohobookings.com or support@zohobookings.com.

    • Recent Topics

    • A Question about Email Handling (Sending and Receiving)

      Hello! I was looking into setting up Email Aliases for my domain that I purchased a while ago through Zoho Mail. I set up a singular alias already and have it linked with Gmail, and it seems to be working out well. However, I set up another alias today,
    • Kaizen #201 - Answering Your Questions | Webhooks, Functions, and Schedules

      Hello everyone! Welcome back to another post in the Kaizen series! We are incredibly grateful for all the feedback we received, and as promised, we will answer all the queries in this Kaizen series. Last week, in our 200th post, we addressed one of the
    • Zoho Projects Strict Dates for Tasks

      Hi Zoho Projects team, I would love to see a feature to allow Strict Dates for Tasks. Sometimes in projects you have dates which must not move, even if predecessor Task dates change. For example, perhaps you need to book access to a facility to perform
    • No Mark as filed buton in GSTR -3b

      We are filing our GST in GST portal -and want to mark GST in Zoho books as filed. It is possible to mark GSTR 1 as filed through Mark as filed button. But there is no such button in GSTR-3B.  How to mark corrosponding GSTR-3B as filed?
    • ranking by drag the choices instead of rank by number

      is the option of draging the choice is available instead of selecting the ranking number for each choice?
    • TASKS - Dashboard to show ALL Tasks from ALL apps.

      The Unified Tasks View is useless without the other main zoho apps (Desk, Books & even FSM now) We need to see all our tasks under on pane of glass. The Zoho developers are out of touch with real business workflows. So how it was designed they want us
    • Function #13: Transaction level profitability

      In Zoho Books, the Profit & Loss report provides valuable insights into the overall profitability of your business, indicating whether you have made a profit or incurred a loss. However, there may be occasions when you wish to assess whether a specific
    • Zoho CRM with Sap Business One

      I need information about integration CRM with Sap BO, thank.
    • Allow bill to nest multiple projects

      A bill (purchase) is more often than not used across multiple projects and this functionality is missing and very urgently needed for accurate reporting of purchases across projects
    • Amazon invoice in Zoho Books

      I have just made my first few sales on Amazon India. Amazon Seller account generates invoices for the sales made on Amazon. These invoices are sent to customers also. Now when I was only making offline sales, I used to create Invoices in Zoho Book. Now
    • How can I change iOS display setting at night?

      It seems like at night the two light daytime settings themes (white with blue on top or just white) are not available and I am forced to choose among a few other colours that I really don’t want, I.e., black, blue or orange. Is there a way for me to always
    • Celebrate WWW day with Zoho Desk

      Let's recall the times when we learned 'WWW' stands for World Wide Web. Whether you like to call it wuh-wuh-wuh or double-u double-u double-u, or World Wide Web, we all owe a lot to this groundbreaking invention that reshaped how we connect, communicate,
    • The power of camaraderie

      In the days before the internet boom, conversations happened face-to-face or over the phone. Phone calls were precious; every minute counted, and every word mattered. We looked forward to those moments of real connection. Even today, nothing quite matches
    • Message Content is missing/invalid fault

      We cannot create a complete template over zoho. Some features - like button adding - is missing. The templates are created on Zoho and edited on Meta to solve the problem. But still then, some features cannot be used and the message returns this failure
    • Können bereits gesendete Kampagnen im Nachhinein einer Mailing-Liste zugeordnet werden, ohne dass die Kampagne erneut versendet wird?

      Wir haben unsere älteren Kampagnen in Campaigns über Kontaktkategorien versendet. Dann haben wir umgestellt auf Mailing-Listen, damit alte Kampagnen auch in einem Archiv aufgerufen werden können. Jetzt ist die Frage, ob die Kampagnen, die über die Kategorieauswahl
    • Newsletter Templates Are Not Mobile Responsive

      Hi, I've already submitted this request to ZOHO once this morning, but for some reason your system logged me out, wouldn't accept my username/password login, and isn't showing any evidence that I've submitted this issue. So here we go again... I am under the impression that your newsletter templates are supposed to be mobile optimised: https://www.zoho.com/campaigns/blog/responsive-email-marketing.html This is clearly not the case, as the last 2 newsletters I've created in Campaigns look perfect
    • Digest Juillet - Un résumé de ce qui s'est passé le mois dernier sur Community

      Bonjour à toutes et à tous, Zoom sur les nouveautés de juillet dernier au sein de Zoho Community France. Zoho Commerce vous propose une expérience améliorée grâce à sa nouvelle interface ergonomique et à ses fonctionnalités avancées, conçues pour faciliter
    • 100 Rows in a Subform is too limited

      We have a custom Module in CRM called Price Sheets, when we get a PO from a client we add the items from the PO to it and then check with our vendors for pricing and add our margin etc And after it is complete we have setup custom scripts to create a
    • Uninstall unattended agent

      Hello, I'm testing many use case before we purchase assist for our remote support. While we are testing what is the proper way to uninstall agent?  I did uninstall from systray, from windows control panel but still ZohoURservice is running. How can I uninstall client side?
    • Zoho Commerce Down?

      Is anyone else's storefront down at the moment? Ours has been down for at lease an hour.
    • Zoho Projects iOS app update: Dashboard widget on the home screen

      Hello everyone! We are excited to introduce the 'Dashboard' widget in the latest version(v3.10.8) of the Zoho Projects iOS app. Dashboard widgets allow you to view the project progress visually without having to open the app. The widget enables you to
    • Idea: Workflow Rule Trigger Only When Subform Row Is Updated (Thanks to New Inline Row Feature)

      Hi Zoho team and community, With the recent update to Zoho CRM, we can now add or delete rows inside subforms without entering edit mode, using the inline Add row button. This is a fantastic improvement for user experience — seamless, fast, and efficient.
    • Auto add new section based on document choices

      Hi team, I'm wondering if the below is a possilibity within Zoho sign. We have an application process to become a customer of ours, we currently use Zoho Sign to manage this application and this works quite well. However, if the customer indicates 'YES'
    • Change rate after xxxx kilometers

      Is there a way to change the miileage rate after a certain mileage. After 5000 kilometers, we want the rate to automaticly change. Thank !
    • Subform Entry Limit from a Subform Field (A different Subform on the same Form)

      Hi, I would like to be able to use a Subform 1 Field as the Dynamic Entry Limit for Subform 2. Even better would be able to use some code with the values, so for example using the Subform 1 Qty Field as the Max Entry limit for Subform 2, BUT only the
    • Slow Zobot response time

      Hi, We launched the Zobot on our site to sit along with the regular Live Chat but had to take the Zobot down as the response time was very slow. The bot was slow to begin then once the chat had been initiated the response was very slow. The bot typing
    • how to show data of 3 table in pivot

      Based on engineer name i want to get the data from 3 different tables like Service , amc, installation , but Every table contain Engineer name As Common , based that from the service table i want to take service amount , and count of service based on
    • Custom Status for Purchase Orders

      Currently Zoho books has functionality to create custom statuses for Sales Orders. Can this be extended to include custom status for purchase orders as well? It was a great decision to add this functionality to sales orders. Our use case is for tracking
    • Ask the Experts 22: Scale up your customer support with integrations & extensibility

      Hello everyone! The foundation is set. Build the beams. Raise the pillars. Set the walls. The Zoho Desk architecture stands tall. Let's discuss integration within Zoho Desk, extensions from the Marketplace, creating connections between Zoho Desk and other
    • Is there no way to duplicate an entire workflow or even custom function across multiple departments?

      Is there no way to duplicate an entire workflow or even a custom function from one department to other departments, like it is done for field duplication from one department layout to other department layouts?
    • Automated reply on any new ticket raised by customer

      Hi ZohoDesk team, Can we set up an automation so that whenever a new ticket is created against our support email; ZohoDesk immediately sends our standard acknowledgement, including the expected TAT for resolution? If that’s possible, could you share the
    • Zoho equipment rental - just like Booqable

      Hi Zoho Team, is it possible to create a module or a system like booqable? our business starts renting our IT equipment assets that have been recently used for Events and Projects, we are having ZOHO books so its easy to integrate if you create one. Booqable
    • Profit Margin Scheme

      I'm a tourism company operating in the aviation and outbound tourism sectors. Typically, taxes are 0% as our operations are outside the country. However, the state has now imposed a tax on the profit margin. This means if the selling price of an airline
    • Visibility and Enforcement for Outdated Plug Parameters in Zobot Canvas

      Dear Zoho SalesIQ Team, Greetings, We’d like to suggest an important usability and quality improvement for working with Plugs inside Zobot. Current Behavior: When we update the code of an existing Plug, any Zobot card using that Plug requires manual resaving.
    • Announcement: Zoho DataPrep to Deprecate Password-Only Authentication for Snowflake Connections on July 31, 2025

      As part of our ongoing commitment to security and in alignment with Snowflake's pledge to the Cybersecurity and Infrastructure Security Agency (CISA) Secure by Design initiative, Zoho DataPrep will no longer support single-factor password authentication.
    • The same Contact associated to multiple Companies - Deals

      Hi, I would like to know if there is an option to associate the same contact with multiple companies (two or more) deals, using the same contact details for all. This is because we have contacts who are linked to different companies or branches of the
    • Text on Zoho Sign confirmation dialouge is very small compared to text used everywhere else on Zoho Sign.

      I've reported multiple times through Zoho's support email that the text on this notification is very small in contrast to all the other text on the Zoho Sign app. I think it's a bug and it just needs the font size to be increased. It's very minor but
    • Wise integration in Zoho Books

      Hi, it is now time for zoho books to support Wise.com integration for payment links. Wise has launched credit card payments, now about 0.5% cheaper than Stripe. Also their bank payments are much much cheaper than credit cards. Its time for books team
    • Error Message: None of the rows can be imported

      I have been using zoho sheets to download my CSV file for about 2 years now, this month, October 2021, for some reason when I download it to upload to zoho books I get a message saying "None of the rows can be imported". I have been using the same process,
    • Invalid Element place_of_contact, Invalid Element gst_no, Invalid Element gst_treatment

      so this is the body contact_name: orderData.customerName, company_name: orderData.customerName, email: orderData.email, contact_type: 'customer', currency_code: 'INR', gst_treatment: 'business_gst', gst_no: 'i using proper gst no i just removed it from
    • Next Page