View all documentations

Team Availability Booking Links

Allow any Holdex team member to share a booking link that displays real-time availability from their own Google Calendar (and, optionally, selected teammates' calendars). External contacts can choose an available time and book it directly—eliminating back-and-forth scheduling emails and reducing the risk of double-booking.

Getting Started

1. Connect Your Google Calendar

Go to https://wizard.holdex.io/calendar/settings.

This is a one-time setup for each team member. This page requires you to already be logged in to Wizard with your GitHub account — if you're not, you'll be redirected to log in first before you can continue.

  1. Click Connect Google Calendar.
  2. Sign in with your Holdex Workspace account (@holdex.io email).
  3. Grant the requested permissions.

The settings page shows which Google account is currently connected and allows you to disconnect it at any time.


Go to https://wizard.holdex.io/calendar/bookings/new or click Create Booking Link button from settings page.

Configure the booking link:

  • Name it (optional) so you can find it later in your list of links. If left blank, it shows up there as "Untitled link".
  • Select teammates to include in the availability check.
    • Team members only appear in the list after they have connected their own Google Calendar.
    • You are always included automatically, and the meeting will always be created on your calendar.
  • Set the lookahead window, which determines how many business days into the future availability will be offered.
  • Choose the slot length in minutes.
  • Set a buffer (optional, in minutes) if you need prep or wind-down time around meetings — for example, a physical meeting or one that needs preparation. The same value applies immediately before and after a booked slot. A slot is only offered if the buffer fits too, and once booked, a "Buffer" placeholder event is added around it on your calendar (and any included teammates'), so back-to-back meetings still leave the gap. Guests never see or receive this placeholder — it's internal only. Defaults to 0 (no buffer).

If no shared availability exists within the selected window, Wizard will display an error before creating the booking link. In that case, try one of the following:

  • Increase the lookahead window.
  • Reduce the number of included teammates.

When the booking link is created successfully, copy the shareable URL. The booking page is hosted on the Holdex website, and the URL is built from the participants' first names and the meeting duration, plus a short random suffix that keeps it unguessable:

https://holdex.io/book/vadim-mark-30min-Afn2

Older links that point at wizard.holdex.io/book/... — including pre-slug /book/<token> addresses — keep working and redirect to the same page on holdex.io.

Share the link using your preferred communication channel, such as email or telegram. Wizard does not send the booking link automatically.


When the recipient opens the booking link, they will see a calendar with available dates highlighted. They can:

  • Adjust the displayed timezone if needed (for example, while traveling).
  • Select an available date.
  • Choose an available time slot.
  • Enter their name and email address to confirm the booking.

4. Receive the Booking Confirmation

Once the booking is confirmed:

  • A Google Calendar event is created on your calendar.
  • Included teammates and the contact are added as attendees and receive the standard Google Calendar invitation email.

Because Google Calendar does not notify the organizer about events they create themselves, Wizard also sends you a confirmation email containing:

  • The contact's name
  • Their email address
  • The scheduled date and time
  • A direct link to view the event in Google Calendar

Important Notes

Each booking link can only be used once. A link becomes inactive after:

  • A booking is completed,
  • The configured lookahead window expires without a booking, or
  • You deactivate or delete it (see below).

If you need to schedule another meeting with the same participants, simply create a new booking link.

Go to https://wizard.holdex.io/calendar/bookings (or click View booking links on the calendar settings page) to see every booking link you've created — name, slot length, included teammates, shareable URL, and status (Active, Booked, Expired, or Deactivated). You only see links you created yourself.

  • Copy the URL directly from the list.
  • Deactivate an active link to stop it accepting bookings early. It stays in the list, and its public page shows the same used/expired state as a spent link — nothing is removed.
  • Delete a link to remove it from the list permanently. This can't be undone.

Live Availability

Availability is checked in real time whenever the booking page is opened. It is not cached when the booking link is created. If your calendar changes after sharing the link, recipients will only see time slots that are still available.

Availability is also re-checked at the moment of booking, not just when the page loads. If a creator's or teammate's calendar changes while the recipient has the page open — after it loaded, but before they submit — and their chosen slot is no longer free, the booking is rejected instead of double-booking anyone. The recipient sees "That time is no longer available — please pick another" at the top of the page, and the calendar refreshes to show only genuinely current availability. If this happens, the recipient just needs to pick a different (still-available) slot.

Working Hours

Every member gets a default availability of 9:00 AM – 6:00 PM, Monday to Friday, in their own timezone — not a single shared timezone across everyone involved. A slot only counts as available if it falls inside working hours for every included person (creator and all selected teammates).

Each member can customize this on the calendar settings page: define one or more named availabilities (start and end time, days of the week, timezone). When creating a booking link, the creator picks which availability applies for themselves and for each included teammate; anyone with a single availability is used automatically. Weekends are only offered if a selected availability explicitly includes Saturday or Sunday.

Teammate Availability

A teammate can only be selected after they have connected their own Google Calendar through Wizard.

Access and Authentication

  • Only Holdex Workspace members can connect a calendar because Google OAuth is configured as Internal.
  • External contacts never use Google OAuth. They simply open the public booking link, enter their name and email address, and receive a standard Google Calendar invitation.
  • A Google account or Holdex Workspace membership is not required to book a meeting.

Slot Reservations

Booking links work well when you can hand someone a self-service link. Slot Reservations are for the other case: you already know who the meeting is for (a contact in Attio) and you want to hold a short list of specific times for them, chase them if they go quiet, and let either of you finalize the pick — all from a GitHub issue.

1. Reserve Candidate Slots

From any GitHub issue, run:

@holdex calendar reserve <attio-person-id> [options]

See Commands — Calendar Reserve for the full flag reference and defaults.

  • The contact is identified by their Attio People record id, not a typed email — their address is resolved server-side and never appears in the thread.
  • You can reserve on your own calendar alone, or add teammates with --with=user1,user2. Every named teammate must have already connected Google Calendar with write access (see below) — if not, the whole command is rejected up front and nothing is reserved.
  • Wizard computes up to 10 candidate slots and places a tentative hold for each on every selected calendar, then replies in the same thread with a copy-ready message (times shown in the contact's timezone, with yours alongside) and a pick-link.
  • Add --buffer=<minutes> to require that much busy buffer immediately before and after the booked slot, on your calendar and any included teammates'. Once a slot is actually booked, Wizard adds a "Buffer" placeholder event around it (internal only — the contact never sees it). Defaults to 0.

You share that message with the contact over whatever channel you already use — Wizard does not send it for you.

2. The Contact Picks a Time

When the contact opens the pick-link, they see only the reserved slots, in their own timezone (adjustable if it's wrong — for example, while traveling), with their email address partially masked (e.g. n***@a***.ai) so anyone the link is shared with can't read it in full. They can pick a slot directly, or add extra guests before confirming.

If the contact replies out of band instead ("let's do the 4:15 one Tuesday"), open the same pick-link yourself and click that slot on their behalf — same page, same effect, recorded as your pick instead of theirs.

If none of the offered times work, the contact can say so on the page instead of picking one; Wizard posts a heads-up back in the issue thread so you can re-propose or cancel. The holds stay in place either way until you cancel them or they expire.

3. Booking, Cancelling, or Letting It Expire

  • The first successful pick wins: whichever slot is booked first gets a real Google Calendar invite (with a Meet link) added for the contact, you, and every included teammate, and every other held slot is released.
  • Run @holdex calendar cancel in the same issue at any time before a pick to release every held slot without booking anything. See Commands — Calendar Cancel.
  • If nobody picks before the reservation expires (by default, the end of the last candidate day), every hold is released automatically — no manual cleanup needed.
  • Wizard keeps its original reply comment in the issue updated as the reservation resolves, so the thread always shows the current status.

4. Attio Follow-Up

When you reserve slots, Wizard opens a follow-up task on the contact's Attio People record so a going-cold contact gets chased before the holds lapse. The task auto-completes the moment the reservation is booked or cancelled — you don't need to manage it yourself.

Write Access for Teammates

Placing a hold on someone else's calendar needs more than the read-only access used for booking links — it needs calendar event-write consent. Connect (or upgrade) yours at https://wizard.holdex.io/calendar/settings. If a command names a teammate who hasn't granted this yet, Wizard tells you in the thread and the reservation isn't created until they do.