Google Calendar connects with your Google sign-in, so there is nothing to copy or paste. The calendar stays yours: IcloneU reads and writes ordinary events in the calendars of the Google account you connect, and never creates a calendar of its own.
Connecting the calendar
Open the connector list
Go to Automations and open the Connectors tab. Google Calendar is a tile under Available Connectors, in the Scheduling category.
Start the connection
Click the tile. The window that opens explains what comes next: you are sent to Google to sign in, and IcloneU asks to see, create and edit events on all your calendars, to check your availability, and to see your primary Google email address, which only labels the connection. Click Connect with Google Calendar.
Approve access in Google
Sign in with the Google account that owns the calendar the clone should book into, and leave every requested checkbox ticked on Google's consent screen. You come back to the Connectors tab with the connection listed as Google Calendar (your email address). Finish within 15 minutes, signed in to IcloneU as the same person, or IcloneU shows "This connection request has expired or doesn't match your session. Start the connection again from Connectors." If you switch to another IcloneU account before you come back, you see "This connection was started from a different account than the one you're working in now. Switch back to that account and connect again." If you decline on Google's screen you see "You denied access. Please try again and grant the required permissions." Only members who can manage Developer tools can connect: for anyone else the Available Connectors tiles aren't shown. If that permission is taken away while you are on Google's screen, you come back to "You don't have permission to manage connections on this account."
Heads upIcloneU doesn't verify which boxes you left ticked. The calendar permission is the one that matters: a connection approved without it is still created, but its calendar actions then fail with an error from Google. If that happens, remove the connection and connect again with every box ticked. Without the email address the connection works as usual and is simply named Google Calendar.
Giving a clone the calendar
A connection does nothing on its own. Open the clone that should take bookings, go to its Skills tab and, under Integration connections, switch on the Google Calendar card. One connection can serve several clones, each with its own settings. A clone uses one Google Calendar connection at a time: a second one stays switched off, with a note naming the connection the clone already uses.
Then click Configure on the card. The window has four parts, in this order: Usage instructions, where you tell the clone when and how to use the calendar; Pre-bound resources, the booking settings in the table below; Available actions, where you untick anything this clone should not do (workflows are not affected); and Custom functions, fixed tools built on one of the connection's actions, of which the clone sees only the name and parameters.
| Setting | What it does | Left blank |
|---|---|---|
| Calendar | The calendar this clone books into and reads from. A pinned calendar is not the clone's to choose, so it cannot book anywhere else. | The clone picks one each time, normally the primary calendar of the Google account you connected. Pin it, so bookings can't land anywhere else. |
| Working hours start | First hour of the day a booking may start, in 24-hour time, for example 10. | 9 in the free-time search, unless the clone picks another hour. |
| Working hours end | Hour by which every booking must have ended, for example 20. | 17 in the free-time search, unless the clone picks another hour. |
| Booking length (minutes) | The length the free-time search looks for, for example 180 for a three-hour party. The clone is told it, but the event it books runs from the start to the end the clone sends. | 60 in the free-time search, unless the clone picks another length. |
| Gap between bookings (minutes) | Time kept clear before and after every booking, for cleaning or setup. A time closer than this to another event is not offered. | No gap: back-to-back bookings are allowed. |
Working hours hold only when Working hours start and Working hours end are both set. Then the clone offers no time outside them, a time the customer asks for outside them comes back as unavailable, and a booking or a move outside them is refused, so the clone offers another time. With either one blank, the clone chooses the hours of its free-time search itself, and a time the customer names is not checked against any hours.
Check Availability and Find Free Slots tell the clone only when the calendar is busy, never what the other events are. List Upcoming Events is different: it gives the clone the title and time of the next events on the calendar, whoever they belong to. If your event titles carry customers' names, untick it under Available actions on clones that talk to customers.
Times are read in the time zone each calendar action carries, which is America/Mexico_City unless the clone is told otherwise. If your business keeps another time zone, say so in the clone's Usage instructions, for example: use America/Bogota as the timezone for every calendar action.
What the clone does in a conversation
- It offers free times. Asked about a day, the clone runs Find Free Slots: start times inside the working hours, by default every 30 minutes, where the booking length and the gap stay clear of every event on the calendar, all-day events included. It gets up to 12 at a time and is told when there are more, so it offers a few and asks which suits.
- It checks a time the customer names with Check Availability. A clash comes back as the other event's start and end only, never its title, so the clone can propose another time without learning whose booking it is. When only the gap is in the way, the clone is told that too.
- It books with Create Event. The event appears in Google Calendar straight away, with the title and description the clone writes, and IcloneU marks it as this customer's booking. The mark is a private property of the event that Google Calendar doesn't show.
- It keeps one booking per customer. A customer who already has a booking doesn't get a second one: the clone is told about the existing booking and moves it with Update Event instead. It makes a second, separate booking only when the customer clearly asks for one. Bookings made from the same person's linked contacts on other channels count as theirs (see Managing contacts).
- It moves or cancels the customer's own booking with Update Event or Delete Event. The clone finds that booking through its mark on the calendar, so this works days later, in a new conversation or on another linked channel. Asked to change an event that doesn't exist, it is told the customer's real booking instead of making a new one.
- It uses the calendar in private chats only. The calendar actions are offered in direct messages and chats, never when the clone replies to a public comment.
- It sends Google invitations only when there is an attendee. If an attendee email is set on the booking, Google sends that person an invitation, and later changes and the cancellation reach them too.
The clone writes the event's title and description itself. Use its Usage instructions to ask for what your team needs: the customer's name and phone number in the title, say, or the word APARTADO on a hold that still waits for a deposit (see Releasing unpaid holds safely).
Calendar steps in a workflow
In a workflow, add an Integration step, pick your Google Calendar connection and one of six actions. The Calendar field lists the calendars the connection can see, and each time field takes a date and time, a date alone or a variable such as {{tomorrow}}. When an action fails, the step leaves by Error and hands the reason to the rest of the flow as {{rv_integration_error}} (see Workflow actions); what it returns arrives as {{rv_…}} variables on the Success side.
| Action | What it does | What it hands on |
|---|---|---|
| Create Event | Creates an event. Two dates without a time make an all-day event, and an Attendee Email gets a Google invitation. | {{rv_event_id}} and {{rv_html_link}}, the event's address in Google Calendar. |
| Update Event | Changes only the fields you fill: title, description, location or time. Start and End go together to move an event. | {{rv_event_id}} and {{rv_html_link}}. |
| Delete Event | Deletes an event. One that was already deleted counts as done. Its optional Only If The Title Contains field is explained below. | {{rv_deleted}} and {{rv_already_deleted}}, true or false. |
| Check Availability | Says whether a time is free, with an optional gap to keep clear and an event to ignore when you check a move. | {{rv_available}}, how many events clash, and their times. |
| Find Free Slots | Lists the free start times on a date between Working Hours Start and Working Hours End (9 and 17 unless you change them), for a Slot Duration, spaced by Start Time Spacing (30 minutes unless you change it). | {{rv_count}}, {{rv_slots}} with each start and end, and {{rv_truncated}}, true when there are more than the 12 returned. |
| List Upcoming Events | Lists the next events on the calendar, 10 unless you change Max Results. | {{rv_count}} and {{rv_events}}, each with its id, title, start, end and link. |
A workflow step runs with no customer attached. An event made by a Create Event step is nobody's booking: the clone doesn't treat it as the customer's, and nothing watches it for changes unless its description carries a WhatsApp line and it is on a calendar pinned on a clone whose Google Calendar card is switched on (see Bookings entered by hand). An Update Event or Delete Event step on a booking starts none of the booking events below, and the booking's record takes the change, so a workflow that moves or deletes a booking never starts itself again. That holds only when the step names the booking's calendar exactly as the booking was recorded. A clone with a pinned Calendar records that calendar, and picking the same one in the step matches it. A clone left unpinned records what it sent, normally primary, a name the step's Calendar list never offers: about five minutes after such a step moves or deletes the booking, IcloneU takes the change for one made by hand and fires Booking moved or Booking cancelled with {{rv_source}} set to calendar, which can start your cancellation workflow. So pin the Calendar on every clone whose bookings your workflows move or delete, and pick that same calendar in those steps.
Times in a step are read in its Timezone field, America/Mexico_City unless you change it. Use the time zone's full name, such as America/New_York.
Releasing unpaid holds safely
A common reservation flow holds a date when the clone books it, waits for a deposit and then runs Delete Event to free the date if nobody paid. If your team confirms payment by renaming the event in Google Calendar, from [APARTADO] to [CONFIRMADO] for instance, instead of tagging the contact, the flow can't see it and deletes a paid booking. Since production 1.153.0, Delete Event has an optional field for this: Only If The Title Contains.
- Set it to the word your provisional titles carry, such as APARTADO, and the step reads the event before deleting it. Upper and lower case don't matter, so APARTADO also matches (Apartado).
- The title still contains the word: the event is deleted, as before.
- The title no longer contains it: nothing is deleted and the step leaves by Error, with {{rv_integration_error}} reading Not deleted: the event's title no longer contains "APARTADO" (it is now "[CONFIRMADO] Fiesta Ana"), so someone changed it by hand. The booking was left in the calendar.
- The event was already deleted, or can't be read: the step goes on to delete it as before, and an event that is already gone counts as released.
Set the field
In the step that releases the hold, set Only If The Title Contains to the word your provisional events carry.
Wire the Error side
Connect the step's Error side to a Notify Admin step whose message includes {{rv_integration_error}}, so the team learns why a date was kept.
Tell the team
When a deposit is confirmed, rename the event, for example to [CONFIRMADO]. The rename alone protects the booking, even if nobody tags the contact.
Moving the event, editing its description or changing its colour doesn't stop the release. When the step keeps the event, nothing after it on the Success side runs, so the contact's reservation fields and tags stay as they were. Leave the field empty in steps that must always delete, such as a cancellation the team starts on purpose.
Workflows that start from a booking
A Google Calendar connection adds three events to the Connector event trigger. IcloneU raises them itself; no webhook is involved.
| Event | Fires when |
|---|---|
| Booking created | The clone books for a customer in a conversation, or someone enters a booking by hand in Google Calendar with the customer's WhatsApp number in its description (see below). |
| Booking moved | The date or time of a customer's booking changes, whether the clone moved it or someone dragged it in Google Calendar. A new title or description alone doesn't fire it. |
| Booking cancelled | A customer's booking is deleted, by the clone or in Google Calendar. It carries the booking as IcloneU last recorded it, so a title changed by hand without moving the booking still shows the old title. |
Each event carries {{rv_event_id}}, {{rv_title}}, {{rv_start}} and {{rv_end}} (as 2026-11-07T16:00:00), {{rv_start_date}}, {{rv_start_time}} and {{rv_end_time}} (as 4:00 PM), {{rv_date_text_es}} (sábado 7 de noviembre, 4:00 PM a 7:00 PM), {{rv_date_text_en}} (Saturday, November 7, 4:00 PM to 7:00 PM), {{rv_html_link}}, {{rv_contact_id}}, {{rv_calendar_id}}, the calendar the booking is in, and {{rv_source}}: clone when the clone made the change, calendar when a person made it in Google Calendar. Booking cancelled has no {{rv_html_link}}, and for a booking made before IcloneU kept a record of bookings (production 1.110.0, September 29, 2026) it carries only the event, calendar, contact and source. The times are in the booking's time zone: the one the clone's calendar action used, which is America/Mexico_City unless the clone is told otherwise (see Giving a clone the calendar), or, for a booking entered by hand, your account's reply time zone. When the clone itself moves it, Booking moved uses the time zone of the clone's calendar action (see Giving a clone the calendar), so tell the clone the same zone.
A booking made in a conversation starts only the workflows of the channel the customer booked on, unless a WhatsApp workflow's trigger has Also run for other channels switched on (see Workflow triggers). When the clone moves a booking, Booking moved fires even if the new time equals the old one.
One connection can serve several calendars, for example one clone per branch, each pinned to its own calendar. The booking events fire for every booking on the connection, so a workflow meant for one calendar should open with a Condition on Calendar ID, found under From previous steps, equal to that calendar's ID: the address Google gives the calendar, such as …@group.calendar.google.com. For a clone with no calendar pinned it is whatever the clone sent, normally primary, which a step's Calendar list never offers, so pin every clone's calendar (see Calendar steps in a workflow). Set that workflow's Delete Event and Update Event steps to the same calendar. Their Calendar field is a list and takes no variable, and a step that names a different calendar from the booking's fails with Google's notFound error (HTTP 404).
When someone changes an event in Google Calendar
Every five minutes IcloneU reads the calendars that have a customer booking still ahead, or that are pinned on a clone whose Google Calendar card is switched on, and compares each booking with what it last wrote. A change made by hand therefore reaches your workflows within about five minutes:
- Moved to another day or time: Booking moved fires with the new times and {{rv_source}} set to calendar. The clone sees the new time as well.
- Deleted: Booking cancelled fires with the booking as IcloneU last recorded it (a title changed by hand, on its own, isn't recorded), so a workflow can clear the contact's reservation fields, remove tags and stop reminders.
- Renamed, or its description or colour edited: nothing fires. The clone sees the new title.
- Changed by one of your workflow steps: nothing fires when the step names the calendar the booking was recorded under, because the change is then IcloneU's own. A step on the booking of a clone with no calendar pinned usually doesn't, and if it moves or deletes the booking, Booking moved or Booking cancelled fires as if the change were made by hand (see Calendar steps in a workflow).
- Deleted in Google Calendar just before the clone tried to delete it: Booking cancelled fires once, with {{rv_source}} set to calendar.
Only bookings a clone made for a customer, or ones handed over by hand as described below, and only until they end. Bookings made before production 1.110.0 (September 29, 2026) have no record and aren't watched. Nothing is read while the connection isn't Active; once it is working again, the next read catches up from where the last one stopped. If the connection can no longer see a calendar, its bookings are left as they are rather than cancelled.
Bookings entered by hand
A booking taken on the phone can be handed to the clone from Google Calendar. Create the event on a calendar a clone books into and add a line with the customer's WhatsApp number to its description, such as WhatsApp: +52 55 1234 5678. A second line such as Nombre: Juan Pérez names a customer IcloneU doesn't know yet.
Within about five minutes IcloneU finds the customer by that number, comparing the last ten digits so their WhatsApp contact is found however the number was written, or creates a contact for it. It then marks the event as that customer's booking, so the clone can answer about it and move or cancel it, and fires Booking created with {{rv_source}} set to calendar, so the same workflow runs as after a clone's booking.
- Only calendars pinned in the Calendar setting of a clone whose Google Calendar card is switched on are read for new events. A clone left on the primary calendar without pinning one takes none, and neither does a clone whose card is switched off.
- The label can be WhatsApp, WA, Tel, Teléfono, Cel, Celular, Móvil, Phone or Mobile, in any case, with the number after it on the same line: 10 to 15 digits, which may be grouped with spaces, dashes, dots or brackets. The name line takes Nombre, Cliente, Name or Customer.
- Write the country code (+52 …). A number without it is completed with your account's country when IcloneU can tell it, from the country given at onboarding or, failing that, from a Mexican reply time zone; otherwise the number is kept as written.
- An event without the line is left alone, and so is one that has already ended. An event that existed before a clone was pointed at the calendar is picked up only once someone edits it, by adding the line for example.
- The booking's workflow runs on the channel the customer last wrote on. A customer who has never written has no channel yet, so every matching workflow can run.
- The times its booking events carry are in your account's reply time zone, the Timezone under Reply timing, or America/Mexico_City when IcloneU can't read it. When the clone itself moves it, Booking moved uses the time zone of the clone's calendar action (see Giving a clone the calendar), so tell the clone the same zone.
A wrong number sends the booking confirmation to a stranger, and IcloneU has no way to tell.
Disconnecting and reconnecting
To disconnect, select the connection under Active Connections on the Connectors tab, click Remove and confirm in Remove Connection. That takes it off every clone that used it, together with their settings for it, stops the reading of its calendars and leaves every event in Google Calendar as it is. Workflow steps that use it then leave by Error, and its bookings start no more booking events. IcloneU deletes its own copy of the access; the permission itself stays in your Google account until you withdraw it there.
If the access stops working because Google expired or withdrew it, select the connection, click Settings, then Test Connection, and use Reconnect now in the message that appears. Reconnecting keeps the same connection, so the clones' settings, the workflows and the watched bookings carry on. Removing it and connecting again creates a new connection instead: switch it on and set it up again on each clone, pick it again in each workflow step, and bear in mind that bookings made through the old one are no longer watched.
Error messages
These come from the connection itself, so they read in English in both languages. In a workflow you get them in {{rv_integration_error}}.
| Message | What it means |
|---|---|
| Not deleted: the event's title no longer contains … (it is now …), so someone changed it by hand. The booking was left in the calendar. | Delete Event with Only If The Title Contains found the title changed, so it kept the event. |
| HTTP 404, followed by Google's notFound error | The event isn't in the calendar the step names, or the event ID is wrong. Compare the step's calendar with the booking's {{rv_calendar_id}}. |
| Supply both Start and End to move an event. | Update Event got only one of the two times. |
| Nothing to update — supply at least one field to change. | Update Event had every field empty. |
| Unknown timezone '…'. Use an IANA id such as America/Mexico_City. | Check Availability or Find Free Slots got a time zone name it doesn't know. |
| Connection not found / Connection is not active (status: …) | The step's connection was removed, or it needs reconnecting. |
| Unable to obtain valid access token. | Google wouldn't renew the access. Reconnect the connection. |
Frequently asked questions
It doesn't on its own: a second booking is refused unless the customer clearly asks for another one. Two bookings usually mean IcloneU saw two people, the same customer writing from two channels whose contacts aren't linked. Link them (see Managing contacts) and the clone treats the bookings as one customer's.
Booking moved fires within about five minutes with the new date in {{rv_date_text_es}} and the other variables, so the workflow that sends reminders has to start from Booking moved as well and rewrite what it stored. Check too that a clone made the booking, or it was handed over by hand, after production 1.110.0, and that the connection is Active.
The booking events fire for every calendar on the connection. Open the workflow with a Condition on Calendar ID, as in Workflows that start from a booking, and set its calendar steps to that calendar.
The team probably confirmed it in Google Calendar instead of on the contact. Set Only If The Title Contains on the Delete Event step and have the team rename confirmed events (see Releasing unpaid holds safely).
Check that the calendar is pinned in the Calendar setting of a clone whose Google Calendar card is switched on, that the description has the WhatsApp line with 10 to 15 digits, that the event hasn't ended, and, for an event that existed before the clone was pointed at the calendar, that someone has edited it since. The connection has to be Active too.
Set both Working hours start and Working hours end on the clone. With either one blank, bookings aren't checked against any hours.
Only when the booking has an attendee email. Confirmations and reminders from IcloneU come from your workflows, on the customer's channel.
If it was the calendar access, the connection was created anyway, but its calendar actions fail. Remove it and connect again with every box ticked, then switch it on in each clone's Skills tab and set its Calendar and hours again. If it was only the email address, nothing breaks: the connection is simply named Google Calendar.
Last updated October 29, 2026 · Platform Integrations