Docs
← cabintale.com EN · CZ Email support
Customize your site · Tutorial

Custom booking form

Decide what guests have to fill in before they can book.

By the end of this guide, you'll have a booking form that asks exactly what you need — house rules, pet count, terms acceptance, arrival time — and skips what you don't.

Before you start

What you'll need

  • A widget that's been saved at least once (the form editor only appears in edit mode)
  • ~10 minutes
  • Optional: a list of the questions you actually need answered
What you'll achieve
  • Optional fields hidden where they aren't needed
  • Custom questions for anything specific to your property
  • Field order that matches how you want guests to read the form

Step 1: Open the widget

Sidebar → property → Widgets → click the widget → scroll to Booking dialog.

The Booking dialog editor only shows up on widgets that have been saved at least once. If you don't see it, click Save widget at the top.

Step 2: Built-in fields

Every widget starts with four built-in fields:

FieldTypeRequired by defaultCan you hide it?Can you change required?
Customer nameTextYesNo (locked)No (always required)
EmailEmailYesNo (locked)No (always required)
PhonePhoneNoYes (eye icon)Yes (click the badge)
NotesMulti-line textNoYes (eye icon)Yes (click the badge)

Name and email are always required — Cabintale needs a way to identify the guest and a way to email them. Phone and notes are yours to play with.

To toggle a field:

  • Required ↔ Optional — click the small required / optional badge next to the field. It flips.
  • Show / Hide — click the eye icon. Hidden fields don't appear in the booking dialog at all.

Step 3: Reorder fields

Each field has a drag handle (six dots, on the left). Drag to reorder. Locked fields (name, email) always render first; everything else shows in the order you set.

The new order takes effect when you save.

Step 4: Add a custom question

Click Add custom field. A modal opens.

Pick a type:

  • Text input — short, single-line answer (arrival time, license plate, allergies).
  • Checkbox — a yes/no toggle (terms acceptance, "I'll bring a pet", "I need an early check-in").

Then fill in:

  • Label — what the guest sees as the field's title. Required. ("What time do you expect to arrive?", "I accept the house rules.")
  • Placeholder (text fields only) — grey text inside the empty input as a hint. ("e.g. 4 PM")
  • Answer (checkbox fields only) — the text shown next to the checkbox, the bit the guest is checking against. ("I accept the cancellation policy.")
  • Required — toggle on if the booking can't go through without an answer.

Click Add field. The new field appears at the bottom of the list. Drag it where you want it.

Custom labels aren't translated. The widget language only translates built-in fields and dialog text. If your widget supports both English and Czech audiences and you add a custom field labeled "Pets?", that label stays in English even on a Czech widget. Workaround: create separate widgets per language, each with its own translated labels (see Multiple widget variations).

Step 5: Save

Click Save widget at the top. The new form goes live on the next page load.

Where the data ends up

When a guest submits a booking, their answers are saved on the booking record's custom_fields. You'll see them on the booking detail page in the admin alongside the guest's name and dates.

Built-in fields are validated server-side: name and email are always required; email must be a valid format (max 255 characters); phone and notes have length limits. Custom required fields are checked client-side — Cabintale sanitizes the rest, truncating very long answers and dropping anything not in your widget's field config.

Common patterns

House rules / terms acceptance

  • Type: Checkbox
  • Label: "House rules"
  • Answer: "I have read and accept the house rules" (link to your rules page in your booking confirmation email)
  • Required: Yes

Number of pets

  • Type: Text input
  • Label: "How many pets?"
  • Placeholder: "0 if none"
  • Required: No (unless pets-only properties)

Estimated arrival time

  • Type: Text input
  • Label: "What time do you expect to arrive?"
  • Placeholder: "e.g. between 4 and 6 PM"
  • Required: No

Phone hidden, notes prominent

  • Hide phone (eye icon)
  • Drag notes up next to email
  • Save

Editing fields after bookings exist

You can rename, reorder, or delete fields any time. Existing bookings keep the answers they were submitted with, even if you later delete the field — the data stays on the booking record. New bookings only collect the new field set.

If you rename a field's label, old bookings show whatever label was current at the time they came in. Cabintale doesn't rewrite history.

Troubleshooting

SymptomCauseFix
The Booking dialog editor isn't showingWidget hasn't been saved yetClick Save widget at the top — the editor appears after the first save
I want to make Email optionalYou can't — Cabintale needs a way to email the guestWorkaround: tell us why and we'll talk about it
Custom field label shows in English on a Czech widgetCustom labels aren't translated by widget languageCreate a separate widget per language with translated labels — see Multiple widget variations
Required-field error fires on the guest side even though the field looks blankWhitespace or invisible characters from a pasteTell the guest to retype the field
I added a field but old bookings don't have data for itThis is expected — fields aren't retroactiveOnly new bookings collect data for newly-added fields
I deleted a field and now I can't see what guests answeredDeleted fields' answers stay on existing bookings — open the booking detail pageThe data is still there; the field just isn't being collected anymore

Related guides

Still stuck?

We reply to every email within one business day.

Email support →