Dynamic Form Field PRO

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
| Thing | Where to get it |
|---|---|
| Yatra Pro license | Yatra → License |
| Dynamic Form Field module enabled | Yatra → Modules → Dynamic Form Field |
| A baseline Booking Form configured | See Settings → Booking Form — this module extends the baseline. |
Step 1 — Enable the module
- Open Yatra → Modules.
- Find Dynamic Form Field → toggle on.
- A new Custom Fields sub-tab appears inside every trip's Trip Builder.
Step 2 — Add fields to a specific trip
- Open the trip in the Trip Builder.
- Click the Custom Fields sub-tab (only visible with the module on).
- Click + Add Field to create a custom field.

Field configuration
| Field | Notes |
|---|---|
| Label | What the customer sees. |
| Type | text / email / tel / date / select / country / textarea / number / checkbox / file. |
| Placeholder | Hint text inside the input (most types). |
| Help text | Subtle hint under the field. |
| Required | Block submission if empty. |
| Width | full / half / third — controls layout on the booking form. |
| Options (select) | Dropdown options as a repeater of { value, label }. |
| Conditional visibility | Only show this field when some other field equals X. Useful for "if Dietary = vegetarian, show Notes for chef". (See below.) |
| Per-traveler | Toggle. When on, the field is asked once per traveler instead of once per booking. Useful for passport numbers, allergies, T-shirt size. |
| Sort order | Position 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
- Open the trip in a private browser window → Book Now.
- The customer-side form now shows your custom fields between the standard contact info and the payment step.
- Per-traveler fields show inside each traveler's accordion.
- Conditional fields appear / disappear as the customer fills upstream answers.
- 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)

Where the data shows up
| Surface | What you see |
|---|---|
| Booking detail → Travelers Information | Per-traveler custom field values, labelled. |
| Booking detail → Customer Information / Special Requests | Per-booking custom field values. |
| Travelers roster | Shows custom fields as extra columns. Useful for dietary / accessibility prep pre-departure. |
| Emails | Use the merge tags and in any template — they expand to a nicely formatted block. |
| REST API | Per-traveler and per-booking custom fields are returned in the booking payload. |
Common patterns
| Trip type | Useful per-booking fields | Useful per-traveler fields |
|---|---|---|
| Food tour | Dietary requirements (select) | — |
| Adventure / trek | Fitness level (select) | Boot size, allergies, medical conditions (text) |
| Yoga retreat | Roommate preference (select) | T-shirt size, mat preference |
| Multi-day expedition | Travel insurance policy (file upload) | Passport #, expiry date, nationality |
| Wine tour | Beverage 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).
Useful links
- Settings → Booking Form — the site-wide baseline this module extends.
- Bookings → Travelers Information — where per-traveler answers show up.
- Email merge tags —
+. - Hooks & filters —
yatra_dynamic_field_value,yatra_dynamic_field_validate.
Where to read more
- All modules — module catalog.