=== Yatra - Travel Booking & Tour Operator Software === Contributors: MantraBrain Tags: tour-booking, travel-booking, tour-operator, travel, travel-agency Requires at least: 6.0 Tested up to: 7.0 Requires PHP: 7.4 Stable tag: 3.0.11 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html WordPress travel booking plugin for tour operators. Trips, departures, payments, OTAs, AI. Free + [Pro](https://wpyatra.com/pricing/) from $99/yr. == Description == **✈️ Yatra** is the **WordPress travel booking plugin** built for **tour operators, activity providers, travel agencies and adventure businesses** that need real trip inventory β€” not a generic shop. The free version is a full booking office: trips, availability, checkout, customer records, transactional emails and a customer account area. **[Yatra Pro](https://wpyatra.com/pricing/)** unlocks [premium payment gateways](https://wpyatra.com/pricing/) plus a suite of [20 Pro modules](https://wpyatra.com/features/) you switch on as your business grows β€” from [Channel Manager (Viator + GetYourGuide)](https://wpyatra.com/features/channel-manager/) to [AI Assistant](https://wpyatra.com/features/ai-assistant/), [White Label](https://wpyatra.com/features/white-label/) and [WhatsApp Notifications](https://wpyatra.com/features/whatsapp/). **Official site:** 🌐 [wpyatra.com](https://wpyatra.com/) Β· πŸ“– [docs.wpyatra.com](https://docs.wpyatra.com) Β· πŸ’³ [Pricing](https://wpyatra.com/pricing/) Β· ✨ [All features](https://wpyatra.com/features/) Β· 🎯 [Live demo](https://demo.wpyatra.com/) Β· πŸ’¬ [Support forum](https://wordpress.org/support/plugin/yatra/) = 🎬 See Yatra in action = πŸŽ₯ Watch the Yatra walkthrough on YouTube β€” trips, bookings, checkout, and traveler accounts in under five minutes. More tutorials on the **[MantraBrain YouTube channel](https://www.youtube.com/@MantraBrain)**. [youtube https://www.youtube.com/watch?v=cHmC-x7y0TQ] = ✈️ Why tour operators pick Yatra = * πŸ—ΊοΈ **Travel-first data model** β€” Departures, capacity, traveler types and itineraries match how tours are actually sold, not how an e-commerce shop sells products. * 🧭 **One admin workspace** β€” Modern Yatra dashboard inside wp-admin; less tab-hopping than bolting travel onto a generic commerce stack. * βš–οΈ **Honest Free vs [Pro](https://wpyatra.com/pricing/)** β€” Core booking, CRM-style records, reviews and PayPal / Pay Later are in the free plugin. Card gateways and advanced modules are in [Pro](https://wpyatra.com/pricing/) β€” no surprise paywalls on basics. * πŸ”’ **Your site, your data** β€” Bookings and customer data stay in your WordPress database; payments go through the gateways you configure. No proxy, no markup, no per-booking fee. * ⭐ **700+ active installs Β· β˜… 4.6 / 5 on WordPress.org** β€” Active development since 2018, weekly updates. = 🎁 What you get in the free Yatra plugin = **Trips and catalog (free)** * [Trips & Itineraries](https://wpyatra.com/features/trips/) β€” unlimited trips with rich descriptions, gallery, difficulty, duration, meeting points, included / excluded lists, day-by-day itinerary builder, per-trip FAQs and custom attributes * [Departures & Availability](https://wpyatra.com/features/departures/) β€” scheduled departures, capacity, recurring availability rules * [Customer Accounts](https://wpyatra.com/features/customer-accounts/) β€” booking history, payments, profile, and document access (invoices, vouchers, itineraries) * [Reviews & Ratings](https://wpyatra.com/features/reviews/) β€” moderation and trip-level display * [Sales Reports](https://wpyatra.com/features/reports/) β€” admin reports for bookings, revenue, and trends * [Discounts & Coupons](https://wpyatra.com/features/discounts/) β€” sale and regular pricing, traveler-based pricing, coupon engine * [Enquiries Inbox](https://wpyatra.com/features/enquiries/) β€” capture pre-booking questions per trip * [PDF Documents](https://wpyatra.com/features/pdfs/) β€” generated invoices, vouchers, traveler itineraries * [Transactional Emails](https://wpyatra.com/features/transactional-emails/) β€” booking confirmation, payment receipt, cancellation, reminder **Free payment gateways** * [PayPal](https://wpyatra.com/features/paypal/) β€” cards, PayPal balance, Pay-in-4 * [Pay Later](https://wpyatra.com/features/pay-later/) β€” book now, confirm or pay offline (ideal for bank transfer, cash on arrival, invoice workflows) **Front-end + extensibility** * Templates for trip listings, single trip, booking flow, checkout, and account * **4 Gutenberg blocks** + **8 shortcodes** to place trips, search, login and account on any page * Compatible with most well-coded block themes, classic themes and major page builders * PHP 7.4 or newer, structured codebase, hooks and filters, template overrides * REST-oriented flows for booking and account experiences = πŸ’Ž Yatra Pro β€” 20 modules across 3 tiers = **[Compare plans and buy Yatra Pro](https://wpyatra.com/pricing/)** β€” three plans (Starter Β· Growth Β· Scale), each available yearly or lifetime. **Starter β€” $99/yr (sale, regular $149)** Β· 1 site license Β· everything below included * [Dynamic Pricing](https://wpyatra.com/features/dynamic-pricing/) β€” seasonality, demand, early bird, last-minute, inventory rules * [Flexible Payments](https://wpyatra.com/features/flexible-payments/) β€” deposits and partial payments * [Scheduled Payments](https://wpyatra.com/features/scheduled-payments/) β€” instalment plans * [Advanced Discount](https://wpyatra.com/features/advanced-discount/) β€” group-style discounts alongside coupons * [Additional Services](https://wpyatra.com/features/additional-services/) β€” sell extras with the trip * [Email Automation](https://wpyatra.com/features/email-automation/) β€” multi-step sequences, audience filters, per-send delivery logs * [Abandoned Booking Recovery](https://wpyatra.com/features/abandoned-booking-recovery/) β€” recover incomplete bookings * [Mailchimp Integration](https://wpyatra.com/features/mailchimp/) β€” sync travelers + bookings to lists * [Facebook Pixel](https://wpyatra.com/features/facebook-pixel/) β€” server-side + browser events * [Google Analytics 4 Enhanced](https://wpyatra.com/features/google-analytics/) β€” booking funnel + revenue events * [Google Calendar sync](https://wpyatra.com/features/google-calendar/) β€” departures and bookings into Google Calendar * [Custom Landing Pages](https://wpyatra.com/features/custom-landing-pages/) β€” per-trip conversion-focused landing pages * [Dynamic Form Field](https://wpyatra.com/features/dynamic-form-field/) β€” drag-and-drop custom booking questions * [Trip Consent](https://wpyatra.com/features/trip-consent/) β€” digital waivers and signatures * **Premium payment gateways**: Stripe Β· Razorpay Β· Mollie Β· Paystack Β· Square Β· Authorize.Net Β· Bank Transfer **Growth β€” $149/yr (sale, regular $199)** Β· 1 site license Β· everything in Starter, plus * [AI Assistant](https://wpyatra.com/features/ai-assistant/) β€” generate itineraries, draft descriptions, suggest replies (bring your own OpenAI or Anthropic key) * [WhatsApp Notifications](https://wpyatra.com/features/whatsapp/) β€” booking confirmations, payment receipts and departure reminders over WhatsApp (Meta Cloud API) **Scale β€” from $349/yr (sale)** Β· 1-site $349/yr (regular $449) or 15-site $599/yr (regular $749) Β· everything in Growth, plus * [Channel Manager](https://wpyatra.com/features/channel-manager/) β€” sell on Viator + GetYourGuide from one WordPress dashboard. Signed webhooks, anti-overbooking locks, real-time inventory sync. * [White Label](https://wpyatra.com/features/white-label/) β€” rebrand the admin, emails, PDFs and frontend. Full agency theming. * [Team & Access](https://wpyatra.com/features/team-access/) β€” granular roles + capability-based access for multi-staff agencies. 8 built-in roles, custom role builder, magic-link invitations, time-windowed access for contractors, scope filtering (per-destination / per-trip), append-only audit log. Defense-in-depth: every action gated on the server, UI mirrors via cap-aware controls. * [Webhooks](https://wpyatra.com/features/webhooks/) β€” outbound HTTP delivery on booking / payment / customer events. HMAC-signed payloads, retry queue with exponential backoff, dead-letter queue, certificate pinning. Wire Yatra into Zapier, Make, n8n, or your own internal systems. **Lifetime plans** also available: Starter $499 Β· Growth $699 Β· Scale $1,299 (1 site) / $1,999 (15 sites) β€” pay once, own it forever. [See full plan comparison and pricing β†’](https://wpyatra.com/pricing/) = πŸ₯Š How Yatra compares = Considering Yatra against a SaaS booking platform or another WordPress travel plugin? We've written honest, side-by-side comparisons against each major alternative: * πŸ”„ **[Yatra vs Rezdy](https://wpyatra.com/yatra-vs-rezdy/)** β€” Sell on Viator + GetYourGuide without the $99–$499 / month Rezdy SaaS bill. Lifetime license Β· GPL Β· your data, your gateway. * πŸ”„ **[Yatra vs Bokun](https://wpyatra.com/yatra-vs-bokun/)** β€” Skip the per-OTA-booking fee Bokun charges (typically 2.5% per booking). Independent open-source alternative to Tripadvisor-owned Bokun. * πŸ”„ **[Yatra vs WP Travel Engine](https://wpyatra.com/yatra-vs-wp-travel-engine/)** β€” Same WordPress philosophy, modern architecture, broader Pro modules. Custom database tables for performance vs. WP Travel Engine's custom post types. Each page covers the feature matrix, pricing math, migration steps and FAQ β€” written without overpromising. Read the verdict, then [try Yatra Pro free](https://try.wpyatra.com/try-yatra-pro/) before you commit. = 🌐 Native integrations = Yatra ships with bring-your-own-credential integrations β€” no proxy, no markup, no per-event fees. Full directory: **[All integrations on wpyatra.com](https://wpyatra.com/integrations/)**. * **Payments**: PayPal Β· Pay Later Β· Stripe Β· Razorpay Β· Mollie Β· Paystack Β· Square Β· Authorize.Net Β· Bank Transfer * **OTAs**: Viator Β· GetYourGuide Β· Other OTAs (by request) * **Email & Messaging**: Mailchimp Β· WhatsApp Cloud API * **Analytics & Marketing**: Google Analytics 4 Β· Meta / Facebook Pixel * **Calendars & Scheduling**: Google Calendar * **AI Providers**: OpenAI Β· Anthropic Claude * **WordPress Ecosystem**: Gutenberg blocks (4 native) Β· Elementor (via Shortcode) Β· WooCommerce (coexistence) Β· Loco Translate = πŸ” Built-in travel SEO = Yatra is built to rank β€” your trips, destinations and activities are search-engine ready out of the box, with no extra SEO plugin required: * 🧱 **Schema.org structured data** β€” automatic structured markup for trips and listing pages so search engines can surface rich results for your tours. * 🏷️ **Meta titles, descriptions & Open Graph / Twitter cards** β€” per-trip and per-archive, with `{name}`-style tokens, for clean search snippets and shareable social previews. * πŸ—ΊοΈ **XML sitemap** β€” Yatra publishes one sitemap of every trip, destination, activity and category at `/yatra-sitemap.xml`, advertised in `robots.txt` and integrated automatically with **WordPress core, Yoast, Rank Math and All in One SEO** sitemaps. (Yatra stores content in fast custom tables, so this is what keeps it fully discoverable.) * πŸ”— **Clean, keyword-friendly permalinks** β€” `/trip/…`, `/destination/…`, `/activity/…` URL bases you control under Settings. * 🌍 **Translation-ready interface** β€” every label, button and email is translatable with standard `.po`/`.mo` files via **Loco Translate**, **WPML String Translation** or **Polylang** string translation. = 🧩 Blocks and shortcodes = Use the **block editor** or **classic shortcodes** to drop catalog widgets, search and account UI into any page. **Blocks** (search the inserter for "Yatra" or the block name): * **Trip** β€” block name `yatra/tour` (trip grid; the registered name stays `yatra/tour` for backward compatibility, but the inserter title and UI now read **Trip**). **Trip Settings** (layout, **Featured Priority** β€” restrict to *Featured*, *New*, or *Limited Time* picked on the trip form's **Categorization β†’ Featured Priority**) and **Filters**: each taxonomy (destinations, activities, trip categories, difficulty / fitness level) supports **Listing scope** β€” either **All published** (no ID filter saved) or **Only selected**, with **search plus checkboxes** to pick numeric classification IDs. * **Activity** β€” `yatra/activity`: same taxonomy picker pattern (All published vs search + IDs) in the sidebar; matches **`[yatra_activity]`** ID rules. * **Destination** β€” `yatra/destination`: same pattern; matches **`[yatra_destination]`** ID rules. * **Trip categories** β€” `yatra/trip-category` (same card layout as destinations; links use your trip category base from Settings). **Shortcodes** (all accept string values as in the plugin defaults β€” use `yes` / `no` or `0` / `1` where noted): * **`[yatra_trip]`** β€” Trip listing. Alias: **`[yatra_tour]`**. Filters: `destination`, `activity`, `category` accept comma-separated classification IDs. Optional: `order`, `featured_priority` (`featured` / `new` / `limited`), `per_page`, `difficulty`, `price_min`, `price_max`, `duration_min`, `duration_max`, `search`, `columns`, `show_pagination`, `title`. Pagination: `trip_page`. Examples: `[yatra_trip]`, `[yatra_trip destination="44" activity="12"]`, `[yatra_trip featured_priority="new" per_page="6"]`. * **`[yatra_activity]`** β€” Activity listing cards. * **`[yatra_destination]`** β€” Destination showcase. * **`[yatra_trip_category]`** β€” Trip category cards. * **`[yatra_search]`** β€” Advanced trip search form. Per-field visibility attributes β€” `keyword`, `destination`, `activities`, `duration`, `budget` β€” each `yes` / `no`. Omit one to inherit its **Settings β†’ Search & Listing** toggle; pass a value to force it on/off for that placement. Example: `[yatra_search budget="no" duration="no"]`. (The built-in listing page sets these automatically from your settings.) * **`[yatra_login]`** β€” Customer login form. * **`[yatra_my_account]`** β€” Account dashboard for logged-in users. * **`[yatra_discount_and_deals]`** β€” Discounted trips. **Empty-term filtering (`hide_empty`):** `[yatra_destination]`, `[yatra_activity]` and `[yatra_trip_category]` accept `hide_empty="yes"` to skip taxonomy terms that have zero published trips. Opt-in (default `no`). **Note:** If you're migrating from an older build, `[yatra_cart]`, `[yatra_checkout]` and `[yatra_mini_cart]` are no longer registered β€” checkout and the booking flow now use Yatra's own front-end routes and templates. See **[docs.wpyatra.com](https://docs.wpyatra.com)** for full shortcode reference, URLs and page setup. = 🎨 Compatible WordPress travel themes = Yatra works with most well-coded block themes, classic themes and major page builders. **Recommended themes** (optional β€” Yatra works with any theme): * 🧳 **[Resa β€” the official Yatra travel theme](https://wpyatra.com/best-wordpress-travel-theme/)** β€” Lighthouse-fast, mobile-first, Gutenberg + WooCommerce ready, free on the WordPress.org theme directory. Trip card grid, departure widgets, traveler-account dashboard all pre-styled for Yatra. * 🧱 **[Blocksy](https://wordpress.org/themes/blocksy/?ref=yatrapluginorg)** β€” modern block theme * ⚑ **[Kadence](https://wordpress.org/themes/kadence/?ref=yatrapluginorg)** β€” fast, flexible theme = πŸ”— Quick links = * 🏠 **[wpyatra.com](https://wpyatra.com/)** β€” official site * πŸ’³ **[Pricing](https://wpyatra.com/pricing/)** β€” Starter Β· Growth Β· Scale Β· Lifetime plans * ✨ **[All features](https://wpyatra.com/features/)** β€” full Free + Pro capability list * 🌐 **[Integrations](https://wpyatra.com/integrations/)** β€” every native partner * πŸ₯Š **[Yatra vs alternatives](https://wpyatra.com/yatra-vs-rezdy/)** β€” head-to-head comparisons * 🎨 **[WordPress travel theme (Resa)](https://wpyatra.com/best-wordpress-travel-theme/)** β€” recommended pairing * πŸ“– **[Documentation](https://docs.wpyatra.com/)** β€” installation, blocks, shortcodes, operations * 🎯 **[Live demo](https://demo.wpyatra.com/)** β€” see Yatra on a real WordPress demo * πŸ†˜ **[Support / contact](https://mantrabrain.com/contact)** β€” help and commercial support routing = πŸ’™ Join the community = * ⭐ **[Rate Yatra five stars](https://wordpress.org/support/plugin/yatra/reviews/?filter=5)** β€” helps other tour operators find the plugin * πŸ’¬ **[Facebook community](https://www.facebook.com/groups/yatrawordpressplugin)** β€” connect with other Yatra users * πŸ“§ **[Email support](mailto:mantrabrain@gmail.com)** β€” direct email for product questions * πŸ› **[GitHub β€” issues & contributions](https://github.com/MantraBrain/yatra)** β€” bug reports and pull requests = πŸš€ Try Yatra risk-free = * πŸ§ͺ **[Try the free Yatra plugin in WordPress Playground](https://try.new/plugins/yatra)** β€” spin up a temporary WordPress site with the free Yatra plugin pre-installed. No local setup, no signup, no credit card. * 🎁 **[Try Yatra Pro free](https://try.wpyatra.com/try-yatra-pro/)** β€” full Pro trial environment with every module enabled. No credit card required. * πŸ’° **14-day refund** on every paid Yatra Pro plan β€” see the [pricing page](https://wpyatra.com/pricing/) for the refund window terms. == Installation == πŸ› οΈ **Quick setup** 1. Install and activate **Yatra** from this screen or upload the ZIP under Plugins β†’ Add New β†’ Upload. 2. Complete the setup wizard (currency, basics, permalinks as prompted). 3. Add destinations and activities, then create your first trip under **Yatra β†’ Trips**. 4. Configure **PayPal** and/or **Pay Later** under Yatra payment settings (free). Add **[Yatra Pro](https://wpyatra.com/pricing/)** when you need card gateways or [Pro modules](https://wpyatra.com/features/). 5. Place the booking experience on your site using Yatra templates, **blocks**, or **shortcodes** (see **🧩 Blocks and shortcodes** in the description above and [docs.wpyatra.com](https://docs.wpyatra.com)). == Frequently Asked Questions == = What is the best WordPress travel booking plugin for tour operators? = Yatra is the **WordPress travel booking plugin** built around the operational reality of selling tours β€” scheduled departures, capacity, traveler categories, OTA distribution, dynamic pricing and deposit handling. The free plugin covers the entire booking lifecycle (trips, availability, customer accounts, reviews, reports, PDFs, transactional emails, PayPal + Pay Later); [Yatra Pro](https://wpyatra.com/pricing/) adds 20 modules across Starter, Growth and Scale tiers. Read the [head-to-head comparison vs WP Travel Engine](https://wpyatra.com/yatra-vs-wp-travel-engine/) or [vs Rezdy SaaS](https://wpyatra.com/yatra-vs-rezdy/). = Is Yatra free? = Yes. The plugin on WordPress.org is free and includes the core booking stack for many tour operators. **[Yatra Pro](https://wpyatra.com/pricing/)** is a paid upgrade for [premium gateways](https://wpyatra.com/pricing/) and [20 Pro modules](https://wpyatra.com/features/). = Do I need code skills to use Yatra? = No for day-to-day operation. Developers can override templates and use hooks for custom workflows. = Which payments are free vs Pro? = **Free:** [PayPal](https://wpyatra.com/features/paypal/) and [Pay Later](https://wpyatra.com/features/pay-later/). **[Pro](https://wpyatra.com/pricing/):** Stripe, Razorpay, Mollie, Paystack, Square, Authorize.Net, bank transfer (as supported for your account and region). = Can I take bookings without charging a card immediately? = Yes. Use **Pay Later** for offline confirmation, invoices, or pay-on-arrival flows. = Can I distribute my tours on Viator, GetYourGuide and other OTAs? = Yes β€” the [Channel Manager module](https://wpyatra.com/features/channel-manager/) (Scale tier) connects Yatra directly to **Viator** and **GetYourGuide** via their official APIs. Signed webhooks pull bookings back in real time; anti-overbooking locks prevent two channels selling the same seat. Other OTAs (Klook, TripAdvisor Experiences, Booking.com Experiences, Airbnb Experiences) are available by request. = Does Yatra work with WooCommerce? = Yes. Yatra runs alongside WooCommerce on the same WordPress site β€” Yatra stores trips in its own custom tables while WooCommerce uses WordPress orders. Both coexist without data conflicts. Many operators use Yatra for tours and WooCommerce for merchandise or gift cards. = Does Yatra support multilingual and multi-currency travel sites? = **Interface β€” yes.** Yatra is fully translation-ready: every label, button and email translates via standard POT / `.po` / `.mo` files using **Loco Translate**, **WPML String Translation** or **Polylang** string translation. RTL stylesheets ship in the [Resa travel theme](https://wpyatra.com/best-wordpress-travel-theme/). **Trip content β€” important to know.** Yatra stores trips and destinations in its own fast custom tables (not WordPress posts), so WPML and Polylang β€” which translate posts and taxonomies β€” cannot translate the trip *content* itself. For a fully multilingual catalogue today, run one site per language (WordPress Multisite, a subsite per language). Native per-language content translation is on our roadmap. **Currency.** Set your default currency in Yatra β†’ Settings (site-level). = Does Yatra work with my theme? = It works with most modern WordPress themes. Yatra ships front-end templates; your theme controls global layout and typography. For the smoothest pairing, see **[Resa](https://wpyatra.com/best-wordpress-travel-theme/)** β€” the dedicated Yatra travel theme by MantraBrain, free on WordPress.org. = Are invoices and vouchers only in Pro? = Travelers can access invoices, vouchers and itineraries from the account area on the free plugin when your site is configured for it. [Pro](https://wpyatra.com/pricing/) expands payment choices and business modules β€” it does not remove core documents by default. = How do saved trips / wishlist work? = Saved trips appear when **[Yatra Pro](https://wpyatra.com/pricing/)** is active and **wishlist** is enabled in Yatra settings. = Is Yatra GDPR-friendly? = Use WordPress privacy tools together with Yatra: export or delete user-related data as required by your policy. Bookings and customer data live in your own WordPress database β€” Yatra does not ship data to an external SaaS. Payment data is handled by your chosen gateways under their terms. = Where is documentation? = See **[docs.wpyatra.com](https://docs.wpyatra.com)** and **[wpyatra.com](https://wpyatra.com/)** for features, **[Pro](https://wpyatra.com/pricing/)** and updates. = Where are shortcodes and blocks documented? = See **🧩 Blocks and shortcodes** in the description above. Full walkthroughs (pages, permalinks, checkout URLs) are in the documentation. = Does Yatra provide cart or checkout shortcodes? = **No.** Checkout and the booking flow run on Yatra's own front-end routes and templates β€” drop them on any page via the plugin's pretty permalinks (see the Permalink settings). Catalog, search, login and account still have shortcodes and blocks as listed in the description. = What does Yatra Pro cost? = Pricing starts at **$99/yr** (Starter, sale) and goes up to **$599/yr** (Scale 15-site, sale). Lifetime plans available from **$499** one-time. Every Pro tier includes a **14-day refund** window. See the **[full pricing breakdown](https://wpyatra.com/pricing/)**. == Screenshots == πŸ“· **Screenshots** (as shown on WordPress.org) 1. Yatra dashboard inside WordPress β€” bookings, revenue and quick access to daily tasks 2. Trip Creation Process β€” content, pricing, media and settings in one workspace 3. Trip list & All listing page β€” search, filters and status at a glance 4. Trip Booking Process β€” hero, itinerary and book flow 5. Global Settings - Payment Gateways etc. 6. Traveler account β€” bookings, payments and documents == Changelog == The two most recent releases are listed below. For the complete version history, see [changelog.txt](https://plugins.svn.wordpress.org/yatra/trunk/changelog.txt). = 3.0.11 β€” 20 July 2026 = * **Departures now honour your recurring availability rule:** a tour with a 9-seat vehicle but a rule allowing only **1 booking per date** showed 9 under Departures. Overlapping rules were resolved in an arbitrary order (every rule carries the same priority), so the wrong one could win and the display fell back to the tour's passenger capacity. Rule matching is now deterministic β€” the most recently created rule wins a tie β€” and rules created in the editor are read correctly everywhere. * **Departures can be deleted again:** deletion always failed with *"Manual departures or departures with bookings cannot be deleted"*, even for an empty, auto-created departure. The check required an internal value the plugin never actually stores, so **no** departure was ever deletable. A departure can now be removed once no bookings remain β€” checked against the real booking records rather than a counter that can drift β€” and departures with bookings are still protected. * **Dashboard occupancy is no longer 0%:** the dashboard counted only departures inside the selected date range, which excluded the upcoming departures the figure is about, while individual trip pages calculated it correctly. * **Guest selector on sold-out dates:** the traveller selector stayed usable on a fully booked departure and allowed more guests than the tour's capacity. A sold-out date now starts at 0 with the controls disabled, and the maximum always reflects the seats actually left. * **Bulk actions no longer report the wrong thing:** choosing departures and pressing Apply without picking an action said *"Please select departures and a bulk action first"*, pointing at the selection rather than the missing action. Each message now names the input that is actually missing (also fixed on Rules, Items, Item Types, Itinerary and Email Templates). * **Star ratings on the booking confirmation:** half stars never appeared, so a 4.5 rating rendered as 4 solid stars next to the text "4.5". Trip pages and the confirmation page now round identically. * **Administrators can change a customer's email address:** editable from the customer screen. If the customer can sign in, a confirmation link is sent to the new address and the change applies once confirmed (matching WordPress); customers without an account are updated immediately. * **Invoices show full addresses:** the customer's postal address is included, and a multi-line company address keeps its line breaks instead of collapsing onto one line. * **Invoices respect your number and currency settings:** amounts previously always printed as `$1,234.56`, ignoring the configured decimal separator, thousands separator, decimal places and symbol position. Vouchers and itineraries were corrected too. * **Invoices reflect the payment status:** after an offline payment the invoice stayed *Payment Pending* with nothing paid and the full amount due. Marking a booking paid now settles the amounts and records the payment, so the invoice reads Paid with a zero balance. * **Customised admin emails are used again:** when a payment arrived the customer received their customised template but the administrator still got the built-in default. Every core email type can now be overridden. * **Bank transfer details on invoices are translatable:** they reuse the same translations as the booking confirmation page, so translating once covers both. * **Bank details on the booking confirmation are aligned** with every other row. * **Payment status can be changed from the bookings list:** an Actions entry for Paid, Partially Paid, Pending and Refunded β€” useful for bank transfers and other payments received by hand. Marking a booking paid also records it in Payments, so a later payment cannot overwrite it. * **Always-BCC and per-template CC/BCC:** archive or monitor outgoing mail with a site-wide blind copy, plus optional CC/BCC on any individual template. Nothing is copied until you enter an address. * **Country flags in every country selector**, including a search box, on checkout and in the admin. * **Invoice, voucher and itinerary branding:** the White Label module can now supply a company logo and header colour for generated documents. * **Separate "Partial Payment Received" email:** an optional template with its own wording and remaining-balance details, used only when deposits or partial payments are enabled and the template is switched on. * Fixed several smaller issues: hidden PHP notices on the departures and customers screens, hardcoded `$` in discount labels and deposit messages, a To address with several recipients being silently mangled, team invitations bypassing SMTP settings, and an admin bundle that could never be cached by the browser. = 3.0.10 β€” 15 July 2026 = * **Tour review structured data (SEO) β€” fixed the Google Search Console errors:** GSC reported *"Invalid object type for field <parent_node>"*, *"Missing field author"* and *"Missing field itemReviewed"* on tour pages. The cause was the review Microdata β€” the AggregateRating was nested in a `TouristTrip` (a type Google doesn't support for review snippets), and the whole reviews section was marked as one `Review` with no author/itemReviewed. Microdata can't express this correctly here (the rating is in the hero, the reviews are a separate section, so they can't share one valid parent node), so review structured data is now emitted as **JSON-LD** β€” Google's recommended format β€” centrally for every tour page: a `Product` with the tour name, `aggregateRating`, and a `review[]` array where each review carries `author` (Person), `reviewRating`, `reviewBody`, `datePublished` and the review title. The broken Microdata was removed. Tours without reviews keep their previous schema (no incomplete-Product markup). The JSON-LD is `\u`-escaped so review text can never break out of the `