> ## Documentation Index
> Fetch the complete documentation index at: https://help.pipelime.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Calendar connections

> Connect, reconnect or disconnect a calendar, and choose which calendars are checked for conflicts and where bookings are created.

export const UiPath = ({children}) => {
  const parts = String(children).split(/\s*(?:→|>)\s*/).filter(Boolean);
  return <span className="pl-path">
      {parts.map((part, index) => <span key={`${index}-${part}`}>
          {index > 0 && <span className="pl-path__sep">→</span>}
          {part}
        </span>)}
    </span>;
};

export const Screenshot = ({id, alt, caption, frame = 'browser', url, marks = [], lang = 'en', workspace = 'northwind-outbound'}) => {
  const src = `/images/screenshots/${lang}/${id}.png`;
  const chrome = url ? `app.pipelime.ai/${workspace}${url}` : 'app.pipelime.ai';
  return <figure className={`pl-shot pl-shot--${frame} not-prose`}>
      <div className="pl-shot__frame">
        {frame !== 'bare' && <div className="pl-shot__bar">
            <span className="pl-shot__dots">
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
            </span>
            <span className="pl-shot__url">{chrome}</span>
          </div>}
        <div className="pl-shot__media">
          <img src={src} alt={alt} loading="lazy" />
          {marks.map(mark => <span key={mark.n} className="pl-shot__mark" style={{
    left: `${mark.x}%`,
    top: `${mark.y}%`
  }} aria-hidden="true">
              {mark.n}
            </span>)}
        </div>
      </div>
      {caption && <figcaption className="pl-shot__caption">{caption}</figcaption>}
    </figure>;
};

When you finish, your meeting links check a real calendar before they offer a time, new bookings are created on the calendar you choose, and you know how to add a second account, fix one that lost access, or take one away.

<div className="pl-availability">
  <div className="pl-availability__row">
    <div className="pl-availability__label">Where</div>
    <div className="pl-availability__value"><span className="pl-path">Your avatar<span className="pl-path__sep">→</span>Profile Settings<span className="pl-path__sep">→</span>Calendar</span></div>
  </div>

  <div className="pl-availability__note">Google Calendar is always offered. The Microsoft button is behind a flag while the Microsoft app completes publisher verification.</div>
</div>

## Before you begin

* **A Google account holding the calendar you want checked.** Connecting asks for permission to see and change events on it, because a booking is a change.

<Note>
  A calendar connection belongs to you, not to the workspace. Every host on a meeting link connects their own. Connecting yours does nothing for a teammate who hasn't connected theirs.
</Note>

## Steps

<Steps>
  <Step title="Open your calendar connections">
    Go to <UiPath>Your avatar → Profile Settings → Calendar</UiPath>. With nothing connected yet, the card reads **No calendar connected yet** above a single **Connect Google Calendar** button. That first connection, including Google's own consent screen, is walked through in [Connect your calendar so leads can book](/en/getting-started/connect-your-calendar). The steps below pick up from there.

    Once an account is connected, the card looks like this:

    <Screenshot
      id="workspaces-account/calendar-connections--connected"
      url="/user/calendar"
      alt="A connected calendar account card: the Google address, a green Connected chip, a summary line naming the number of calendars checked and the destination calendar, an Edit calendars button and a trash icon"
      caption="One connected account, read at a glance: how many calendars it's watching, and where new bookings go."
      marks={[
    { n: 1, x: 41, y: 44 },
    { n: 2, x: 34, y: 56 }
  ]}
    />

    The chip (1) reads **Connected**, and the line under it (2) gives the whole setup in one sentence: how many calendars are checked for conflicts, and which calendar bookings are added to. Nothing else has to be opened to read it.
  </Step>

  <Step title="Connect an account, or add another">
    **Connect Google Calendar** sends the whole page to Google and brings you back once you approve access. Once you have one account, the same button reappears under an **Add calendar account** heading below the cards, so a second account (a shared team calendar, say) connects the same way.

    A second account gets its own card, its own conflict selection and its own status. The one thing it does not get is its own destination calendar: that is a single choice across all of your accounts, which the next step covers.

    <Note>
      Declining the calendar permission on Google's screen is the one outcome that says nothing. You land back on the page you left with no new card and no message. That is a connection that did not happen, not one that failed. A connection that fails carries a red message with the reason.
    </Note>
  </Step>

  <Step title="Choose which calendars are checked, and where bookings go">
    **Edit calendars** opens a dialog titled **Select the calendars to check for conflicts**. The list is read from Google each time you open it, not from what was stored, so a calendar you were added to five minutes ago is already there.

    <Screenshot
      id="workspaces-account/calendar-connections--calendar-dialog"
      frame="bare"
      alt="The calendar selection dialog: a checkbox list of calendars with the primary one marked, a divider, and an 'Add booked meetings to' radio group of the writable calendars below"
      caption="Two decisions in one dialog: what blocks your time, and where meetings land."
      marks={[
    { n: 1, x: 15, y: 30 },
    { n: 2, x: 15, y: 78 }
  ]}
    />

    Tick every calendar that holds real commitments (1). A bookable time then disappears whenever a ticked calendar has a *busy* event on it; a calendar you leave unticked is never checked, however busy it really is.

    Lower down, **Add booked meetings to** (2) picks the one calendar new bookings are created on. Only calendars you can write to are offered here. A calendar shared with you read-only can still be ticked for conflicts, but nothing can be created on it. If none of this account's calendars are writable, the section reads "This account has no calendars you can add events to." instead of offering a choice, and **Save** still works, so your conflict selection is kept either way.

    <Warning>
      You have one destination across every account you connect, not one per account. Whenever this account has a calendar you can write to, the dialog opens with one of them already selected: the account's own destination if it holds it, otherwise its primary writable calendar, otherwise the first. So opening the dialog on a second account and pressing **Save** moves the destination onto that account and clears it on the one that had it, even if that is not what you came to change.
    </Warning>
  </Step>

  <Step title="Reconnect an account that lost access">
    When an account's access is withdrawn on Google's side, the refusal only surfaces the next time we ask for a fresh token. The card's chip then changes from **Connected** to **Needs reconnection**, and a **Reconnect** button appears beside **Edit calendars**.

    <Screenshot id="workspaces-account/calendar-connections--needs-reconnect" url="/user/calendar" alt="A calendar account card in its needs-reconnection state: an orange Needs reconnection chip and a Reconnect button next to Edit calendars" caption="The account stays in the list, and so does its calendar selection. It just has to go through the connection again." marks={[{ n: 1, x: 78, y: 44 }]} />

    **Reconnect** (1) sends you back through the same Google approval as a first connection. Opening **Edit calendars** on an account in this state shows the same thing a different way: "This account lost access to your calendar. Reconnect it to manage its calendars." It has its own **Reconnect** button, and **Save** stays disabled until the account is back. Either button restarts the connection, and your saved calendar selection survives it.
  </Step>

  <Step title="Disconnect an account you no longer use">
    The trash icon on a card (its tooltip reads **Disconnect**) opens **Disconnect calendar account?**. The dialog says exactly what happens: existing bookings are left alone, and only that account's calendars stop being checked for conflicts. Confirming with **Disconnect** removes the card immediately.

    Disconnecting one account never touches any other calendar account you have connected. Each is independent.
  </Step>
</Steps>

## What happens next

<Check>
  The account shows a **Connected** chip, and its summary line names both how many calendars are checked and where bookings will land.
</Check>

The same connection shows up on any meeting link you host. Each host's row on a link's host list carries a chip for that host's own calendar: **Calendar connected** once they have one, **No calendar** until they do.

<Screenshot id="workspaces-account/calendar-connections--host-chip" url="/meeting-links/12" alt="The host list on a meeting link's edit form: two hosts, each row carrying an amber No calendar chip, with a small Connect button on the signed-in user's own row" caption="Every row answers for one person. You cannot connect a calendar on a teammate's behalf." marks={[{ n: 1, x: 80, y: 50 }]} />

A host with nothing connected shows **No calendar** (1); hovering it explains why: "Bookings for this host won't be conflict-checked until they connect a calendar". The **Connect** button beside it appears on your own row only. It opens this page carrying the link you came from, so finishing the connection puts you back on that form rather than here.

A host you have only just added to the link carries no chip at all. Readiness is known for the hosts already saved on it, not for a row you are still editing.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Edit calendars shows no choice for where bookings go">
    "This account has no calendars you can add events to." means none of that account's calendars are ones you can write to. Only a calendar you own or can write to can receive a new booking. Those calendars can still be ticked for conflict checking. If you need somewhere for bookings to land, connect an account that has a writable calendar.
  </Accordion>

  <Accordion title="The card says Needs reconnection">
    Access was withdrawn on Google's side, and the refusal only surfaces the next time we ask for a fresh token. Until you reconnect, that account's calendars are skipped when your availability is worked out, so times you are busy on them can be offered again. **Reconnect** on the card, or inside **Edit calendars**, restarts the same connection you made the first time. See the step above.
  </Accordion>

  <Accordion title="A meeting link shows a host with No calendar even though I connected mine">
    Check whose row it is. Calendar connections are personal: connecting yours only sets your own row to **Calendar connected**. A teammate who hosts the same link has to sign in and connect their own. You cannot do it for them. [Hosts: round robin vs collective](/en/meetings/hosts-round-robin-and-collective) covers what an unconnected host means for that link's bookings.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Connect your calendar so leads can book" icon="calendar" href="/en/getting-started/connect-your-calendar">
    The first connection, start to finish, including Google's consent screen.
  </Card>

  <Card title="Hosts: round robin vs collective" icon="users" href="/en/meetings/hosts-round-robin-and-collective">
    How bookings are shared between hosts, and what an unconnected host changes.
  </Card>

  <Card title="What invitees see: the booking page and self-service" icon="eye" href="/en/meetings/what-invitees-see">
    The calendar your invitee is actually booking against.
  </Card>

  <Card title="No Available Slots" icon="circle-alert" href="/en/troubleshooting/meeting-link-shows-no-slots">
    A missing calendar connection is one of several reasons a link offers nothing.
  </Card>
</CardGroup>
