<!-- https://unlockos.io/manual/gcal-checkin-guide -->

# Checking in Google Calendar bookings (from scratch)

This guide is for facilities that **take bookings through Google Calendar** — from Spacemarket, Instabase, Spacee and similar platforms.
You keep taking bookings exactly as you do today; this page walks you, top to bottom, through everything needed for those guests to **self-check-in with UnlockOS and receive their key**.

> **The short version:** you don't need to change your listings or how bookings come in. UnlockOS reads the events on your calendar, imports them as reservations, and prepares the keys in advance. Your job is to **tell guests the check-in URL**.

---

## The whole flow

```
Booking platform ──→ an event lands on Google Calendar
                          │ (UnlockOS reads it every 5 minutes)
                          ▼
                    imported into UnlockOS as a reservation ──→ room key issued in advance
                          │
Operator ──→ tells the guest the check-in URL (listing instructions / message / QR on site)
                          │
                          ▼
Guest ──→ opens the URL → finds the booking by name → signs in by email → gets the key
```

| # | What to do | Where | Time |
|---|-----------|-------|------|
| 0 | Check prerequisites (locks, rooms) | App Integrations / Base Settings | check only |
| 1 | Connect your Google account | App Integration > Integrations > Google Calendar | 3 min |
| 2 | Bind the read calendar to a room | same page | 1 min per room |
| 3 | Choose the check-in and matching mode | Booking Management > Check-in tab | 5 min |
| 4 | Check the payment settings | Check-in configuration | check only |
| 5 | Tell guests the check-in URL | your listing's instructions, etc. | 10 min |
| 6 | Check the guest names on imported bookings | Booking Management > Reservations | check only |
| 7 | Test check-in | your phone | 5 min |

---

## Step 0: Before you start

Make sure these two are done. If not, do steps 1–2 of the [Check-in Setup Guide](checkin-setup-guide.md) first.

- **KEYVOX integration** (App Integrations > KEYVOX)
- **Rooms linked to smart locks** (Base Settings > Rooms)

> An imported booking gets the key for **the smart lock linked to its room** — not the unit set on the check-in configuration. If the room has no lock linked, the guest can still check in but **no key is shown**.

If you have no check-in configuration yet, create one in step 4 of the [Check-in Setup Guide](checkin-setup-guide.md). If it is only used for calendar bookings, you don't need to pick a price plan.

---

## Step 1: Connect your Google account

1. Open **App Integration > Integrations** and choose the **Google Calendar** card
2. Click **"Connect Google Calendar"** and sign in with the Google account that owns the calendar your booking platforms write to

The page is described in detail in [Google Calendar Integration](google-calendar-integration.md#step-1-connecting-your-google-account).

> **Don't see the Google Calendar card?** The feature is not enabled for your facility. Ask support to enable it.

---

## Step 2: Bind the read calendar to a room

Once connected, a **"Read calendars (import other-platform bookings)"** section appears.

1. In **Source calendar**, pick the calendar your booking platform writes events to
2. In **Bound room**, pick the room those bookings are for
3. Click **"Add"**

UnlockOS reads the calendar once right away, then automatically **every 5 minutes**. To import an event you just added, click **"Sync"** on the card. Events from 7 days ago to 90 days ahead are imported.

> **One room = one import source.** If you also bind an iCal feed or another calendar to the same room, the same booking is imported twice. Use exactly one per room. See [Google Calendar Integration](google-calendar-integration.md#critical-operating-rule-1-room--1-calendar-source) for details.

---

## Step 3: Choose the check-in and matching mode

Open the **Check-in** tab in **Booking Management**. In the **"Check-in URLs"** section, each bound calendar is listed as **"Google Calendar · room name"**. For each calendar, choose two things:

| Setting | What to choose |
|---------|----------------|
| **Check-in to use** | The check-in configuration for this calendar's bookings. If left unset, the facility default is used |
| **Matching** | How guests find their own booking. **"Code/Name" is recommended** |

**Why "Code/Name":** the other mode, "Screenshot", has the guest upload a screenshot of their booking confirmation and searches by the **date** on it. A space rented by the hour often has several bookings on the same day, so the guest sees a list of candidates. Searching by name narrows it to their own booking.

On the same card you can also pick an **applied form** to show a form (terms consent, ID check, etc.) only to guests from this calendar (optional).

---

## Step 4: Check the payment settings

Bookings imported from your calendar are treated as already paid on the booking platform.

**The price plan does not charge them.** Even if the assigned check-in configuration has a price plan, imported guests are not billed for it.

**But a deposit or prepaid amount is charged at check-in.** It depends on the assigned check-in configuration:

| Payment Timing | Deposit | Prepaid amount | Charged to imported guests |
|---|---|---|---|
| None | (anything) | (anything) | nothing |
| anything but None | yes (amount > 0) | (anything) | **the deposit amount only** |
| Prepaid / Prepaid + Postpaid | no | amount > 0 | **the prepaid amount** |
| any other combination | | | nothing |

If you don't want to charge anything extra, assign a configuration **whose Payment Timing is "None"**, or one **with neither a deposit nor a prepaid amount**, in step 3.

---

## Step 5: Tell guests the check-in URL (the most important step)

**UnlockOS sends nothing to these guests automatically.** Calendar events carry no guest email or phone number, so you need to give guests the check-in URL yourself.

### Copy the URL

In **Booking Management > Check-in tab > Check-in URLs**, click **"Copy check-in URL"** next to the URL on the calendar's card.

There is **one URL per assigned check-in configuration, not per booking**. Set it up once and every booking uses the same URL. Each calendar has its own card, but calendars assigned the same configuration share the same URL (guests search the whole facility's bookings by name).

### Ways to share it

Listed from least to most effort:

1. **Put it in the "how to use" / "how to enter" section of your listing** — every guest who books gets it automatically, with no work per booking
2. **Add it to your booking-confirmation message template** — send it through the platform's messaging
3. **Post a QR code at the entrance** — turn the URL into a QR code and put it by the door, so guests who didn't read the instructions can still check in on the spot

Sample instructions:

```
[How to enter]
From 24 hours before your booking starts, you can check in at:
https://checkin.unlockos.io/... (the URL you copied)

1. Open the URL and enter the name on your booking
2. Enter your email address, then the code we send you
3. Use the key shown (PIN or QR code) to enter
```

> **Don't use the kiosk URL.** The "Kiosk URL" on the Check-in tab (for an unattended tablet at the entrance) does not find bookings imported from a calendar. Give calendar guests the **check-in URL** above.

### Sending a link for a single booking

Open the booking's details and you'll find **Guest Links > Check-in link**. This link is **for that booking only**, and the guest goes straight to check-in without entering a name. Use it when you message one guest individually.

---

## Step 6: Check the guest names on imported bookings

Guests find their booking by **name**. UnlockOS imports **the calendar event's title** as the guest name.

Each platform formats event titles differently, so for the first few bookings, check the guest name in **Booking Management > Reservations**.

| Event title | Guest searches for "Taro Yamada" |
|-------------|----------------------------------|
| `Taro Yamada - Meeting Room A` | Found (a match anywhere in the title counts) |
| `Yamada Taro` | Found (name order is tolerated when the words are separated by spaces) |
| `TaroYamada` (no space) | Not found (order and splitting can't be inferred without spaces) |
| `Reserved` | Not found |
| `Busy` or no title | Not found (the guest name becomes a placeholder starting with `GCal-`) |

Guests must type at least 2 characters. Events whose title contains `Block`, `Buffer` or `片付け時間` (prep/cleanup slots some platforms add) never show up in the name search.

**If the title doesn't contain the guest's name:** open the booking's details, click **Guest Name**, and type the guest's name. Once you edit a booking's details, its guest name and notes are no longer overwritten by later syncs (changing the event title in the calendar won't update them either). Dates still follow the calendar.

You can also give the guest the **Confirmation Code** shown in the booking's details; they can search by that code instead of their name.

---

## Step 7: Test check-in

1. On the bound calendar, create an event for a time today **with your own name in the title**
2. On the Google Calendar page, click **"Sync"** on the card (it is imported within 5 minutes even if you don't)
3. Confirm the booking appears in **Booking Management > Reservations**
4. Open the check-in URL on your phone, enter your name → sign in by email → confirm a key is shown
5. When you're done, delete the calendar event (the next sync cancels the booking and disables the key)

---

## What the guest sees

1. Opens the URL you shared
2. Enters the **name** on the booking (or the confirmation code) and picks their booking
3. **Enters an email address, then the code sent to it**, to sign in (this email is recorded on the booking as the guest's contact)
4. Fills in a form if one is set; pays if a prepaid amount or deposit is set
5. Sees the key (PIN / QR code) and the usage window

Check-in is open **from 24 hours before the booking starts until 24 hours after it ends**. Opening the URL earlier shows a message that check-in isn't available yet.

---

## Good to know

- **No automatic messages to guests.** Imported bookings have no guest contact details, so UnlockOS sends no confirmations or reminders. Share the URL as in step 5
- **The kiosk can't find them.** Calendar guests check in on their own phone through the check-in URL
- **Keys are issued in advance.** The room key is issued when the booking is imported, and KEYVOX delivers it to the lock from about 72 hours before the start
- **Calendar changes flow into UnlockOS.** Change the time and the key's validity follows; delete the event and the booking is cancelled and the key disabled (except for a guest who is already checked in)
- **Change dates or cancel in Google Calendar (or on the booking platform).** If you change the dates in UnlockOS, the next sync puts them back to match the calendar

---

## How this differs from iCal (Airbnb, etc.)

Bookings imported through an iCal feed (Airbnb, etc.) check in the same way — Check-in tab assignment, check-in URL, keys issued in advance, and payment handling are all the same. The differences:

| | Google Calendar | iCal (Airbnb, etc.) |
|---|---|---|
| Where to set it up | App Integration > Integrations > Google Calendar | Booking Management > iCal Sync tab |
| Sync interval | about 5 minutes | about 30 minutes |
| Guest name | the event title, as is | some platforms send no name (e.g. "Reserved"); enter the guest name in the booking's details |

See [iCal Sync](ical-config.md) for iCal setup.

---

## Troubleshooting

### A guest says "my booking can't be found"

Check, in this order:

1. **Was the booking imported?** If it isn't in Booking Management > Reservations, click "Sync" on the Google Calendar page and check the status isn't "Error"
2. **Does it have a guest name?** If the guest name in the booking's details is a `GCal-...` placeholder or a platform's boilerplate, change it to the guest's name (step 6)
3. **Is it within the check-in window?** Earlier than 24 hours before the start, or later than 24 hours after the end, the booking isn't found
4. **Did you share the kiosk URL by mistake?** Share the "check-in URL" (step 5)
5. **Is it already checked in or cancelled?** Neither shows up in the search

### The guest was asked to pay at check-in

The assigned check-in configuration has a prepaid amount or a deposit. If you don't want to charge, change the assignment as described in step 4.

### Check-in worked but no key is shown

The room the calendar is bound to probably has no smart lock linked. Link one in Base Settings > Rooms.

---

## Related pages

- [Google Calendar Integration](google-calendar-integration.md) — connecting, read calendars and write sync in detail
- [Check-in Setup Guide](checkin-setup-guide.md) — check-in configurations and lock preparation
- [Check-in Configuration](checkin-config-form.md) — payment timing, deposit and forms
- [iCal Sync](ical-config.md) — importing from Airbnb and others
- [Booking Management](booking.md) — the Check-in tab and booking details
- [Access Key Display](key-display.md) — the key screen guests see
