Docs
← cabintale.com EN · CZ Email support
Get setup · Tutorial

Time-slot calendar (Service widget)

Sell tours, tables, sauna sessions — anything that's a fixed time, not a date range.

By the end of this guide, you'll have a service set up with a weekly schedule of bookable time slots and a service widget guests can use to pick a date, pick a slot, and book.

Before you start

What you'll need

  • A Cabintale account
  • A clear idea of what you sell, the times it's available, and how many people fit per slot
  • ~15 minutes
What you'll achieve
  • One service with basic info (name, currency, time zone)
  • A weekly schedule of time slots
  • A live service widget with the right slot picker

Place vs. Service: which one are you setting up?

Quick decision tree:

What you offerChoose
A cabin / hotel room — guests book a check-in / check-out date rangePlace
A 2-hour cabin tour at fixed times — guests book a specific slot on a specific dayService
A restaurant table at 19:00 — fixed start time, fixed durationService
A sauna session, 45 minutes, multiple windows per day, capacity of 6Service
Bike rental for a full day (still nightly-ish)Place is usually fine; Service if you want strict pickup times

If your offering has a start time that matters, it's a service.

Step 1: Create the service

Sidebar → ServicesAdd new service.

Fill in the basics — these mirror Property basics (Property basics) but for a service:

  • Title — what guests see ("Sauna session", "Sunset boat tour").
  • Description — your notes for now (not yet shown to guests).
  • Country / currency / time zone — same chain as places. Time zone matters more than usual here because slot start times are interpreted in it.
  • Capacity — the maximum number of people who fit per slot, by default. You can override capacity per individual slot later.

Pick Booking behavior:

  • Availability only — guests see when you're available, don't book.
  • Accept bookings — they book; you decide instant vs. request.
  • Accept payments — they pay to confirm; mode is forced to instant.

Click Create service.

Step 2: Add a time-slot season

Time slots live inside seasons — same idea as seasonal pricing, but the season groups a weekly schedule instead of weekly nightly rates.

On the service detail page, scroll to Availability. If there are no seasons yet, click Add season ("Přidat sezónu").

A season has:

  • Name"General", "Summer", "High season". Whatever helps you.
  • Start date (optional) — leave blank to apply immediately.
  • End date — pick a fixed date, or use a rolling rule (end of next month, 30/60/90 days, custom days). Same dropdown as the availability window for places.
  • Weight — when seasons overlap, higher weight wins. Default starts at 0 (general); add 1, 2, 3 for overrides.

Step 3: Set up the weekly schedule

Inside the season, you'll see a week calendar — Monday through Sunday, with a vertical time axis.

Click an empty time cell to add a slot. Fill in:

  • Time range — start and end (e.g. 10:00 → 12:00).
  • Title (optional) — e.g. "Morning tour". Helps guests when several slots run on the same day.
  • Price — what this slot costs.
  • Capacity — how many people can book it. Defaults to the service capacity if you don't override.

Click save. The slot now repeats on that weekday for every date in the season.

The grid has a "Show 06–20" toggle (compact, 6 AM to 8 PM) and "Show full day" (00:00 to 24:00). Pick whichever helps you see your slots without scrolling.

Week calendar with time slots on Tue, Wed, and Thu
Week calendar inside a season — each slot repeats on its weekday for every date the season covers. The 09:00–10:00 slot on Tuesday shows a 3,000 CZK price override.

Step 4: Customize the service widget

Sidebar → service → Widgets → click the auto-created widget. Service widgets look slightly different from place widgets:

  • Sizevertical, medium (680px), or full width.
  • The other settings (mode, background, primary color, language, custom form fields) work exactly like place widgets — see Widget look & feel and Custom booking form.

Copy the embed code (script or iframe) — same flow as Embeddable booking widget. Service iframe defaults to 550px tall.

What guests see

  1. Calendar — a month view with available days highlighted. Click a date.
  2. Slot list — the bookable slots for that date appear, each as a button showing the time and price (e.g. "10:00 — CZK 500"). Slots that are full or past the booking deadline appear disabled.
  3. Booking dialog — name, email, phone, custom fields (whatever you've configured).
  4. Confirmation — depends on instant vs. request mode (see Instant vs. Request booking).

Capacity matters here. If a slot has capacity 5 and 3 people have booked, it stays available — and the next two guests can book it before it locks.

Booking deadline for slots

The booking deadline on a service is in hours before the slot starts, not the date. So a 14:00 slot with a 2-hour deadline stops accepting bookings at 12:00 the same day.

The cutoff is calculated in the service's time zone — set this correctly in property-basics.md-style basics.

Edge cases

Editing a slot that already has bookings. Existing bookings keep their original time — they're stored as actual times, not pointers to the slot definition. Future guests see only the new slot definition.

Race conditions on the last spot. If two guests click "Book" for the last seat at the same time, Cabintale wraps the availability check + booking creation in a database transaction. One succeeds; the other gets "No available slots" and can pick another time.

Past slots. Past dates don't show in the public widget. Past bookings remain visible in the admin so you can review history.

Manifests. Services have a printable manifest (PDF or shareable link) showing today's or this week's bookings — covered in the manifests guide (coming soon).

Troubleshooting

SymptomCauseFix
Slots aren't appearing in the widgetThe service is inactive, or the season's date range doesn't include today, or there are no slots defined for the relevant weekdayCheck service status, season start/end, and that you've added slots for the weekdays you want
A slot shows as unavailable when there should be capacity leftBooking deadline has passed for that slot's start time, or capacity is reachedVerify the slot's deadline and check Bookings to count existing bookings
Calendar shows wrong "today"Browser time zone differs from service time zone (esp. around midnight)The widget uses the service's time zone — confirm it's correct in service basics
Two guests booked the same slot somehowShouldn't happen — Cabintale guards against this. If it did, it's likely a state-mismatch from a stale browser tabResolve manually in admin (cancel one); contact support if it recurs
The service widget looks too narrowThe size is set to verticalEdit the widget, change size to medium or full width, save

Related guides

Still stuck?

We reply to every email within one business day.

Email support →