Skip to content

Custom Questions

Ask the booker for extra information at confirm time — phone number, project size, what they want to discuss. Answers land on the booking and (optionally) on a backing database row.

Quick Start

  1. Open an event type and click the Custom Questions tab.
  2. Type / in the canvas to open the field menu.
  3. Pick a field type (Short text, Long text, Email, Phone, Number, etc.).
  4. Click the new field's label to rename it.
  5. Toggle Required on the field's settings popover if the booker must answer.
  6. Click Publish changes in the toolbar — new questions only show on the public page after a republish.

Built-in Questions

Every booking page already collects these — you don't add them yourself:

QuestionRequiredNotes
NameYesFree text.
EmailYesValidated as an email; used for the confirmation message.
PhoneNoOptional unless an SMS workflow is enabled, then prompted.

Custom questions appear under these three on the public page.


Field Types

TypeWhat it capturesExample use
Short textOne-line text.Company name, job title
Long textMulti-line text area."What would you like to discuss?"
EmailValidated email.Secondary contact
PhoneFree-text phone (no validation — country format varies).Call-back number
NumberNumeric input.Team size, budget
Single-selectDrop-down picker, one answer.Industry, urgency
Multi-selectCheckboxes, many answers.Topics of interest
DateDate picker.Project deadline
URLValidated URL.Their website

Reuses the Forms designer

The Custom Questions canvas is the same engine that powers Forms. If you've used the slash-menu editor there, this works identically — including conditional logic.


Field Settings

Click any field to open its settings popover:

SettingWhat it does
LabelThe question text shown to the booker.
Help textSmaller grey text under the label.
PlaceholderHint text inside the empty input.
RequiredBooker can't submit without answering.
Default valuePre-fills the input.
Options(Single/multi-select only) The choices.

Conditional Logic

Show, hide, require, or skip-to-page based on previous answers.

  1. Click the Logic button in the toolbar above the canvas.
  2. Add a rule: When [field] [is/is not/contains] [value], [show/hide/require] [field].
  3. Save.

Logic runs client-side as the booker types and is re-validated on the server at submit. See the Forms Conditional Logic guide for the full rules engine — it's the same one.


Where Answers Go

Every custom-question answer is stored on the booking record. View answers from:

LocationWhat you see
Calendar workspace → click a bookingSide sheet showing every question and answer.
Email notificationsThe host email includes every answer below the meeting details.
/booking/{id}/bookings (per-event-type list, planned)Tabular view; columns per question.
WorkflowsWebhook payload includes the answers; email/SMS templates can reference {{answers.fieldId}}.

Writing Answers to a Database (Optional)

If you want answers to also create / update a database row (so you can use views, filters, link to invoices, etc.):

  1. Pick or create a backing database for this event type.
  2. On the Custom Questions tab → Database backing → choose the database.
  3. Map each question to a database property (drag-and-drop or the auto-suggest).
  4. Save → publish.

From now on every confirmed booking creates a row in that database with the answers in the matching properties.

Why bind to a database

Bookings are real meetings. The database row is the project record spawned from that meeting. Bind once, and your sales pipeline / onboarding flow has a row already populated before the meeting even happens.


Editing Existing Questions

You can rename labels, change help text, toggle required, and add new questions to a published event type at any time. The change auto-saves to draft; click Publish changes to push it live.

Renaming vs. recreating

Renaming a field's label is safe — the underlying field id doesn't change, so historical answers still map to the new label. Deleting and re-adding a field with the same label gives it a new id; old answers stay intact but new submissions go to a separate column.