Title: Tripvance
Author: abourri
Published: <strong>September 9, 2026</strong>
Last modified: October 26, 2026

---

Search plugins

![](https://ps.w.org/tripvance/assets/banner-772x250.png?rev=3689012)

![](https://ps.w.org/tripvance/assets/icon-256x256.png?rev=3688981)

# Tripvance

 By [abourri](https://profiles.wordpress.org/abourri/)

[Download](https://downloads.wordpress.org/plugin/tripvance.2.14.2.zip)

 * [Details](https://mlt.wordpress.org/plugins/tripvance/#description)
 * [Reviews](https://mlt.wordpress.org/plugins/tripvance/#reviews)
 *  [Installation](https://mlt.wordpress.org/plugins/tripvance/#installation)
 * [Development](https://mlt.wordpress.org/plugins/tripvance/#developers)

 [Support](https://wordpress.org/support/plugin/tripvance/)

## Description

Tripvance brings tours, activities and travel experiences to WordPress: a Tours 
post type, tour pages built from real fields, and a booking request form. It is 
a request and confirmation system: the agency answers each request. There is no 
payment processing.

**Tours**

Each tour has a gallery, a short description, highlights, an itinerary, what is 
included and what is not, a meeting point, and questions and answers. The itinerary
is written a card at a time — press Add a day, give it a title and a description—
and comes out in two shapes, picking the right one by itself: a run of numbered 
days for a trip of several days, and a timeline of times and stops for a day trip.
A section with no data is not rendered, so a page never shows an empty heading.

**Tour layouts**

Seven layouts, each built for one kind of tour, all drawing the same content, prices
and booking form: Salma (booking focused — gallery beside the two-step booking panel),
Sara (marketplace product page with a price card that follows the reader), Atlas(
multi-day — the route and the days across the page with a day index), Sahara (photo-
first, no sidebar), Medina (compact, for city tours and short activities), Qamar(
premium storytelling for private and luxury journeys) and Classic (simple and theme-
friendly). Atlas has two styles (Clean, Zellige) and Sahara three gallery presentations(
Cinematic, Immersive, Mosaic). The site picks a default and each tour can choose
its own. Legacy layouts from earlier versions remain supported for existing tours.

Tours are filed under destinations, tour types, departure points, trip lengths and
categories, each with its own archive page and filters.

**Two kinds of travel business**

Tripvance ships two presentations of the same content, chosen under Settings  Website
experience. Standard is what the plugin has always been: a catalogue with prices,
availability and a booking form, and it is the default on every site. Luxury Editorial
redraws the same tours, destinations and activities as a travel magazine, for a 
bespoke travel designer who sells a journey by describing it rather than by pricing
it — journey collections, editorial destination pages, a page design with no price
card, and a short private enquiry in place of a checkout. Switching between them
changes nothing you have written, and there is no second catalogue to keep in step.

**Booking requests**

The form asks for a date, a party size and how to reach the traveller. By default
it behaves as an enquiry system. If you enable seat-capacity enforcement, seats 
are held atomically against the departure while a request is open, so two simultaneous
requests cannot both take the last seat.

Requests are managed from a booking screen with a status workflow, internal notes
and an operations dashboard.

**Transfers**

Private transfers (airport to hotel, city to city) are a post type of their own,
at /transfers/{slug}/. Each transfer describes its route, pickup and drop-off, estimated
duration, operating hours, minimum booking notice and practical information, and
lists the Vehicle Types it offers with a price for each. Vehicle Types are reusable,
customer-facing options (for example “Comfort minivan or similar”) with a class,
capacity, luggage, features and a picture; they are not public pages. A round trip
is priced as two journeys in the same Vehicle Type. There is no distance-based or
automatic pricing.

A transfer can also list the stops on the way (Marrakech  Tizi n’Tichka  Ait Ben
Haddou  Ouarzazate), each with an optional description and stop time, drawn on the
page as a route line — typed by the agency, never looked up or drawn on a map — 
and its own questions and answers, shown as an accordion. The transfer page leads
with the route, the duration and the starting price, then the vehicles and the request
form, then the practical information, the questions and the photographs (with a 
viewer). The optional transfer list at /transfers/ and the homepage Transfers section
show transport cards (route, duration, capacity and “from” price); the homepage 
section offers three layouts: Classic Cards, Route Focus and Premium Transport.

The visitor chooses a Vehicle Type, a pickup date and time, passengers and luggage,
and can add flight details. Capacity is checked in the browser and again on the 
server. The request becomes an ordinary booking record, with the same statuses, 
reservation ledger, messages, quotes and Guest Pass as a tour, and the price is 
stored with it when it arrives.

In Operations, the Fleet holds the physical vehicles. A fleet vehicle can be linked
to a Vehicle Type, and assigning one to a transfer booking warns when it does not
match the requested type and is refused when it cannot carry the passengers. Fleet
is optional: transfers can be booked without it.

**Privacy & Cookies**

An optional consent banner (off by default) with Necessary, Analytics, Marketing
and Preferences categories holds back the scripts you place in it until the visitor
accepts their category. It helps collect and honour consent; it does not by itself
make a site legally compliant.

**Presentation**

Tour cards can carry a strip of gallery thumbnails along the foot of their picture:
pointing at one, or tapping it, shows that photo in the card, so a visitor looks
through a tour without opening it (Settings > Tour listings).

Seven curated tour layouts, with style and gallery variants, chosen per tour or 
site wide, on one shared foundation (legacy layouts from earlier versions remain
supported for existing tours): a sticky section navigation, a booking ticket beside
the price, a route at a glance, an itinerary drawn as days or as a timeline, group
rates, questions and answers, and reviews. The plugin inherits the theme’s typography
and loads no fonts of its own.

Listing pages with filters, sorting and cards; a Tours block and a `[wptm_tours]`
shortcode for a grid of tours anywhere, and `[wptm_activities]` for a grid of activities—
each activity can carry its own price and take booking requests directly through
the same request system as a tour; a homepage template assembled from your tours,
destinations, activities and trust details; and a car hire template for the driving
side of the business — the fleet, the services, the routes you cover and the prices
you quote.

**Multilingual**

Tripvance uses the WordPress translation system throughout and is ready for community
language packs from translate.wordpress.org. It also includes built-in French, Spanish
and Arabic front-end fallbacks, with right-to-left layouts for Arabic.

Polylang is supported properly, not nominally. Tours, activities and every taxonomy
the plugin owns are registered as translatable. Tours, terms and the pages the plugin
generates are given their language and linked to their translations, so a language
switcher lands on the right page. A generated page is written in its own language,
not in the language of whoever pressed the button. Booking requests record the language
the traveller was reading, and the confirmation, the voucher and the reminder are
all written in it. Wording you type yourself — the homepage, the car-hire page, 
the default inclusions — appears under Languages > String translations so it can
differ per language.

Addresses can be translated too, and are not by default. Switch on “Addresses per
language” in the settings and a French page becomes /fr/circuits/ rather than /fr/
tours/, with the destination, category, departure and trip length sections following
it; the words come from the same translation catalogue. The addresses you already
have keep working and redirect to the new ones. Leave it off and no address on the
site changes, whatever language packs are installed.

A site that generated its pages before adding a language can put them right from
the settings screen: each page’s title, starting wording and address go back into
its own language, a page you have edited is left alone, and the previous address
redirects.

An optional language switcher goes into the theme’s own menus — desktop header, 
mobile menu, footer, or a shortcode wherever you like — and each language links 
to the translation of the page the visitor is on: a French reader on an English 
tour lands on the French tour. Polylang decides which page that is and keeps printing
the hreflang tags; Tripvance only draws the control, in the menu’s own typography,
with no flags, no external assets and no second translation system.

Without Polylang the plugin runs unchanged.

**Search engines**

Tripvance prints no canonical tag, meta description or Open Graph markup, and no
site-wide schema. Those belong to an SEO plugin, and two sources for one signal 
is worse than one.

Tripvance provides limited Product structured data for eligible Tour and Activity
pages, including accurate pricing and genuine on-site review aggregates. When Rank
Math is active, Tripvance integrates with its structured-data graph to avoid duplicate
Product entities. General SEO and site-wide Schema remain under the control of the
site’s SEO plugin.

In practice: a price is included only when it is the price the page shows and a 
traveller can book (one Offer at the public “From” price — the fixed price, or the
lowest valid Group Rate; nothing for a tour on request), and a rating only from 
approved reviews of that tour, when the page shows the same average and count. Nothing
is added to the homepage, archives, taxonomy pages, FAQs or private views such as
booking confirmations and Guest Passes. The setting is under Tripvance > Settings
> Search result product data. Structured data makes a page eligible for rich results;
search engines decide whether prices or review stars are shown, and it does not 
affect ranking.

It also emits clean semantic markup, keeps taxonomy archives crawlable, marks empty
ones as noindex, and keeps them out of the sitemap.

**Import**

Existing WooCommerce products can be imported as tours, with a dry run first that
reports exactly what would happen and creates nothing.

### Privacy

Booking requests and operational records are stored in the site’s database. These
can include names, email and WhatsApp/telephone numbers, country, travel dates, 
party sizes, pickup details, messages, quotes and records of payments received outside
the site. Transfer requests can also include a drop-off address, pickup and return
times, luggage and flight details. Notifications use `wp_mail()` and the mail provider
configured by the site owner. Tripvance sends no telemetry to its developer and 
loads no remote fonts.

WordPress personal-data export and erasure tools are supported for bookings matched
by email, including bookings in the trash; transfer bookings are exported with their
route, pickup, drop-off, return and flight details. Erasure removes identifying 
booking fields, campaign attribution, email queue/history and free-text history 
notes, clears linked reservation emails and pickup details, and revokes private 
links. Non-identifying booking, quote and payment records are retained. For requests
without an email address, the operator must identify the relevant records manually.
Backups and mail already delivered by the site’s mail provider are outside this 
eraser.

Optional first-party campaign attribution uses the `wptm_attr` cookie for up to 
30 days. It stores UTM values, referral code, referring host (not the full referring
URL), first tour visited and timestamp. It is read or written only when the visitor
has consented to analytics; without consent it is disabled and an existing cookie
is expired on the next uncached page request. Booking totals and manually entered
attribution remain available. Consent is taken from the WordPress Consent API when
a consent manager configures opt-in mode, otherwise from the Analytics choice in
Tripvance Privacy & Cookies when that module is switched on. Other integrations 
can supply the visitor’s consent through the `wptm_attribution_consent` filter. 
Do not return true globally as a substitute for visitor consent.

The optional Privacy & Cookies module (off by default) stores the visitor’s choice
in one first-party cookie, `wptm_consent`, holding the accepted categories, the 
consent version and a timestamp.

Tailor-made trip requests store the name, email address and, when given, telephone,
country and message a traveller enters, with their travel preferences. Nothing is
sent or stored while they move between the wizard’s steps; the request is saved 
once, when they press Send. Requests are private, excluded from search, feeds, REST
and sitemaps, and are covered by the WordPress export and erasure tools (erasure
keeps the reference, dates, length and party size).

Issued quotes, invoices and trip programmes are stored in the site’s database as
frozen copies of what they printed (the customer’s name, the billing details an 
operator entered, the trip and the prices), together with the PDF file as issued.
They are never written to the uploads folder, and a customer can download one only
when the agency shared it, through their own Guest Pass or quote link. Erasure keeps
issued invoices, which are accounting records, and removes the booking’s quote and
programme documents.

Anti-abuse counters use salted hashes of the requesting IP address with expiring
transients. The raw IP is not stored in those counters. Private Guest Pass, quote
and voucher links act as access keys and should be shared only with the intended
traveller.

### Third-party libraries

 * TCPDF 6.11.4 by Nicola Asuni — https://tcpdf.org — LGPL-3.0-or-later (vendor/
   tcpdf/LICENSE.TXT). Bundled to produce PDF documents on the site’s own server;
   trimmed to the engine and two fonts.
 * DejaVu Sans fonts — Bitstream Vera and Arev fonts licence, public-domain changes(
   vendor/tcpdf/fonts/DEJAVU-LICENSE.txt).

### External services

No external service is required for the core booking workflow. Site owners choose
the optional links, media and mail service they use and should reflect them in their
privacy notice.

 * WhatsApp: contact buttons open `wa.me` after a click and may include a prepared
   message. No WhatsApp API or automatic WhatsApp messaging is included. Terms: 
   https://www.whatsapp.com/legal/terms-of-service ; Privacy: https://www.whatsapp.
   com/legal/privacy-policy .
 * YouTube and Vimeo: an operator-supplied video URL can be embedded through WordPress
   oEmbed; WordPress may request embed metadata and the visitor’s browser connects
   to the video host when displayed. In the Luxury Editorial experience, a YouTube
   address pasted into the Video field of the hero or the full-bleed story is embedded
   directly from www.youtube-nocookie.com and plays on its own, silently, as the
   background of that one section; nothing is requested from any video host on a
   site that has not supplied such an address, no script is loaded from a third 
   party at any point, and the embed is never created for a visitor whose browser
   asks for reduced motion or reports a slow or metered connection. YouTube terms:
   https://www.youtube.com/t/terms ; Google privacy: https://policies.google.com/
   privacy ; Vimeo terms: https://vimeo.com/terms ; Vimeo privacy: https://vimeo.
   com/privacy .
 * Google Maps and Search: optional meeting-point and weather links open after a
   click and include the selected place, coordinates or weather query. Terms: https://
   policies.google.com/terms ; Privacy: https://policies.google.com/privacy .
 * External media: if an operator enters a remote image or direct video URL, the
   browser requests that host when the media is displayed. Use the WordPress media
   library to serve these assets from the site itself.
 * External payment links: an operator may provide a PayPal or another payment link.
   The link opens its provider after a click; Tripvance does not process the payment
   or receive card details. PayPal terms: https://www.paypal.com/legalhub/useragreement-
   full ; Privacy: https://www.paypal.com/legalhub/privacy-full .

## Screenshots

[⌊A tour page: gallery, rating, section navigation and the booking ticket.⌉⌊A tour
page: gallery, rating, section navigation and the booking ticket.⌉[

A tour page: gallery, rating, section navigation and the booking ticket.

[⌊The booking ticket, with the two-step request form.⌉⌊The booking ticket, with 
the two-step request form.⌉[

The booking ticket, with the two-step request form.

[⌊The listing page with filters, sorting and tour cards.⌉⌊The listing page with 
filters, sorting and tour cards.⌉[

The listing page with filters, sorting and tour cards.

[⌊The route at a glance and the itinerary.⌉⌊The route at a glance and the itinerary
.⌉[

The route at a glance and the itinerary.

[⌊The bookings dashboard in the admin.⌉⌊The bookings dashboard in the admin.⌉[

The bookings dashboard in the admin.

[[

[[

## Blocks

This plugin provides 1 block.

 *   Tours Tour cards from your catalogue, as a grid or as the Moroccan Editorial
   Carousel, filtered by destination, type, category, duration or departure.

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/`, or install it through Plugins
    Add New.
 2. Activate it. Tripvance prepares its required database tables, options and capabilities,
    but creates no tours, terms, pages or demo content automatically.
 3. A one-time notice offers a starter kit (tour types, durations, sample destinations,
    a Destinations page, a Tour Types page and two landing pages). Create it in one
    click, or dismiss the notice and build your own structure. The same buttons stay
    under Tripvance  Settings.
 4. Go to Tripvance  Settings to choose the booking behaviour, contact details and 
    tour-page design. Currency is set on each tour’s pricing fields.
 5. Add a tour under Tours  Add New.

## FAQ

### Can travellers ask for a tailor-made trip?

Yes. Tripvance  Tailor-Made Requests  Settings has a “Create Trip Builder Page” 
button, or lets you choose an existing page; nothing is created until you press 
it. The page shows a step-by-step wizard (dates, length, interests, destinations,
travel style, accommodation, travellers, budget, contact) whose steps and answers
you manage on the same screen. Requests are private records with a TMR reference,
separate from bookings, and “Create Draft Tour” starts a draft tour from one. The`[
tripvance_trip_builder]` shortcode and the Trip Builder block place the wizard anywhere.
An optional “Plan your own trip” call to action on tour pages is off by default.

### Is there a setup guide?

Yes. After activation a dismissible welcome offers a step-by-step guide (Tripvance
Settings  Setup guide): tours, homepage and its preset, tour design, booking. Every
step reads your site as it is and only offers what is missing; nothing is created
or changed without a button pressed for it. The guide also offers demo content —
sample tours, activities and destinations, every item marked as demo — with a one-
click removal that never touches your own content. The guide can be restarted from
Tripvance  Settings.

### Is there a homepage?

Yes. Tripvance  Site pages  Homepage creates a page on the “Tripvance homepage” 
template and fills it from what the site already has. Its hero can be a classic 
image cover, a muted looping video with accessible playback and optional sound controls,
a split featured-tour spotlight, layered floating image stories, or an animated 
travel-colour mesh. The same buttons, optional reassurance points and five tour-
search designs adapt to every hero; search can be hidden entirely. The rest includes
featured tours, destinations and tour types with their counts, a signature tour,
activities, trust, “why choose us”, articles and a final call to action. Sections
can be switched off and reordered; a section with nothing to show is not printed.
Setting the page as the site’s front page is a separate, explicit button.

### Is there a car hire page?

Yes. Tours  Car hire creates a page on the “Tripvance car hire page” template, built
the same way as the homepage: sections you tick and order, a preset to arrange them,
a preview before anything goes live. It holds a hero, a fleet with a filter by kind
of vehicle, the services a driver is hired for, a table of routes with journey times
and prices, your destinations and tours, the booking steps, trust details, a gallery,
testimonials and questions. Only the vehicle’s name is required; a cell left empty
prints nothing and a section with nothing in it is not printed at all. Publishing
the page is a separate, explicit button, and it is a normal page, so you add it 
to your menu yourself.

### How do people ask for a quote on the car hire page?

Through the form plugin you already use. Paste its shortcode — Contact Form 7, WPForms,
Forminator, whichever it is — into the Request form group on Tours  Car hire, and
the form is printed in its own section, styled to match the page. Tripvance does
not add a second enquiry system for cars: your form plugin already holds the fields,
the address the mail goes to, the spam protection and the export, and duplicating
that would only give you two places to check. Leave the shortcode empty and the 
section is not printed at all. The section answers to `#wptm-cars-request`, so a
hero or call-to-action button can scroll straight to it.

### Does it create pages or content when I activate it?

No. Activation only registers the post types and prepares the database. A notice
then offers a starter kit, and nothing is created until you press the button. The
starter kit’s sample destinations are Moroccan examples; rename or delete any of
them.

### How do I get review stars in Google search results?

Tripvance cannot make stars appear; Google decides that. What it does is make a 
tour eligible: turn on reviews under Tripvance  Settings and let travellers leave
rated reviews, and keep “Search result product data” switched on. Once the tour 
has approved rated reviews, their average and count — the same figures printed on
the page — are added to the tour’s Product data. With Rank Math active they go into
the Product Rank Math already builds for the tour, or into one Product added to 
Rank Math’s graph if it has none: Tripvance does not add a second Product when Rank
Math already provides one for the current Tour or Activity. Ratings can be left 
out separately with “Include the average rating from approved reviews”; a site that
had switched the earlier rating option off keeps it off. Ratings from other websites
are never included, and activity pages, which do not display reviews, carry no rating.

### Is there an activities page?

Optionally. Activities are pages of their own from the start; the listing at `/activities/`
and a page per activity type are switched on under Tripvance  Settings (activity
archive). With it on, the plugin draws both — title, description, a row of type 
links, the activity cards with their prices, pagination — and a theme can replace
either with `archive-wptm_activity.php` or `taxonomy-wptm_activity_type.php`. The`[
wptm_activities]` shortcode and the Activities block put the same cards on any page.

### My day trip shows DAY 01, DAY 02… but it is one day

On Automatic this should not happen: a tour is drawn day by day only when it says
it lasts more than one day — more than one day, at least one night, a multi-day 
duration preset, or an overnight written on one of its days. Check those four first,
because one of them is what is claiming the days. Otherwise set Itinerary format
to “Single day / Timeline” on that tour and the choice is final. Fill in the Time
field at the top of each stop’s card if you have one and it leads the stop on the
page; a stop with no time still reads perfectly by its title.

### I set Itinerary format by hand. Will the plugin overrule me?

No. Automatic only decides for tours that have not chosen, and a tour that has chosen
keeps that choice whatever its duration says.

### The stylesheets are minified. How do I read the source?

The readable files sit beside the minified ones (`assets/css/tour.css` next to `
tour.min.css`). Define `SCRIPT_DEBUG` as true in wp-config.php and the readable 
files are served instead, as WordPress does for its own. The minified copies are
built with esbuild 0.25.9. To rebuild a file, run `npx --yes esbuild@0.25.9 assets/
css/tour.css --minify --outfile=assets/css/tour.min.css` (use the corresponding 
paths for other CSS or JavaScript files); until then the edited file is served as
it is, because a minified copy older than its source is never used.

### Does this take payments?

No. It records booking requests and the agency confirms them. No payment gateway
is included and none is required.

### Can I send a quote, an invoice or a trip programme as a PDF?

Yes. Open a booking, set its price under Price & services if needed, and use the
Documents panel: Preview gives a draft without a number, Issue gives the numbered
document and keeps an unchangeable copy. PDFs are produced on your own server. Tripvance
prints the details you give it; check that your invoices carry what the rules where
you trade require.

### Is Advanced Custom Fields required?

No. The plugin has its own fields and works without it. If ACF is installed the 
same fields are shown through ACF instead. The free version is enough; no premium
field type is used.

### Will it conflict with my SEO plugin?

It should not. The plugin outputs no canonical, meta description or Open Graph markup
and no site-wide schema, leaving those to Rank Math, Yoast or whichever you use.
Its only structured data is one Product on eligible Tour and Activity pages; with
Rank Math it is merged into Rank Math’s own graph, and with Rank Math the page builder
no longer writes Rank Math’s title, description or focus keyword. If another SEO
plugin already publishes a Product for your tours, switch off “Search result product
data” or use the `wptm_product_schema_print` filter.

### Does it work with Polylang?

Yes, with the free version. Tours, activities, taxonomy terms and generated pages
are assigned a language and linked to their translations, and each generated page
is written in its own language. The homepage and the car hire page are created in
every language at once and linked, so the language switcher and the hreflang tags
are right from the start. The homepage’s own wording gets a language tab per language
in Tripvance > Site pages > Homepage: the same form, the source text above every
box, and a box left empty falls back to the source language rather than leaving 
a hole. Booking mails, vouchers and reminders answer in the language the traveller
booked in. Your other wording is still exposed in Languages > String translations.
A language switcher can be switched on in Settings and printed in the theme’s menus
or through `[wptm_language_switcher]`; each language links to the real translation
of the current page and never to a guessed address. Without Polylang nothing changes.

### How do I change the addresses (URLs) of tours, activities and transfers?

In Tripvance > Settings > Addresses & SEO. Two structures are offered. Shared slugs
use one base for every language (/tours/, /fr/tours/, /es/tours/; the language folders
are Polylang’s). Translated slugs give each language its own base (/tours/, /fr/
circuits/, /es/tours/; activities: activities, activites, actividades; transfers:
transfers, transferts, traslados), with Polylang Free. Choosing Translated slugs
fills these words in; they are suggestions you can change, and any other language
starts from the English word rather than an invented one. Translating a base translates
the address only: a French address shows the French translation of a tour where 
one exists.

A new site with Polylang already active is offered translated slugs in the Setup
wizard. An existing site keeps exactly the addresses it has, through the update 
and afterwards, including when Polylang or a new language is added later, until 
an administrator changes them here.

The screen shows the addresses each word produces as you type. Save changes checks
every word first and saves nothing if one is refused (an empty or reserved word,
a language code, or two Tripvance routes at one address); the error is shown beside
the field. Going back to an earlier word is always possible: it simply becomes the
live address again. After a save the screen lists every route that moved and checks
it against the rebuilt rules. Back up your site before changing published addresses.

Every previous base keeps answering with one permanent (301) redirect to the same
tour, activity, transfer, list or term in the same language, so links and indexed
pages keep working; several successive changes still take one hop, and a word that
becomes active again stops redirecting. Unknown addresses keep answering 404; nothing
is sent to the homepage or to another language. No post slug, title, content, ID,
language, booking or SEO field is changed, and the plugin builds canonical, hreflang
and sitemap addresses through WordPress’s own functions, so Rank Math, Yoast and
Polylang publish the new ones. Search rankings can fluctuate while search engines
process the change; check your sitemap and Google Search Console.

Restore Previous URL Configuration puts the previous bases back, with the same preview
and redirects; it cannot restore content, rankings or links on other sites. If Polylang
is switched off, the site keeps its default language’s addresses and returns to 
the per-language ones when it is switched on again.

Supported: language folders (/fr/, with or without the default language’s folder),
WordPress in a subdirectory, structures with or without a trailing slash. Not supported
for changes (the current addresses are kept and the screen says why): plain permalinks,
Polylang languages by domain, subdomain or content, and bases set by code through
the wptm_rewrite_slugs or wptm_language_slugs filters. Where Polylang Pro is active,
its own Translate slugs module owns translated bases and Tripvance offers shared
slugs only. Multisite works per site but has not been tested.

### Can I take booking requests for something that is not a tour?

Yes. Tripvance  Bookings  Booking forms makes a booking request form with no tour
page behind it — an airport pick-up, a private dinner, a day with a driver. Give
it a name, optionally a price, the largest party and the notice you need, and place
it on any page with `[tripvance_booking_form id="123"]`: a button that opens the
form in a window. Add `display="inline"` to show the form in the page instead. The
button’s words, icon, style (solid, outline, soft), shape (rounded, pill, square),
size, width, alignment and colour are set on the form with a live preview, and one
placement can change any of them in the shortcode (`icon="calendar" style="outline"`…).
When a request is sent the traveller sees a booking slip print out of a small receipt
printer: the reference, what was booked, the date, the party, the estimate and what
happens next, with buttons to continue on WhatsApp, download the confirmation or
print the slip.

### Can I change the booking reference (WPT-2026-001)?

Yes, in Settings  Booking reference: your own letters and hyphens with {YYYY}, {
YY}, {MM}, {DD} and {NUM}, and how many digits the number has — MTL-{YY}{MM}-{NUM}
gives MTL-2610-0001. An example updates as you type. New requests use it; references
already given keep theirs. The numbering starts again each year only when the year
is part of the reference. Requests arrive in Bookings under the name you gave the
form, with the same e-mails, statuses and documents as a tour booking.

### Can two people book the last seat at once?

If seat-capacity enforcement is enabled, no. Tripvance obtains a departure lock 
and performs the capacity test as part of the reservation write, so only one request
can take the final seat. Capacity enforcement is off by default because many agencies
use the form as an enquiry system.

## Reviews

![](https://secure.gravatar.com/avatar/9d6f82d7cccb52fc00ff3484635bebc5cbf1888ecd74de4ea8d185bc5d3a2b74?
s=60&d=retro&r=g)

### 󠀁[Perfect tour management solution – Smooth, lightweight & elegant!](https://wordpress.org/support/topic/perfect-tour-management-solution-smooth-lightweight-elegant/)󠁿

 [lirefr](https://profiles.wordpress.org/lirefr/) September 29, 2026

I have been using Tripvance for my travel website, and it has exceeded all my expectations.
It provides absolutely everything needed to manage travel packages, tours, and activities
seamlessly.What I love most about it: Pure Performance & Design: It inherits the
theme's typography effortlessly without loading unnecessary external fonts or heavy
scripts, keeping the site ultra-fast. Flexible Display Options: The itinerary builder(
whether for multi-day trips or single-day timelines) is intuitive and clean. Plus,
the Luxury Editorial mode gives high-end travel agencies a stunning, bespoke magazine
look! Smart Booking System: The booking request workflow and seat-capacity management
are super reliable and keep client inquiries organized.If you are building a travel
agency or tour operator site on WordPress, Tripvance is a game-changer. Kudos to
the developer for such an exceptionally well-crafted plugin!"

 [ Read all 1 review ](https://wordpress.org/support/plugin/tripvance/reviews/)

## Contributors & Developers

“Tripvance” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ abourri ](https://profiles.wordpress.org/abourri/)

“Tripvance” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/tripvance/contributors)
for their contributions.

[Translate “Tripvance” into your language.](https://translate.wordpress.org/projects/wp-plugins/tripvance)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/tripvance/), check 
out the [SVN repository](https://plugins.svn.wordpress.org/tripvance/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/tripvance/) by [RSS](https://plugins.trac.wordpress.org/log/tripvance/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.14.2

 * Booking screen: each step shows a short checklist ticked from the booking itself(
   written to, price agreed, pass issued and sent, deposit recorded, confirmed, 
   pick-up and guide set).
 * Booking screen: when the guest says on their pass that the deposit is sent, the
   booking opens on Confirm with the amount filled in.
 * Fix: “Record the deposit and confirm” records the deposit even when the status
   row already moved the booking to confirmed, and refuses an amount that is not
   a positive number.
 * Fix: the one-column layout applies to the booking screen only.
 * Fix: a WeTravel link without “https://” no longer blocks saving the booking.
 * Guest Pass: a confirmed booking always shows the full pass; “Paid in full” only
   when the balance is known to be nothing; pick-up confirmations only on a confirmed
   booking.
 * Fix: the lead copied into the excerpt is recognised after kses and after a restore,
   so it is never printed twice.
 * Fix: the duration upgrade only merges spellings that differ by case.

#### 2.14.1

 * Fix: opening a booking no longer jumps. The header no longer changes size when
   it sticks (it flickered at the top of the screen), and the panels appear directly
   under their step instead of drawing first in WordPress’s columns.
 * Fix: a panel the page opens on stops below the sticky header.
 * Guest Pass: once the booking is confirmed, the Payment part shows no payment 
   options: “Paid in full” with nothing to pay on the day, or what was paid and 
   that the rest is paid when you meet.
 * Guest Pass: “Your journey” lists the days — number and name — without their descriptions.
 * Booking form: the pick-up place is no longer asked by default. Settings  Public
   contact details  “Pick-up on the booking form” turns it back on. Transfers still
   ask for their pick-up.

#### 2.14.0

 * New: the Guest Pass can be issued, emailed and sent on WhatsApp from Agree & 
   deposit (a booking marked contacted). Until the booking is confirmed it stays
   light: the trip, the payment methods, the deposit that activates the booking,
   WhatsApp and the blog. Its status reads “Awaiting deposit”.
 * New: a WhatsApp message “Booking pass and how to pay” with the pass link and 
   the deposit.
 * New: on the pass, the guest can say which method they used and how much they 
   sent, with their reference.
 * New: Confirm step — “Record the deposit and confirm” with the amount, method 
   and reference already filled in from what the guest said (or the deposit share
   of the total). The payment goes on the ledger and the booking is confirmed in
   one step; a refused payment confirms nothing.
 * New: after confirmation, the Travel pass step asks for pick-up, guide (with a
   new guide licence number shown on the pass), vehicle and route; it is done once
   the pass carries them.
 * New: Western Union, MoneyGram and WeTravel are payment methods on the ledger.
 * Improved: History records edits by time — Guest Pass details, internal notes,
   follow-up dates, the WeTravel link, the guest’s payment claim — grouped by day,
   and keeps 150 entries.
 * Improved: the booking header (reference, name, status, documents, Save changes)
   stays at the top while scrolling, compact once stuck, with the unsaved-changes
   flag beside Save.
 * Polish: facts as tiles, the step’s hint as a callout, panel headings with an 
   accent, one focus colour for fields.

#### 2.13.1

 * Booking screen: one column, no sidebar. The status change (move to, follow-up
   date, reason) is a row of the booking header, saved with Save changes; each step’s
   panels use the full width, and small panels (WhatsApp, emails, referral, Guest
   Pass, voucher, notes) sit two to a row on wide screens.
 * Booking screen: a WeTravel payment link field in the Agree & deposit step, saved
   with the booking and shown to the guest on the Guest Pass. (It moves out of Guest
   Pass details, where it was hard to find.)

#### Earlier versions

The full history of every release is in changelog.txt, in the plugin folder.

## Meta

 *  Version **2.14.2**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.3 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/tripvance/) and [Lao](https://lo.wordpress.org/plugins/tripvance/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/tripvance)
 * Tags
 * [activities](https://mlt.wordpress.org/plugins/tags/activities/)[booking](https://mlt.wordpress.org/plugins/tags/booking/)
   [itinerary](https://mlt.wordpress.org/plugins/tags/itinerary/)[Tours](https://mlt.wordpress.org/plugins/tags/tours/)
   [travel](https://mlt.wordpress.org/plugins/tags/travel/)
 *  [Advanced View](https://mlt.wordpress.org/plugins/tripvance/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/tripvance/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/tripvance/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/tripvance/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/tripvance/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/tripvance/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/tripvance/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/tripvance/reviews/)

## Contributors

 *   [ abourri ](https://profiles.wordpress.org/abourri/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/tripvance/)