# The booking page from the guest's view

{/* AUTO-SYNCED SOURCE: this page lives in apps/app/src/modules/booking/docs/ and is mirrored into the docs app by `bun sync:module-docs`. Edit it in the module, not in apps/docs. */}

<Lead>
Your guests never see the dashboard, only the public **booking page** on your domain, in your branding and without any login. This page shows you what guests experience, so you know what you are sending out.
</Lead>

Guests are addressed formally (gesiezt) on the German booking page. Your public overview with all listed event types lives at `/book`; each event type has its page at `/book/link-name`. Unlisted event types do not appear on the overview, but their direct link works.

## The booking flow

1. **Header:** profile picture (or monogram), host name, event type, duration and location. On the `/book` overview your welcome text sits above the event types (default, in German: "Willkommen! Wählen Sie einen Termin, der Ihnen passt.").
2. **Calendar and times:** the guest picks a day and sees the free slots, automatically in their own time zone. A time zone picker allows switching, for trip planning for example.
3. **Form "Geben Sie Details an" (provide your details):** name and email are required; phone is not asked, optional or required depending on the event type. Open house adds a "number of people" field, plus your custom questions. A consent note sits below the form.
4. **"Termin buchen" (book appointment):** one click, done.

## Confirmation

After booking, the guest sees the "Ihr Termin ist gebucht" (your appointment is booked) page with an appointment card, your optional note (from "note after booking") and the link "Termin verwalten (absagen oder umbuchen)" (manage appointment: cancel or reschedule). In parallel the confirmation email goes out: all appointment details, a calendar invite (.ics) for any calendar, and the personal manage link. If you configured a redirect, the guest lands on your target page afterwards.

## Rescheduling and cancelling by the guest

Via the manage link from the confirmation, guests manage their appointment themselves:

- **Reschedule:** the guest picks a new time; the old appointment is cancelled, the new one confirmed, both stay linked. The guest receives a new confirmation with a new manage link, you get a notification.
- **Cancel:** with an optional reason. The guest sees a confirmation that the appointment was cancelled and an email is on its way.

Past appointments can no longer be changed via the link.

## Error messages for guests

<DefinitionList>
  <DefItem term='"Diese Zeit wurde gerade von jemand anderem gebucht. Bitte wählen Sie eine andere Zeit."'>This time was just booked by someone else. Two people wanted the same slot; exactly one gets it. Double bookings are technically impossible.</DefItem>
  <DefItem term='"Dieser Buchungslink wurde bereits verwendet oder ist abgelaufen."'>This booking link has already been used or expired: a single-use link was already used or reached its expiry date.</DefItem>
  <DefItem term='"Zu viele Anfragen. Bitte versuchen Sie es in ein paar Minuten erneut."'>Too many requests: the protection against automated requests kicked in. It resolves after a short wait.</DefItem>
  <DefItem term='"Diese Buchungsseite ist nicht mehr verfügbar."'>This booking page is no longer available: the event type was paused or deleted.</DefItem>
</DefinitionList>

## Language, privacy and protection

- **Language:** per event type you choose workspace default, German or English; this applies to the booking page, the confirmation page and the guest emails of that event type.
- **Privacy:** the booking page ships with a cookie and privacy center.
- **Protection:** all public pages carry spam protection (an invisible honeypot trap) and request limits against automated access. For you this means: no bot bookings, no calendars emptied by clicks.

## Embedding: Add to website

In each event type's menu, **Zur Website hinzufügen** (add to website) opens the embed dialog with three options:

<DefinitionList>
  <DefItem term="Inline embed">The booking appears right inside your page, on a contact or property page for example.</DefItem>
  <DefItem term="Popup widget">A floating button at the edge of the page that opens the booking in a window.</DefItem>
  <DefItem term="Popup text">A regular text link in your content that opens the booking in a window.</DefItem>
</DefinitionList>

Adjust texts, colors and position before copying; the generated code works on any website without extra files. A linked demo page shows all three options live. If you use the platform's Website tool, the booking is additionally available as a native block in the website editor.

## Welcome text and profile picture

Two settings shape the first impression, both under **Settings > Tools > Appointment Booking > Buchungsseite**:

- **Welcome text:** sits on the `/book` overview above the event types. Default (German): "Willkommen! Wählen Sie einen Termin, der Ihnen passt."
- **Profilbild anzeigen** (show profile picture, default: on): shows the host's profile picture and name on the booking pages. Without a picture, a monogram in your brand color appears.

Details on all settings: [Settings](/tools/booking/einstellungen).

## Further reading

Back to the overview: [Appointment Booking](/tools/booking). Next page: [Workflows](/tools/booking/workflows), so the right messages go out around every booking.
