Create a trip — step by step
This is the practical walkthrough for building a trip from scratch. The Yatra Trip Builder is a four-phase wizard with ten sections in total. Only Trip Basics and Pricing are required to publish — everything else is optional polish you can come back to.
Looking for the field-level reference instead? See Trips & catalog for the exhaustive table of every option.
Running an older plugin version?
If a field or section name looks different in your wp-admin, update to the latest Yatra release — the screenshots and field names on this page reflect the current build.
Step 1 — Open the Trips listing
Open Yatra → Trips (the top-level "Trips" item in the Yatra menu).

What you see:
- Search box — searches by title and slug.
- Status filter — All / Published / Draft / Review / Approved / Archived / Trash. Selecting a pill filters the list to that status.
- Column visibility picker — toggle which columns appear (Trip, Price, Status, Trip Type, Availability, Capacity, Countries, Difficulty, Attributes, Destinations, Activities, Categories, Bookings, Created, Modified). Your choice is saved per-browser to
localStorage. - Bulk actions — once you tick one or more rows, the action dropdown unlocks: Mark as Published / Draft / Review / Approved / Archived, plus Move to Trash. From the Trash status filter you also get Restore and Delete Permanently.
- + Add New Trip (top right) — opens the Create New Trip modal.
Reset filters
The reset button (next to the filters) clears search + status + sort in one click.
Step 2 — Click "+ Add New Trip" → modal popup
Clicking + Add New Trip opens a small modal — not a full-page form. The modal asks for the two fields needed to create a draft trip and redirect you into the builder.

Fields:
| Field | Type | Required | Notes |
|---|---|---|---|
| Trip Title | text | ✅ Yes | What appears on the public trip page and in the catalogue. |
| Trip URL | text | ✅ Yes | Auto-generated from the title (lowercase, hyphens). Click Customize URL to override. Validated: lowercase letters, digits, hyphens only. |
Below the fields you'll see a live preview of the full public URL (e.g. https://yoursite.com/trip/bali-beach-retreat).
Buttons:
- Cancel — closes the modal, nothing saved.
- Create & Continue — validates the slug, creates a draft trip, and redirects you to the Trip Builder at Phase 1 → Trip Basics. You'll see a brief loading spinner on the button.
Slug rules
Slugs may only contain lowercase letters, digits, and hyphens. The modal blocks creation otherwise.
Step 3 — Land on the Trip Builder
You arrive on the Trip Builder at:
/wp-admin/admin.php?page=yatra&subpage=trips&action=create (new)
/wp-admin/admin.php?page=yatra&subpage=trips&action=edit&id=N (existing)The Trip Builder has three parts:
- Left sidebar — the four phases, each containing one or more sections. Sections that are required show a badge. Sections you've visited are marked complete; sections with validation errors show a warning dot.
- Center panel — the currently active section's fields.
- Top action bar — Preview, Save Draft / Update Draft, and Publish Trip / Update Trip (the publish button has a dropdown for status variants).
- Bottom nav bar — Previous / Next, for stepping through sections in order.
The four phases are:
| Phase | Badge | Sections |
|---|---|---|
| 1 — Essentials | Start Here / Required | Trip Basics ✱, Location & Route, Pricing ✱, Availability & Booking |
| 2 — Details | Recommended | Trip Details (Itinerary + Included/Excluded sub-tabs) |
| 3 — Optimization | Recommended | Media & Gallery, Downloads (free), Categories & Attributes, SEO & Marketing |
| 4 — Advanced | Power Users | Advanced Settings |
✱ = required to publish.
Take a Tour, Fill Dummy Data
The header includes two helpers:
- Take a Tour — inline onboarding tour of the builder UI.
- Fill Dummy Data (1/3) — populates the current section with realistic sample content. There are three dummy datasets you can cycle through to see how a fully-filled trip looks without typing it all by hand.
Phase 1 — Essentials
You only need this phase to publish a working trip. Everything later is optional polish.
1.1 Trip Basics ✱

| Field | Type | Required | Notes |
|---|---|---|---|
| Trip Title | text | ✅ Yes | Char counter shows 0–60 recommended (max 100). Auto-feeds slug while not manually edited. |
| Trip URL | text (monospace) | ✅ Yes | Auto-generated. Click Edit to override. Includes a Copy button and live URL preview. |
| Short Description | WYSIWYG | Recommended | 100–150-char range works best. Shown in catalogues and trip cards. |
| Trip Description | WYSIWYG (min 260 px) | Recommended | The main body shown on the public trip page. Supports bold / italic / lists / link / headings. |
| Featured Image | WordPress media picker | Recommended | 1200 × 800 px recommended. Preview + Remove button below the picker. |
| Trip Highlights | repeater (text rows) | Optional | Add bullet-point highlights ("Sunrise over Mt. Batur", "Private boat to Nusa Lembongan", etc.). |
Save Draft any time — the trip becomes browsable in the admin even with only the title + slug filled in.
1.2 Location & Route

| Field | Type | Required | Notes |
|---|---|---|---|
| Destinations | multi-select | Optional | Attaches the trip to one or more Destination taxonomy terms (powers the destination archive pages). If empty, you'll see a link to create destinations first. |
| Starting Point | location picker (search + map + lat/lng) | Optional | Name field auto-fills from map search; 300 px embedded OpenStreetMap; "Use Current Location" button (geolocation); manual lat / lng inputs underneath. |
| Ending Point | location picker | Optional | Same structure as Starting Point. Use for routes that don't end where they began. |
| Seasonal Availability Notes | text | Optional | Short freeform note ("Available year-round except monsoon season"). Shown on the public page. |
1.3 Pricing ✱

The pricing section starts with a Pricing Type toggle — pick one of two modes:
| Mode | When to use |
|---|---|
| Regular Pricing | One price; everyone pays the same. Best for short experiences with no age tiers. |
| Traveler-Based Pricing | Different price per traveler category (Adult / Child / Infant / Senior, configurable under Yatra → Traveler Categories). |
Regular Pricing fields:
| Field | Type | Required | Notes |
|---|---|---|---|
| Original Price | currency (number, 0.01 step) | ✅ Yes | The undiscounted public price. |
| Discounted Price | currency | Optional | If set, the public price shows a strike-through over the original. |
Traveler-Based Pricing fields:
- A repeater of active traveler categories. Click Add Pricing → pick a category from the dropdown → fill in Original Price and Discounted Price (optional). Repeat for each category.
- If no categories exist yet, you'll see "No active traveler categories found" with a link to create them first.
Pricing is required to publish
At least one valid price (Regular Original, or at least one row in the Traveler-Based matrix) must be set before Publish Trip will succeed.
1.4 Availability & Booking

This section merges what the source code calls duration and booking. Field groups:
Availability Period
| Field | Type | Notes |
|---|---|---|
| Available From / Available To | date | The window during which travelers can book this trip. |
| Booking Window (days in advance) | number | How far in advance bookings are accepted (e.g. 30 = up to 30 days out). |
| Seasonal Availability Notes | text | Short customer-facing note about seasonality. |
Capacity & Travelers
| Field | Type | Notes |
|---|---|---|
| Minimum Travelers | number | Smallest party size accepted. |
| Maximum Travelers | number | Hard cap. Used to compute remaining seats per departure. |
Departure Time (varies by trip type)
- Day-tour trips: Enable Multiple Time Slots checkbox.
- If on: a repeater of
{ time, label }rows — e.g.,09:00 Morning Tour,14:00 Afternoon Tour. - If off: a single Default Departure Time.
- If on: a repeater of
- Multi-day trips: a single Default Departure Time.
Booking Policies
| Field | Type | Notes |
|---|---|---|
| Minimum Age | number | Hard floor for booking. 0 = no restriction. |
Accommodation
A sub-block (Home icon) inside Availability & Booking — describes what travelers sleep in.
| Field | Type | Notes |
|---|---|---|
| Accommodation Type | text | Placeholder: Hotel, Resort, Teahouse, Camping. Free text — appears on the public trip page. |
| Meal Plan | select | One of: Breakfast Only, Half Board (Breakfast + Dinner), Full Board (All Meals), All Inclusive, No Meals Included. |
| Accommodation Details | textarea | Free text — describe the lodging in more depth. |
Transportation
A sub-block (Car icon) inside Availability & Booking — describes pickup/dropoff and what's included.
| Field | Type | Notes |
|---|---|---|
| Transportation Included | checkbox | Toggle. The three fields below are hidden until this is on. |
| Pickup Location | text | Conditional. Placeholder: Airport, Hotel, City Center. |
| Dropoff Location | text | Conditional. |
| Transportation Details | textarea | Conditional. Free text — describe vehicles, route, schedule. |
Phase 2 — Details
2.1 Trip Details

A merged section with two sub-tabs you switch between using a tab bar inside the section:
Sub-tab A: Itinerary
A day-by-day repeater. Each day has:
- Day number + Day title ("Day 1 — Arrival in Bali")
- Entries — items that happen on this day. Each entry can have a title, description, location, start / end time, duration, cost, notes, included / excluded items, and images. Items can also reference a global Itinerary Item by ID (managed under Yatra → Items / Item Types).
- Add / remove days, reorder by entry.
TIP
You can skip the itinerary and still publish — useful for short single-day experiences.
Sub-tab B: Included / Excluded
Two simple repeaters side-by-side:
- What's Included — list of
{ title, description }rows ("Airport transfers", "All meals", "English-speaking guide"). - What's Excluded — same structure ("Travel insurance", "Personal expenses", "Tips").

Phase 3 — Optimization
3.1 Media & Gallery

| Field | Type | Notes |
|---|---|---|
| Photo Gallery | grid repeater (drag to reorder) | Multi-image picker via WordPress media library. Order badges, reorder buttons on hover, remove (X) per image. |
| Video URL | text (URL) | YouTube or Vimeo link. Renders embedded on the public page. |
| 360° Virtual Tour URL | text (URL) | Any embeddable virtual-tour URL (Matterport, kuula.co, etc.). |
| What Makes This Trip Special | textarea | Freeform paragraph highlighting unique selling points. Shown as its own block on the public page. |
| Trip Story / Narrative | textarea | Longer-form story / context. |
| Testimonials | selector | Pick from existing reviews tied to bookings. Renders a testimonial card row on the trip page. |
3.2 Downloads

Downloads is now free
This section was previously Pro-only. It's enabled for everyone now — the Trip Builder shows it unconditionally.
A repeater of downloadable items. Each item has:
| Field | Type | Notes |
|---|---|---|
| Title | text | E.g. "Packing list", "Itinerary PDF", "Waiver form". |
| Description | textarea | Short description shown to the customer. |
| Visibility | dropdown | Public (anyone can download) / Logged in users only / Booked customers only. |
| File | WordPress media picker | The actual file (PDF, doc, image, zip…) with thumbnail + Select File button. |
Rows are reorderable via move-up / move-down buttons.
3.3 Categories & Attributes

Categorization fields:
| Field | Type | Notes |
|---|---|---|
| Trip Categories | multi-select (hierarchical, -- prefix) | Tags the trip with one or more Trip Category terms (powers category archive pages). |
| Difficulty Level | dropdown | One of the difficulty levels you've configured (e.g. Easy / Moderate / Hard / Expert). |
| Activity Types | multi-select | Hiking, Wildlife, Cultural, etc. — drives the activities archive. |
| Featured Priority | dropdown | None (default) / Featured / New / Limited — shows a badge on the public trip card. |
Custom Attributes — a delegated component for the attributes you've defined under Yatra → Attributes. Each defined attribute shows as its own input below this section.
3.4 SEO & Marketing

Search-engine optimization:
| Field | Type | Notes |
|---|---|---|
| Meta Title | text | Max 60 chars. Falls back to the trip title when empty. |
| Meta Description | textarea (max 160 chars) | Shown in search results below the title. |
| Meta Keywords | text | Comma-separated. Mostly ignored by Google but other engines / plugins may use them. |
| Google Preview | read-only | Live preview card showing how the trip will appear in a Google search result. |
Frequently Asked Questions: a repeater with { Question, Answer } rows. Click Add FAQ to append; Remove (×) per row to delete. Renders as an accordion on the public trip page (and as FAQPage JSON-LD for SEO).
Phase 4 — Advanced
4.1 Advanced Settings

Version control:
- Version — readonly number that auto-increments on every save.
Scheduled publishing:
| Field | Type | Notes |
|---|---|---|
| Schedule Publish Date | date | When set, the trip is auto-published on this date. |
| Schedule Unpublish Date | date | When set, the trip auto-moves to draft / archived on this date. |
Seasonal auto-management:
- Enable seasonal auto-management checkbox. When on:
- Auto-Enable Date — date the trip becomes bookable each year.
- Auto-Disable Date — date it stops being bookable.
Frontend Tabs Management — drag-to-reorder repeater for the tabs shown on the public trip page (Overview, Itinerary, Included, Location, Important Info, Downloads, FAQ, Story, Special, Testimonials). Each row has:
| Control | Notes |
|---|---|
| Grip handle | Drag the row up or down to change tab order on the public page. |
| Label | The visible tab title. Disabled until the tab is enabled. |
| Content type | Read-only badge (overview, itinerary, custom, etc.). |
| Enable toggle | Per-tab on/off — disabled tabs are hidden on the public trip page. |
| Icon picker | Pick a Lucide icon or upload an image for the tab. |
| Custom content | textarea (only for content_type=custom tabs) — your own HTML/markdown block. |
| Delete (×) | Only available on custom tabs you've added. |
Step 4 — Save Draft, Preview, or Publish
The top-right action bar gives you three controls:

- Preview — opens the public trip page in a new tab with current unsaved state.
- Save Draft / Update Draft — saves without changing status. Always-on safety net.
- Publish Trip / Update Trip — the primary blue button with a chevron-down dropdown for status variants:
| Action | Resulting status |
|---|---|
| Save as Draft | draft |
| Save for Review | review |
| Mark as Approved | approved |
| Publish | publish |
| Suspend | suspended |
| Archive | archived |
Phase 1 validation
Hitting Publish with missing required fields (Title, Slug, Pricing) shows inline errors and jumps the form to the first failing section. The save itself is blocked until the errors are fixed.
At the bottom of the section, Previous and Next buttons let you step through sections without using the sidebar.
What happens after publish
- The trip appears in Yatra → Trips with status Published.
- Its public URL (
/trip/<slug>/) is live. - The trip becomes selectable when creating Departures, Bookings, and Discounts.
- Reports start counting views, add-to-bookings and conversions for this trip.
Next up: configure Departures & availability to schedule actual dates travelers can book — or jump straight to Bookings if you want to take a test reservation.