Skip to content

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).

Yatra Trips listing — search, status filter pills, column visibility picker, and the + Add New Trip button at top right

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.

Create New Trip modal — Trip Title, Trip URL slug, and live URL preview

Fields:

FieldTypeRequiredNotes
Trip Titletext✅ YesWhat appears on the public trip page and in the catalogue.
Trip URLtext✅ YesAuto-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:

PhaseBadgeSections
1 — EssentialsStart Here / RequiredTrip Basics ✱, Location & Route, Pricing ✱, Availability & Booking
2 — DetailsRecommendedTrip Details (Itinerary + Included/Excluded sub-tabs)
3 — OptimizationRecommendedMedia & Gallery, Downloads (free), Categories & Attributes, SEO & Marketing
4 — AdvancedPower UsersAdvanced 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 ✱

Trip Basics — title, slug with live preview, short description, long description (WYSIWYG), featured image, highlights repeater

FieldTypeRequiredNotes
Trip Titletext✅ YesChar counter shows 0–60 recommended (max 100). Auto-feeds slug while not manually edited.
Trip URLtext (monospace)✅ YesAuto-generated. Click Edit to override. Includes a Copy button and live URL preview.
Short DescriptionWYSIWYGRecommended100–150-char range works best. Shown in catalogues and trip cards.
Trip DescriptionWYSIWYG (min 260 px)RecommendedThe main body shown on the public trip page. Supports bold / italic / lists / link / headings.
Featured ImageWordPress media pickerRecommended1200 × 800 px recommended. Preview + Remove button below the picker.
Trip Highlightsrepeater (text rows)OptionalAdd 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

Location & Route — destinations multi-select, interactive starting point map, ending point map, seasonal notes

FieldTypeRequiredNotes
Destinationsmulti-selectOptionalAttaches 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 Pointlocation picker (search + map + lat/lng)OptionalName field auto-fills from map search; 300 px embedded OpenStreetMap; "Use Current Location" button (geolocation); manual lat / lng inputs underneath.
Ending Pointlocation pickerOptionalSame structure as Starting Point. Use for routes that don't end where they began.
Seasonal Availability NotestextOptionalShort freeform note ("Available year-round except monsoon season"). Shown on the public page.

1.3 Pricing ✱

Pricing — Regular vs Traveler-Based toggle, original/discounted price fields, per-category matrix

The pricing section starts with a Pricing Type toggle — pick one of two modes:

ModeWhen to use
Regular PricingOne price; everyone pays the same. Best for short experiences with no age tiers.
Traveler-Based PricingDifferent price per traveler category (Adult / Child / Infant / Senior, configurable under Yatra → Traveler Categories).

Regular Pricing fields:

FieldTypeRequiredNotes
Original Pricecurrency (number, 0.01 step)✅ YesThe undiscounted public price.
Discounted PricecurrencyOptionalIf 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

Availability & Booking — availability period dates, capacity, departure times, booking policies

This section merges what the source code calls duration and booking. Field groups:

Availability Period

FieldTypeNotes
Available From / Available TodateThe window during which travelers can book this trip.
Booking Window (days in advance)numberHow far in advance bookings are accepted (e.g. 30 = up to 30 days out).
Seasonal Availability NotestextShort customer-facing note about seasonality.

Capacity & Travelers

FieldTypeNotes
Minimum TravelersnumberSmallest party size accepted.
Maximum TravelersnumberHard 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.
  • Multi-day trips: a single Default Departure Time.

Booking Policies

FieldTypeNotes
Minimum AgenumberHard floor for booking. 0 = no restriction.

Accommodation

A sub-block (Home icon) inside Availability & Booking — describes what travelers sleep in.

FieldTypeNotes
Accommodation TypetextPlaceholder: Hotel, Resort, Teahouse, Camping. Free text — appears on the public trip page.
Meal PlanselectOne of: Breakfast Only, Half Board (Breakfast + Dinner), Full Board (All Meals), All Inclusive, No Meals Included.
Accommodation DetailstextareaFree text — describe the lodging in more depth.

Transportation

A sub-block (Car icon) inside Availability & Booking — describes pickup/dropoff and what's included.

FieldTypeNotes
Transportation IncludedcheckboxToggle. The three fields below are hidden until this is on.
Pickup LocationtextConditional. Placeholder: Airport, Hotel, City Center.
Dropoff LocationtextConditional.
Transportation DetailstextareaConditional. Free text — describe vehicles, route, schedule.

Phase 2 — Details

2.1 Trip Details

Trip Details — Itinerary and Included/Excluded sub-tabs

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").

Included / Excluded sub-tab — two repeaters listing what's covered and what isn't


Phase 3 — Optimization

Media & Gallery — photo gallery grid with drag reorder, video URL, virtual tour URL, what makes special, trip story, testimonials

FieldTypeNotes
Photo Gallerygrid repeater (drag to reorder)Multi-image picker via WordPress media library. Order badges, reorder buttons on hover, remove (X) per image.
Video URLtext (URL)YouTube or Vimeo link. Renders embedded on the public page.
360° Virtual Tour URLtext (URL)Any embeddable virtual-tour URL (Matterport, kuula.co, etc.).
What Makes This Trip SpecialtextareaFreeform paragraph highlighting unique selling points. Shown as its own block on the public page.
Trip Story / NarrativetextareaLonger-form story / context.
TestimonialsselectorPick from existing reviews tied to bookings. Renders a testimonial card row on the trip page.

3.2 Downloads

Downloads — repeater of downloadable items with attachment, description, visibility

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:

FieldTypeNotes
TitletextE.g. "Packing list", "Itinerary PDF", "Waiver form".
DescriptiontextareaShort description shown to the customer.
VisibilitydropdownPublic (anyone can download) / Logged in users only / Booked customers only.
FileWordPress media pickerThe actual file (PDF, doc, image, zip…) with thumbnail + Select File button.

Rows are reorderable via move-up / move-down buttons.

3.3 Categories & Attributes

Categories & Attributes — trip categories, difficulty, activity types, featured priority, custom attributes

Categorization fields:

FieldTypeNotes
Trip Categoriesmulti-select (hierarchical, -- prefix)Tags the trip with one or more Trip Category terms (powers category archive pages).
Difficulty LeveldropdownOne of the difficulty levels you've configured (e.g. Easy / Moderate / Hard / Expert).
Activity Typesmulti-selectHiking, Wildlife, Cultural, etc. — drives the activities archive.
Featured PrioritydropdownNone (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

SEO & Marketing — meta title, description, keywords, Google preview card, FAQ repeater

Search-engine optimization:

FieldTypeNotes
Meta TitletextMax 60 chars. Falls back to the trip title when empty.
Meta Descriptiontextarea (max 160 chars)Shown in search results below the title.
Meta KeywordstextComma-separated. Mostly ignored by Google but other engines / plugins may use them.
Google Previewread-onlyLive 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

Advanced Settings — version, scheduled publish/unpublish, seasonal auto-enable, frontend tabs drag-reorder

Version control:

  • Version — readonly number that auto-increments on every save.

Scheduled publishing:

FieldTypeNotes
Schedule Publish DatedateWhen set, the trip is auto-published on this date.
Schedule Unpublish DatedateWhen 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:

ControlNotes
Grip handleDrag the row up or down to change tab order on the public page.
LabelThe visible tab title. Disabled until the tab is enabled.
Content typeRead-only badge (overview, itinerary, custom, etc.).
Enable togglePer-tab on/off — disabled tabs are hidden on the public trip page.
Icon pickerPick a Lucide icon or upload an image for the tab.
Custom contenttextarea (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:

Top action bar with Preview, Save Draft, and Publish Trip dropdown

  • 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:
ActionResulting status
Save as Draftdraft
Save for Reviewreview
Mark as Approvedapproved
Publishpublish
Suspendsuspended
Archivearchived

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.