Skip to content

Dynamic Form Field PRO

Trip Builder → Custom Fields tab — drag-and-drop builder per trip

The free Booking Form Builder shapes the site-wide checkout form — fields every trip needs (name, email, country). The Dynamic Form Field module adds per-trip custom fields on top — so a Food Tour can collect Dietary requirements, an Adventure trek can collect Fitness level + emergency contact, and a Yoga retreat can collect T-shirt size, all without polluting the global form.

What you'll need

ThingWhere to get it
Yatra Pro licenseYatra → License
Dynamic Form Field module enabledYatra → Modules → Dynamic Form Field
A baseline Booking Form configuredSee Settings → Booking Form — this module extends the baseline.

Step 1 — Enable the module

  1. Open Yatra → Modules.
  2. Find Dynamic Form Field → toggle on.
  3. A new Custom Fields sub-tab appears inside every trip's Trip Builder.

Step 2 — Add fields to a specific trip

  1. Open the trip in the Trip Builder.
  2. Click the Custom Fields sub-tab (only visible with the module on).
  3. Click + Add Field to create a custom field.

Custom Field editor — type, label, placeholder, required, conditional visibility, per-traveler toggle

Field configuration

FieldNotes
LabelWhat the customer sees.
Typetext / email / tel / date / select / country / textarea / number / checkbox / file.
PlaceholderHint text inside the input (most types).
Help textSubtle hint under the field.
RequiredBlock submission if empty.
Widthfull / half / third — controls layout on the booking form.
Options (select)Dropdown options as a repeater of { value, label }.
Conditional visibilityOnly show this field when some other field equals X. Useful for "if Dietary = vegetarian, show Notes for chef". (See below.)
Per-travelerToggle. When on, the field is asked once per traveler instead of once per booking. Useful for passport numbers, allergies, T-shirt size.
Sort orderPosition on the form.

Conditional visibility

Each custom field can have a rule like:

Show this field when [Field X] [equals / not equals / contains] [Value Y]

E.g. Show Vegetarian notes when Dietary requirements equals Vegetarian.

Multiple rules can chain with AND / OR logic.

Step 3 — Verify on a test booking

  1. Open the trip in a private browser window → Book Now.
  2. The customer-side form now shows your custom fields between the standard contact info and the payment step.
  3. Per-traveler fields show inside each traveler's accordion.
  4. Conditional fields appear / disappear as the customer fills upstream answers.
  5. Complete the booking → open the booking detail in admin → the custom field answers show in:
    • Travelers Information section (per-traveler fields)
    • Special Requests / custom-fields block (per-booking fields)

Customer-side checkout — custom fields per traveler

Where the data shows up

SurfaceWhat you see
Booking detail → Travelers InformationPer-traveler custom field values, labelled.
Booking detail → Customer Information / Special RequestsPer-booking custom field values.
Travelers rosterShows custom fields as extra columns. Useful for dietary / accessibility prep pre-departure.
EmailsUse the merge tags and in any template — they expand to a nicely formatted block.
REST APIPer-traveler and per-booking custom fields are returned in the booking payload.

Common patterns

Trip typeUseful per-booking fieldsUseful per-traveler fields
Food tourDietary requirements (select)
Adventure / trekFitness level (select)Boot size, allergies, medical conditions (text)
Yoga retreatRoommate preference (select)T-shirt size, mat preference
Multi-day expeditionTravel insurance policy (file upload)Passport #, expiry date, nationality
Wine tourBeverage preference (radio)

Troubleshooting

Custom Fields sub-tab missing in the Trip Builder — module isn't on. Toggle Yatra → Modules → Dynamic Form Field.

Field appears at checkout but not on the booking detail — the field was added after this booking was made. Existing bookings only carry fields that existed at booking time. New bookings will include the field.

Conditional field never shows — verify the upstream field's value matches exactly. Yatra does case-sensitive string comparison.

Per-traveler field doesn't appear inside each traveler's section — the Per-traveler toggle is off. Edit the field and turn it on.

File-upload fields fail with 413 / size error — your hosting limits upload_max_filesize. Raise the WordPress limit via your host's PHP settings (typically php.ini).

Where to read more