Hey community members,
This post continues our discussion of the bidirectional sync between Zoho Bookings and Zoho CRM, focusing on how to reschedule
appointments in Zoho Bookings from Zoho CRM. If you've arrived at this community post directly, we recommend checking out Part 1 of this topic for a better understanding. You can access Part 1 through the following link: Bidirectional sync between Zoho Bookings and Zoho CRM - Part 1
How we're approaching this reschedule action:
Whenever a meeting initially scheduled through the Zoho Bookings application is rescheduled either within the Meetings module or through the CRM calendar, the changes are recorded and the corresponding appointment within Zoho Bookings is also rescheduled.
Create a function for rescheduling appointments
Complete these steps in Zoho CRM.
Step 1: Creating connections
You don't need to create a separate connection for the reschedule action. You can utilize the same connection name that we established in Part 1 of the Zoho Bookings - Zoho CRM bidirectional sync.
Step 2: Creating functions
Configuring a function that reschedules appointments differs slightly from the functions we discussed in Part 1 of the Zoho Bookings - Zoho CRM bidirectional sync.
Note: Here, we'll fetch the time zone in which the customer scheduled the appointment so that when we reschedule the booking, it will be rescheduled within the same time zone the customer initially chose.
Here are the steps:
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.
5. Next, configure the function's arguments. For the reschedule function, we'll have to pass two arguments: bookingID
as a string, and from as a date.
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.
d. Click the +Add button to add a second argument.
e. Set the Parameter Name as from and its type as date.
Here, we're using the reschedule appointment API. The term "from" specifically denotes the appointment's start time. In the reschedule API, the booking ID is a required parameter, and we must provide either the staff ID or the start time. Given that we're rescheduling based on the start time, we'll pass the start time as an argument and use "from" as the reference point.
Please configure the following code on the Deluge script page.
Here's an explanation of the code used for the reschedule function, split into three parts for purposes of clarity:
Lines 1-10 serve to invoke the "get appointment" API to retrieve the relevant booking ID and obtain the associated details. The purpose behind fetching this booking data is to access the actual booking start time and the time zone in which the customer initially scheduled the appointment using the Zoho Bookings application. This information is essential for comparing it with the rescheduled date and time.
- Line 1: Based on the Zoho Bookings account's data center, we'll set up the API endpoint URL configuration. More
details: Domain-specific API URLs
- Line 3: To obtain appointment details, we utilize the GET Appointment API. In this API, the booking ID is a mandatory
field, so we retrieve the booking ID from the Meetings module and subsequently pass it into the code to
retrieve the corresponding booking details.
- Lines 4-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
In lines 11-13, we execute booking data retrieval and date-time format conversion operations.
- Line 11: Here, we're fetching the booking's exact start time as scheduled by the customer.
- Line 12: Here, we're fetching the time zone in which the customer scheduled the appointment.
- Line 13: We perform the date-time format conversion to ensure compatibility with the reschedule appointment API. This API requires the appointment's start time to be in the format dd-MMM-yyyy HH:mm:ss. We retrieve the start time from the Zoho CRM Meetings module, match it to your CRM application's date and time format, and convert it to the format Zoho Bookings' reschedule appointment API supports.
Lines 14-27 serve to perform comparison and rescheduling operations.
- Line 14: Here, we're implementing an "if" condition to compare the actual booking start time (bookingstime) and the rescheduled time (time). We do this in order to execute the reschedule API function only if there is any change in the appointment's start date and time. If we don't implement the "if" condition to compare both inputs, the reschedule API function would enter a loop, continuously executing and potentially exceeding the API count limit.
- Lines 15-27: We use the reschedule appointment API, which requires the booking ID as a mandatory parameter, along with either the staff ID or start time. In this case, as we're rescheduling appointments based on the start time, we provide both the booking ID and the start time. The reschedule appointment API functions similarly to the APIs we've previously discussed, such as the cancel, mark as completed, and no-show APIs.
By reaching the end of these final steps, we've successfully created a function that executes rescheduling actions.
Now, let's proceed with creating a workflow and linking the reschedule function to it. This enables us to automate the syncing of appointment rescheduling actions from Zoho CRM to Zoho Bookings.
Creating a workflow
Create a workflow that handles appointment rescheduling in Zoho Bookings whenever a corresponding meeting is rescheduled within the Zoho CRM application
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 the rule name and description as required.
Part 2: Specifying the rule trigger
1. Record Action > Edit.
2. Enable the Specific field(s) gets modified setting and configure it per the screenshot below.
This serves to ensure that the workflow is executed only when the "From" field of the meeting is edited.
3. Configure condition > All Meetings.
4.Instant Actions > Function.
5. Click the New Function button.
6. In the Configure custom function page, select the "reschedule" 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 configure the field as "BookingId".
3. Select Meetings under Module and configure the field as "From".
4. Click the Save and Associate button.
Below is the final flow of the reschedule appointment workflow:
By the end of this process, we will have created a workflow that automatically executes when the "From" field in the Zoho CRM Meetings module is edited with a new date and time. As a result, this workflow will also reschedule the associated bookings for that meeting to the new date and time in Zoho Bookings.
We've arrived at the end of the community post. As mentioned in Part 1 of the Zoho Bookings—Zoho CRM bidirectional sync community post, with all of these configurations in place, you'll be able to book, cancel, reschedule, and update the status of appointments in Zoho Bookings directly from your Zoho CRM application. Which will make your appointment management easier.