Sparks booking pages (public scheduling)
Status: August 2026
Audience: Users who want a public booking link without Calendly.
Language / Sprache: Deutsch
What is this?
Sparks booking pages publish a page at /book/… where guests can pick a free slot and book a meeting with you without a Sparks account.
The booking lands in the Sparks calendar. Optionally a Sparks online meeting (join link) is created. Guests get email confirmation (with ICS) and a manage link to reschedule or cancel.
This is the native booking product in Sparks — alongside the Calendly integration, not a replacement for Calendly CRM funnels.
Overview
| Topic | Details |
|---|---|
| Where to configure | Settings → Accounts → Booking page |
| Public URL | /book/{your-slug} (e.g. /book/jane-doe) |
| Guest flow | Event type → slot → name/email → confirm |
| Manage | /book/manage/{token} — reschedule or cancel |
| Calendar | Event in Sparks Postgres calendar (bookingSource: sparks_booking) |
| Protection | Rate limits; optional ALTCHA (self-hosted, privacy-friendly) |
📸 Settings → Booking page:
📸 Public booking page:
Prerequisites
- Sparks account with an active Sparks calendar (database calendar)
- Feature not disabled (
SPARKS_BOOKINGat the operator; default: on) - For online meetings: appointment/meeting backend reachable (same as other Sparks online events)
- Optional CAPTCHA: operator sets
SPARKS_BOOKING_ALTCHA_HMAC_SECRET(self-hosted ALTCHA, not Google/Cloudflare)
Set up your booking page
- Open Settings (Ctrl+. / Cmd+.) → Accounts tab.
- Scroll to Booking page (above Calendly, if present).
- Enter:
- URL slug (e.g.
jane-doe, lowercase, hyphens allowed) - Display name and optional bio
- Time zone (IANA, e.g.
Europe/Berlin)
- URL slug (e.g.
- Save profile.
- Create at least one event type (title, slug, duration; optional buffers before/after).
- Turn on Publish booking page and save again.
- Copy the public link shown.
On first publish, typical working hours Mon–Fri 09:00–17:00 are applied if no rules exist yet.
Closed days
Under Closed days, mark individual dates (e.g. holidays). No public slots appear on those days.
Preferred booking link
If you also use Calendly, choose under Preferred public booking link:
| Option | Meaning |
|---|---|
| Sparks booking page | Only the Sparks /book/ link |
| Calendly | Only your Calendly scheduling link (if connected) |
| Both (Sparks first) | Both links, Sparks first |
| None | No share links |
For guests: book a meeting
- Open
/book/{slug}. - Choose an event type.
- Pick a free slot (shown in your local time zone).
- Enter name and email.
- Complete the ALTCHA check if required (operator policy or after suspicious failed attempts).
- Confirm booking.
You see the join link (if online meeting) and Manage booking.
📸 Slot and form:
Manage a booking (guest)
Via /book/manage/{token} (from confirmation email or success page):
- Reschedule — pick a new slot (limited; default max 3 times)
- Cancel — removes the event
Deadlines follow the event type minimum notice (e.g. 60 minutes before start).
📸 Manage page:
Privacy & CAPTCHA
- Public booking data (name, email, slot) is used to schedule the meeting.
- ALTCHA is the intended check: self-hosted, proof-of-work, no third-party tracking (no reCAPTCHA/hCaptcha/Turnstile handoff).
- Without a configured ALTCHA secret, public API rate limits still apply.
Tips & troubleshooting
| Symptom | Likely cause |
|---|---|
| “Booking page” section missing | Feature disabled or calendar/API unavailable |
/book/… shows “unavailable” | Profile not published or wrong slug |
| No slots | No working hours, fully busy, closed day, or minimum notice too high |
| No meeting link | Event type not Sparks Online mode, or meeting backend unreachable |
| CAPTCHA appears suddenly | Many failed bookings from your IP; complete the check |
| Reschedule fails | Max reschedules reached or too close to start |
Related topics
- Calendly integration — external booking front, shared calendar core
- Settings – provider accounts
- Area: Calendar
- Data backends



