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

    • Count the NUMBER of Contacts for an Account automatically

      Hello. Is there any way Zoho can count the number of CONTACTS for a particular ACCOUNT and have a field in the ACCOUNT module update itself automatically? Currently we use Zoho to administer our language school and the Contacts represent students and Accounts represent Grupos (Classes). It would be very useful for us to have a feature like this enabled, and I can see other similar applications requiring something like this. The solution would be even better if the Contacts met a specified criteria,
    • How to use Twilio to send appointment notification and reminder SMS in Zoho Bookings

      Hit no-shows out of the ballpark by combining Zoho Bookings and SMS providers. SMS notifications help you remind customers of their appointments and reduce no-shows by reaching out where they are. In this guide, we'll configure an SMS provider called
    • geographic search filter in map view

      Hi, I have a recruiting and timesheet system built in Creator. The client wants to enhance the search for candidates based on their location and filter by job skills - currently they look on the Map View which uses the geo location or post code of the
    • Announcement: Upcoming changes to the permission grant flow for OAuth apps

      This announcement is intended for app developers who use the Zoho API console. We're going to implement an important update to the way users grant permission for the OAuth apps created through the API console. What’s changing? Currently, users can grant
    • Add Google Workspace Module to Zoho Flow

      Dear Zoho Flow Team, I hope this message finds you well. We’d like to request the addition of a dedicated Google Workspace module in Zoho Flow. Currently, there are no triggers or actions for Google Workspace, which limits our ability to integrate and
    • How do i remove the Powered by Zoho logo from my careers page

      Can I remove this? ​
    • Totals on Pivot Table

      Is there a way to change the way the subtotal calculates? In this example I have a formula to give me the average monthly attendance ....but I want the grand total of the month to be the sum of all the average attendances...any ideas? Thank you!@
    • Team Inbox is not working AGAIN

      I like Team Inbox in general. It makes using a collaborative inbox easy - when it works. The problem is that it doesn't work at times - and it seems to not work, a lot. It's not catastrophic failure, it's little things. Unable to send messages Unable
    • HOW TO USE ZOHO

      IDK
    • Zoho account sign in with passkey

      Hello, I am trying to sign in using passkey, but the option doesn't show up in the web and is disabled in Oneauth on mobile, saying the admin has restricted the use. On the Admin page in Security MFA I can find no option for passkey. Help would be greatly
    • Pivot table with Text values - "Matrix Report"

      User Story - As a user, I would like the ability to display textual data in a two-way table, matrix format (text datatypes, not numerical datatypes displayed as a dimension) One major feature missing from the Pivot tables in Zoho Analytics is the ability
    • Canvas View in Zoho Recruit

      Is it possible or would it be possible to have the new 'Canvas View' in Zoho Recruit?
    • Can Wisestamp email signature be use with Zoho mail?

      Does a Wisestamp email signature work with Zoho mail?
    • WiseStamp

      WiseStamp is an excellent social media signature tool. It integrated seamlessly into Gmail and Thunderbird, plus a few more. Are there any plans to get this incredible app integrated into Zoho. check it out here: http://www.wisestamp.com/ thanks Tim
    • Power BI connector (Zoho Creator) to Zoho Projects

      How can i connect power bi to Zoho Projects? domain is zoho.com How can i find workspace name, application link name and Report link name?
    • Update your Google connection with Zoho TeamInbox

      Dear all, Wishing you a Happy New Year! Google has recently updated its security policy to enhance user protection, requiring all third-party apps and services to use OAuth authentication and password-less login methods. This update impacts users who
    • Easy way to delete attachments

      I've reached my data limit and would like to run a view/report, and mass delete attachments. Is there an easy, fast way to do this? Moderation Update: Post Summary: There are two features the post discusses a) Easy way to remove Email attachments Will
    • Sites Speed and Performance Grades

      I noticed that there are no recent inquiries or complaints about load speed or performance issues with Zoho Sites websites. However, I wanted to understand what Zoho has done to ensure that speed remains optimized, images are compressed and lazy loaded,
    • Integrating Quotes with leads Information

      Our business requires giving a quote to a lead (not Account / Potential - as we define it differently). Currently, Zoho CRM's Quotes are integrated with Accounts / Potentials and not with Leads. Is there a way I could get the Lead information to the Quotes
    • Unknown error occurred

      Hi, When we want to publish or edit a page in our website, we encounter with "Unknown error occurred" problem. I share a screenshot here. Our website is www.essoft.com. It happens every page. We want to solve this ASAP.
    • Zoho one

      I am starting Zoho one as a beginner and there is Zoho crm and Zoho sales which i needed to work on but it appears in unassigned apps. What Should i do now?
    • Dialing Microsoft Teams Phone Service via Zoho CRM

      I am using the VOIP option in Microsoft teams for my office phone system. I was hoping to have a way to dial numbers directly from Zoho CRM, but don't see anything in the Teams Integration or in the Telephony integration that will enable this. Does anyone
    • Emailing lookup field but placing this as an ID or number rather than text

      Hi there, First time poster and have been a user of Zoho Creator for approx 6weeks so forgive my ignorance as I learn to code. We have a need to send an email to a specific email address with some of the fields triggered by the submission of a form. In
    • Search mails in shared mailbox

      Hi everyone, is there a way to search mails in shared mailbox's? Search in streams or mail doesn't return anything from mails in shared mailboxes. Thanks! Rafal
    • User Emails Blocked

      Community: I keep running into issues where our users stop receiving notifications from CRM because their email addresses get blocked in on the backend some how. I reach out to support, they confirm, they fix, and we carry on, but then it happens again.
    • Why wont Zoho Support Grammarly!! --- PLEASE VOTE FOR THIS to show Zoho we need this

      The spell check and grammar in ZOHO are so buggy and a waste of time. Please support Grammarly! I'm sure I'm not the only one — there are other CRMs that support this. If you're not planning to add this feature, Please let others know before accepting
    • Is it possible to hide Developer Space for all user in Zoho Projects

      Hello! I am Zoho admin in a company and we want to use Zoho Project to manage projects, but after a few days of testing we are not able to "hide" the Developer Space from all kind of users except the admin. To sum up, I want to hide this for all users.
    • API (v2) Search Criteria using CONCAT

      With API I can search for a contact using First_Name and Last_Name. However, when I need to search the Contact Module using a full name — and because CRM does not provide an API for full name — I am not finding a way to do this in the traditional way
    • Weekly Tips: Stay Focused with Email Snooze!

      New Year, New Resolutions Being back at work also means being back to the constant barrage of messages from work and clients. The constant flood of incoming emails can lead to the missing of important messages, especially when you can't respond right
    • Schedule Zoho CRM reports only on Business Days

      Hello, Is it possible to schedule reports only on business days ? We currently get daily sales reports on weekend which has no value since the sales team doesn't work on weekends. Thanks
    • Zoho Payroll's Year in Review 2024

      As we roll into 2025, we'd like to pay tribute to all the milestones we hit in 2024! From releasing out new features that streamlined your workflows to updates that made payroll management smoother, we’ve had a prolific year—all while keeping you, our
    • Recurring Events Not Appearing in "My Events" and therefore not syncing with Google Apps

      We use the Google Sync functionality for our events, and it appears to have been working fine except: I've created a set of recurring events that I noticed were missing from my Google Apps calendar. Upon further research, it appears this is occurring
    • Multiplying Weight of product by Quantity

      I am facing an issue with creating a report that consolidates the total sales volume in kilograms. I have already specified the weight for each product. I have also aggregated the total sales quantity. The key question is: how can I create a report that
    • Confirmation prompt before a custom button action is triggered

      Have you ever created a custom button and just hoped that you/your users are prompted first to confirm the action? Well, Zoho knows this concept. For example, in blueprint, whenever we want to advance to the next state by clicking the transition, it is
    • Frontal interview scheduling - room availability in office using Google Workspace?

      Hi, We're using Zoho Recruit as our ATS and Google Workspace as our email, calendar and resources management. We want to use the interview feature to schedule an in-person (frontal) interview with the applicants. How can we sync the room resources availability
    • Add and Remove Agents from Departments and Groups in Zoho One

      Hi Zoho Flow Team, We hope you're doing well. Currently, Zoho Flow provides an action to add an agent to a group in zoho one, but there is no action to remove an agent from a group or a department. Another action that we find missing is the option to
    • Introducing Hiring Pipeline for Vendor Portal

      Keeping vendors informed about candidate progress is often challenging, leading to communication gaps and repeated follow-ups. To address this issue, we've released an update to the Vendor Portal feature that lets you choose to display candidates' hiring
    • Address Grabber function for Zoho

      I converted from ACT to Zoho. With ACT, I used an add-on called AddressGrabber to scrape the contact information from leads that I buy and contact information contained on emails and websites and directly add it as a new lead or contact. Does anyone know
    • Integrate zoom with zoho bookings please; or add optional times in zoho meetings

      Just like events - these online meetings like zoom need to be integrated with zoho bookings, and there needs to be option for customer to book a time slot. It should not be dictated by CRM user.
    • Add Owner to deluge-created module record note

      Is it possible to include the "owner" aka "creator", of a Note when creating it via delulge? This sets "superadmin" as the Note creator. I need to override it. notemap = Map(); notemap.put("Parent_Id",program_contact_id); notemap.put("Note_Content",program_contact_data.get('Note'));
    • Next Page