Skip to main content

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

TopicDetails
Where to configureSettings → AccountsBooking page
Public URL/book/{your-slug} (e.g. /book/jane-doe)
Guest flowEvent type → slot → name/email → confirm
Manage/book/manage/{token} — reschedule or cancel
CalendarEvent in Sparks Postgres calendar (bookingSource: sparks_booking)
ProtectionRate limits; optional ALTCHA (self-hosted, privacy-friendly)

📸 Settings → Booking page: Booking page in account settings

📸 Public booking page: Guest picks an event type


Prerequisites

  • Sparks account with an active Sparks calendar (database calendar)
  • Feature not disabled (SPARKS_BOOKING at 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

  1. Open Settings (Ctrl+. / Cmd+.) → Accounts tab.
  2. Scroll to Booking page (above Calendly, if present).
  3. Enter:
    • URL slug (e.g. jane-doe, lowercase, hyphens allowed)
    • Display name and optional bio
    • Time zone (IANA, e.g. Europe/Berlin)
  4. Save profile.
  5. Create at least one event type (title, slug, duration; optional buffers before/after).
  6. Turn on Publish booking page and save again.
  7. 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.

If you also use Calendly, choose under Preferred public booking link:

OptionMeaning
Sparks booking pageOnly the Sparks /book/ link
CalendlyOnly your Calendly scheduling link (if connected)
Both (Sparks first)Both links, Sparks first
NoneNo share links

For guests: book a meeting

  1. Open /book/{slug}.
  2. Choose an event type.
  3. Pick a free slot (shown in your local time zone).
  4. Enter name and email.
  5. Complete the ALTCHA check if required (operator policy or after suspicious failed attempts).
  6. Confirm booking.

You see the join link (if online meeting) and Manage booking.

📸 Slot and form: Slot selection and booking 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: Reschedule or cancel a booking


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

SymptomLikely cause
“Booking page” section missingFeature disabled or calendar/API unavailable
/book/… shows “unavailable”Profile not published or wrong slug
No slotsNo working hours, fully busy, closed day, or minimum notice too high
No meeting linkEvent type not Sparks Online mode, or meeting backend unreachable
CAPTCHA appears suddenlyMany failed bookings from your IP; complete the check
Reschedule failsMax reschedules reached or too close to start