{"id":103726,"date":"2019-05-10T06:40:14","date_gmt":"2019-05-10T06:40:14","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/yatra\/"},"modified":"2026-05-25T05:02:37","modified_gmt":"2026-05-25T05:02:37","slug":"yatra","status":"publish","type":"plugin","link":"https:\/\/rhg.wordpress.org\/plugins\/yatra\/","author":16710861,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.0.5.1","stable_tag":"3.0.5.1","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Yatra - Travel Booking & Management","header_author":"MantraBrain","header_description":"Yatra - WordPress Travel & Tour Solution","assets_banners_color":"c8dfdd","last_updated":"2026-05-25 05:02:37","external_support_url":"https:\/\/wpyatra.com?ref=wordpress.org","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpyatra.com\/","header_author_uri":"https:\/\/mantrabrain.com\/","rating":4.6,"author_block_rating":0,"active_installs":700,"downloads":57977,"num_ratings":22,"support_threads":1,"support_threads_resolved":1,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"mantrabrain","date":"2019-05-10 07:04:54"},"2.0.0":{"tag":"2.0.0","author":"mantrabrain","date":"2019-07-15 13:28:48"},"2.0.1":{"tag":"2.0.1","author":"mantrabrain","date":"2019-07-21 12:43:21"},"2.0.10":{"tag":"2.0.10","author":"mantrabrain","date":"2021-09-21 09:41:42"},"2.0.11":{"tag":"2.0.11","author":"mantrabrain","date":"2021-09-28 12:18:32"},"2.0.12":{"tag":"2.0.12","author":"mantrabrain","date":"2021-10-05 10:52:10"},"2.0.13":{"tag":"2.0.13","author":"mantrabrain","date":"2021-10-05 11:04:21"},"2.0.14":{"tag":"2.0.14","author":"mantrabrain","date":"2021-10-05 11:59:33"},"2.0.15":{"tag":"2.0.15","author":"mantrabrain","date":"2021-10-08 10:56:00"},"2.0.2":{"tag":"2.0.2","author":"mantrabrain","date":"2019-07-21 12:43:21"},"2.0.3":{"tag":"2.0.3","author":"mantrabrain","date":"2019-07-25 05:03:40"},"2.0.4":{"tag":"2.0.4","author":"mantrabrain","date":"2019-08-18 09:09:39"},"2.0.5":{"tag":"2.0.5","author":"mantrabrain","date":"2019-09-09 05:59:48"},"2.0.6":{"tag":"2.0.6","author":"mantrabrain","date":"2019-11-02 17:32:47"},"2.0.7":{"tag":"2.0.7","author":"mantrabrain","date":"2020-02-02 17:51:02"},"2.0.8":{"tag":"2.0.8","author":"mantrabrain","date":"2020-04-23 16:30:28"},"2.0.9":{"tag":"2.0.9","author":"mantrabrain","date":"2021-09-02 09:23:52"},"2.1.0":{"tag":"2.1.0","author":"mantrabrain","date":"2021-10-31 11:19:54"},"2.1.1":{"tag":"2.1.1","author":"mantrabrain","date":"2021-11-02 08:29:45"},"2.1.10":{"tag":"2.1.10","author":"mantrabrain","date":"2022-05-29 11:44:11"},"2.1.11":{"tag":"2.1.11","author":"mantrabrain","date":"2022-08-07 11:56:19"},"2.1.12":{"tag":"2.1.12","author":"mantrabrain","date":"2022-11-10 16:58:09"},"2.1.13":{"tag":"2.1.13","author":"mantrabrain","date":"2023-02-19 07:51:06"},"2.1.14":{"tag":"2.1.14","author":"mantrabrain","date":"2023-04-22 05:38:21"},"2.1.15":{"tag":"2.1.15","author":"mantrabrain","date":"2023-05-31 04:58:33"},"2.1.16":{"tag":"2.1.16","author":"mantrabrain","date":"2023-10-07 06:00:56"},"2.1.2":{"tag":"2.1.2","author":"mantrabrain","date":"2021-11-09 07:51:56"},"2.1.3":{"tag":"2.1.3","author":"mantrabrain","date":"2021-11-23 09:17:39"},"2.1.4":{"tag":"2.1.4","author":"mantrabrain","date":"2021-12-02 09:10:09"},"2.1.5":{"tag":"2.1.5","author":"mantrabrain","date":"2021-12-21 12:03:17"},"2.1.5-beta":{"tag":"2.1.5-beta","author":"mantrabrain","date":"2021-12-15 14:05:17"},"2.1.6":{"tag":"2.1.6","author":"mantrabrain","date":"2022-01-03 12:28:29"},"2.1.7":{"tag":"2.1.7","author":"mantrabrain","date":"2022-01-09 11:15:23"},"2.1.8":{"tag":"2.1.8","author":"mantrabrain","date":"2022-02-22 09:46:54"},"2.1.9":{"tag":"2.1.9","author":"mantrabrain","date":"2022-04-08 11:24:39"},"2.2":{"tag":"2.2","author":"mantrabrain","date":"2023-12-16 13:44:44"},"2.2.1":{"tag":"2.2.1","author":"mantrabrain","date":"2024-02-17 05:24:41"},"2.2.10":{"tag":"2.2.10","author":"mantrabrain","date":"2024-11-07 13:17:46"},"2.2.11":{"tag":"2.2.11","author":"mantrabrain","date":"2025-08-09 14:34:49"},"2.2.12":{"tag":"2.2.12","author":"mantrabrain","date":"2025-08-21 11:02:02"},"2.2.13":{"tag":"2.2.13","author":"mantrabrain","date":"2025-08-30 08:38:16"},"2.2.2":{"tag":"2.2.2","author":"mantrabrain","date":"2024-03-21 15:28:07"},"2.2.3":{"tag":"2.2.3","author":"mantrabrain","date":"2024-04-29 15:15:13"},"2.2.4":{"tag":"2.2.4","author":"mantrabrain","date":"2024-05-04 12:23:39"},"2.2.5":{"tag":"2.2.5","author":"mantrabrain","date":"2024-06-02 13:39:05"},"2.2.6":{"tag":"2.2.6","author":"mantrabrain","date":"2024-07-03 02:54:14"},"2.2.7":{"tag":"2.2.7","author":"mantrabrain","date":"2024-07-06 03:52:06"},"2.2.8":{"tag":"2.2.8","author":"mantrabrain","date":"2024-07-13 14:45:51"},"2.2.9":{"tag":"2.2.9","author":"mantrabrain","date":"2024-08-08 15:10:35"},"2.3.0":{"tag":"2.3.0","author":"mantrabrain","date":"2025-09-05 12:53:54"},"2.3.1":{"tag":"2.3.1","author":"mantrabrain","date":"2025-09-17 06:47:10"},"2.3.2":{"tag":"2.3.2","author":"mantrabrain","date":"2025-09-17 07:09:08"},"2.3.3":{"tag":"2.3.3","author":"mantrabrain","date":"2025-12-21 13:50:06"},"2.3.4":{"tag":"2.3.4","author":"mantrabrain","date":"2026-03-23 11:00:33"},"3.0.0":{"tag":"3.0.0","author":"mantrabrain","date":"2026-04-14 03:47:23"},"3.0.1":{"tag":"3.0.1","author":"mantrabrain","date":"2026-04-14 03:59:01"},"3.0.2":{"tag":"3.0.2","author":"mantrabrain","date":"2026-04-14 04:15:21"},"3.0.2.1":{"tag":"3.0.2.1","author":"mantrabrain","date":"2026-04-14 04:27:48"},"3.0.2.2":{"tag":"3.0.2.2","author":"mantrabrain","date":"2026-04-14 04:35:36"},"3.0.2.3":{"tag":"3.0.2.3","author":"mantrabrain","date":"2026-04-14 05:32:05"},"3.0.2.4":{"tag":"3.0.2.4","author":"mantrabrain","date":"2026-04-14 05:58:00"},"3.0.2.5":{"tag":"3.0.2.5","author":"mantrabrain","date":"2026-04-16 07:54:48"},"3.0.2.6":{"tag":"3.0.2.6","author":"mantrabrain","date":"2026-04-20 15:21:26"},"3.0.2.7":{"tag":"3.0.2.7","author":"mantrabrain","date":"2026-04-21 12:15:49"},"3.0.2.8":{"tag":"3.0.2.8","author":"mantrabrain","date":"2026-04-21 12:58:05"},"3.0.2.9":{"tag":"3.0.2.9","author":"mantrabrain","date":"2026-04-27 10:22:12"},"3.0.3":{"tag":"3.0.3","author":"mantrabrain","date":"2026-05-04 10:23:44"},"3.0.4":{"tag":"3.0.4","author":"mantrabrain","date":"2026-05-12 14:25:17"},"3.0.5":{"tag":"3.0.5","author":"mantrabrain","date":"2026-05-25 04:28:24"},"3.0.5.1":{"tag":"3.0.5.1","author":"mantrabrain","date":"2026-05-25 05:02:37"}},"upgrade_notice":{"3.0.4":"<p>Release <strong>3.0.4<\/strong> \u2014 Unicode \/ Cyrillic slug support end-to-end, pricing single-source-of-truth (sidebar = payment-gateway amount), pricing summary cleanup, services dedupe fix, Loco script-translation fallback so React surfaces (account page, admin) pick up <code>.json<\/code> translations from Loco&#039;s workspace, mobile sticky-bar JS extraction, FSE template support, and CI pipeline fixes. Safe to update from 3.0.3.<\/p>","3.0.3":"<p>Release <strong>3.0.3<\/strong> (<code>[yatra_trip_category]<\/code> shortcode, versioned upgrades, discounts, single-trip and admin polish). Safe to update from 3.0.2.x.<\/p>","3.0.2.5":"<p>Maintenance release (setup wizard autosave, admin notices). Safe to update from 3.0.2.4.<\/p>","3.0.2.4":"<p>Bugfix release (trip permanent-delete REST endpoint, bulk trip confirmation UX). Safe to update from 3.0.2.3.<\/p>","3.0.2.3":"<p>Maintenance update (admin UX, REST license route, trip list stability in Departures\/Availability). Safe to update from 3.0.2.2.<\/p>","3.0.2.2":"<p>Patch release. Safe to update from 3.0.2.1.<\/p>","3.0.2.1":"<p>Readme update (Pro feature links to pricing). Safe to update from 3.0.2.<\/p>","3.0.2":"<p>Readme \/ documentation listing update only. Safe to update from 3.0.1.<\/p>","3.0.1":"<p>Maintenance update (banner, WordPress.org readme\/assets, and small fixes). Safe to update from 3.0.0.<\/p>","3.0.0":"<p>Major release. Back up your site and database before upgrading from 2.x. Update free Yatra from WordPress.org first; then align <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">Yatra Pro<\/a><\/strong> with a version compatible with 3.0.<\/p>"},"ratings":{"1":2,"2":0,"3":0,"4":0,"5":20},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3505701,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3505704,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3505714,"resolution":"772x250","location":"assets","locale":"","width":722,"height":250}},"assets_blueprints":{},"all_blocks":{"yatra\/tour":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"yatra\/tour","title":"Trip","category":"yatra","icon":"palmtree","description":"Display trip listings with customizable options","keywords":["tour","trip","trips","tours","travel","yatra"],"textdomain":"yatra","attributes":{"order":{"type":"string","default":"desc"},"featured":{"type":"boolean","default":false},"featured_priority":{"type":"string","default":"","enum":["","featured","new","limited"]},"per_page":{"type":"number","default":10},"columns":{"type":"number","default":3},"title":{"type":"string","default":"Our Trips"},"show_pagination":{"type":"boolean","default":true},"destinationIds":{"type":"array","default":[]},"activityIds":{"type":"array","default":[]},"categoryIds":{"type":"array","default":[]},"difficultyIds":{"type":"array","default":[]},"price_min":{"type":"string","default":""},"price_max":{"type":"string","default":""},"duration_min":{"type":"string","default":""},"duration_max":{"type":"string","default":""},"search":{"type":"string","default":""}},"supports":{"html":false,"inserter":true,"align":["wide","full"]},"editorScript":"yatra-tour-block-editor"},"yatra\/activity":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"yatra\/activity","title":"Activity","category":"yatra","icon":"universal-access","description":"Display activity listings with customizable options","keywords":["activity","adventure","yatra"],"textdomain":"yatra","attributes":{"order":{"type":"string","default":"asc"},"columns":{"type":"number","default":3},"per_page":{"type":"number","default":10},"title":{"type":"string","default":"Activity Listings"},"show_pagination":{"type":"boolean","default":true},"activityIds":{"type":"array","default":[]},"hide_empty":{"type":"boolean","default":false,"description":"When on, activities with zero published trips are skipped. Off by default to preserve the historical 'show everything' behavior."},"show_trip_count":{"type":"boolean","default":true},"show_description":{"type":"boolean","default":true},"show_image":{"type":"boolean","default":true}},"supports":{"html":false,"inserter":true,"align":["wide","full"]},"editorScript":"yatra-activity-block-editor"},"yatra\/destination":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"yatra\/destination","title":"Destination","category":"yatra","icon":"location-alt","description":"Display destination listings with customizable options","keywords":["destination","place","location","yatra"],"textdomain":"yatra","attributes":{"order":{"type":"string","default":"asc"},"columns":{"type":"number","default":3},"per_page":{"type":"number","default":10},"title":{"type":"string","default":"Destination Showcase"},"show_pagination":{"type":"boolean","default":true},"destinationIds":{"type":"array","default":[]},"hide_empty":{"type":"boolean","default":false,"description":"When on, destinations with zero published trips are skipped. Off by default to preserve the historical 'show everything' behavior."},"featured_only":{"type":"boolean","default":false},"show_trip_count":{"type":"boolean","default":true},"show_description":{"type":"boolean","default":true},"show_image":{"type":"boolean","default":true}},"supports":{"html":false,"inserter":true,"align":["wide","full"]},"editorScript":"yatra-destination-block-editor"},"yatra\/trip-category":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"yatra\/trip-category","title":"Trip categories","category":"yatra","icon":"category","description":"Display trip category cards with trip counts and pricing (same layout as destinations).","keywords":["category","trip","taxonomy","yatra"],"textdomain":"yatra","attributes":{"align":{"type":"string","default":""},"order":{"type":"string","default":"desc"},"columns":{"type":"number","default":3},"per_page":{"type":"number","default":10},"title":{"type":"string","default":"Trip Categories"},"show_pagination":{"type":"boolean","default":true},"categoryIds":{"type":"array","default":[]},"show_trip_count":{"type":"boolean","default":true},"show_description":{"type":"boolean","default":true},"show_image":{"type":"boolean","default":true},"hide_empty":{"type":"boolean","default":false},"featured_only":{"type":"boolean","default":false}},"supports":{"html":false,"inserter":true,"align":["wide","full"]},"editorScript":"yatra-trip-category-block-editor"}},"tagged_versions":["1.0.0","2.0.0","2.0.1","2.0.10","2.0.11","2.0.12","2.0.13","2.0.14","2.0.15","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8","2.0.9","2.1.0","2.1.1","2.1.10","2.1.11","2.1.12","2.1.13","2.1.14","2.1.15","2.1.16","2.1.2","2.1.3","2.1.4","2.1.5","2.1.5-beta","2.1.6","2.1.7","2.1.8","2.1.9","2.2","2.2.1","2.2.10","2.2.11","2.2.12","2.2.13","2.2.2","2.2.3","2.2.4","2.2.5","2.2.6","2.2.7","2.2.8","2.2.9","2.3.0","2.3.1","2.3.2","2.3.3","2.3.4","3.0.0","3.0.1","3.0.2","3.0.2.1","3.0.2.2","3.0.2.3","3.0.2.4","3.0.2.5","3.0.2.6","3.0.2.7","3.0.2.8","3.0.2.9","3.0.3","3.0.4","3.0.5","3.0.5.1"],"block_files":[],"assets_screenshots":{"screenshot-1.gif":{"filename":"screenshot-1.gif","revision":3507743,"resolution":"1","location":"assets","locale":"","width":1280,"height":595},"screenshot-4.gif":{"filename":"screenshot-4.gif","revision":3505701,"resolution":"4","location":"assets","locale":"","width":1280,"height":592},"screenshot-6.gif":{"filename":"screenshot-6.gif","revision":3505701,"resolution":"6","location":"assets","locale":"","width":1280,"height":647}},"screenshots":{"1":"Yatra dashboard inside WordPress \u2014 bookings, revenue and quick access to daily tasks","2":"Trip Creation Process \u2014 content, pricing, media and settings in one workspace","3":"Trip list &amp; All listing page \u2014 search, filters and status at a glance","4":"Trip Booking Process \u2014 hero, itinerary and book flow","5":"Global Settings - Payment Gateways etc.","6":"Traveler account \u2014 bookings, payments and documents"}},"plugin_section":[],"plugin_tags":[149455,17228,249,150312,75614],"plugin_category":[39],"plugin_contributors":[166300],"plugin_business_model":[216238],"class_list":["post-103726","plugin","type-plugin","status-publish","hentry","plugin_tags-tour-booking","plugin_tags-tour-operator","plugin_tags-travel","plugin_tags-travel-agency","plugin_tags-travel-booking","plugin_category-business","plugin_contributors-mantrabrain","plugin_business_model-commercial","plugin_committers-mantrabrain","plugin_committers-ughimire1"],"banners":{"banner":"https:\/\/ps.w.org\/yatra\/assets\/banner-772x250.png?rev=3505714","banner_2x":"https:\/\/ps.w.org\/yatra\/assets\/banner-1544x500.png?rev=3505704","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/yatra\/assets\/icon-128x128.png?rev=3505701","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/yatra\/assets\/screenshot-1.gif?rev=3507743","caption":"Yatra dashboard inside WordPress \u2014 bookings, revenue and quick access to daily tasks"},{"src":"https:\/\/ps.w.org\/yatra\/assets\/screenshot-4.gif?rev=3505701","caption":"Trip Booking Process \u2014 hero, itinerary and book flow"},{"src":"https:\/\/ps.w.org\/yatra\/assets\/screenshot-6.gif?rev=3505701","caption":"Traveler account \u2014 bookings, payments and documents"}],"raw_content":"<!--section=description-->\n<p><strong>\u2708\ufe0f Yatra<\/strong> is the <strong>WordPress travel booking plugin<\/strong> built for <strong>tour operators, activity providers, travel agencies and adventure businesses<\/strong> that need real trip inventory \u2014 not a generic shop. The free version is a full booking office: trips, availability, checkout, customer records, transactional emails and a customer account area. <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">Yatra Pro<\/a><\/strong> unlocks <a href=\"https:\/\/wpyatra.com\/pricing\/\">premium payment gateways<\/a> plus a suite of <a href=\"https:\/\/wpyatra.com\/features\/\">20 Pro modules<\/a> you switch on as your business grows \u2014 from <a href=\"https:\/\/wpyatra.com\/features\/channel-manager\/\">Channel Manager (Viator + GetYourGuide)<\/a> to <a href=\"https:\/\/wpyatra.com\/features\/ai-assistant\/\">AI Assistant<\/a>, <a href=\"https:\/\/wpyatra.com\/features\/white-label\/\">White Label<\/a> and <a href=\"https:\/\/wpyatra.com\/features\/whatsapp\/\">WhatsApp Notifications<\/a>.<\/p>\n\n<p><strong>Official site:<\/strong> \ud83c\udf10 <a href=\"https:\/\/wpyatra.com\/\">wpyatra.com<\/a> \u00b7 \ud83d\udcd6 <a href=\"https:\/\/docs.wpyatra.com\">docs.wpyatra.com<\/a> \u00b7 \ud83d\udcb3 <a href=\"https:\/\/wpyatra.com\/pricing\/\">Pricing<\/a> \u00b7 \u2728 <a href=\"https:\/\/wpyatra.com\/features\/\">All features<\/a> \u00b7 \ud83c\udfaf <a href=\"https:\/\/demo.wpyatra.com\/\">Live demo<\/a> \u00b7 \ud83d\udcac <a href=\"https:\/\/wordpress.org\/support\/plugin\/yatra\/\">Support forum<\/a><\/p>\n\n<h4>\ud83c\udfac See Yatra in action<\/h4>\n\n<p>\ud83c\udfa5 Watch the Yatra walkthrough on YouTube \u2014 trips, bookings, checkout, and traveler accounts in under five minutes. More tutorials on the <strong><a href=\"https:\/\/www.youtube.com\/@MantraBrain\">MantraBrain YouTube channel<\/a><\/strong>.<\/p>\n\n<pre><code>[youtube https:\/\/www.youtube.com\/watch?v=cHmC-x7y0TQ]\n<\/code><\/pre>\n\n<h4>\u2708\ufe0f Why tour operators pick Yatra<\/h4>\n\n<ul>\n<li>\ud83d\uddfa\ufe0f <strong>Travel-first data model<\/strong> \u2014 Departures, capacity, traveler types and itineraries match how tours are actually sold, not how an e-commerce shop sells products.<\/li>\n<li>\ud83e\udded <strong>One admin workspace<\/strong> \u2014 Modern Yatra dashboard inside wp-admin; less tab-hopping than bolting travel onto a generic commerce stack.<\/li>\n<li>\u2696\ufe0f <strong>Honest Free vs <a href=\"https:\/\/wpyatra.com\/pricing\/\">Pro<\/a><\/strong> \u2014 Core booking, CRM-style records, reviews and PayPal \/ Pay Later are in the free plugin. Card gateways and advanced modules are in <a href=\"https:\/\/wpyatra.com\/pricing\/\">Pro<\/a> \u2014 no surprise paywalls on basics.<\/li>\n<li>\ud83d\udd12 <strong>Your site, your data<\/strong> \u2014 Bookings and customer data stay in your WordPress database; payments go through the gateways you configure. No proxy, no markup, no per-booking fee.<\/li>\n<li>\u2b50 <strong>700+ active installs \u00b7 \u2605 4.6 \/ 5 on WordPress.org<\/strong> \u2014 Active development since 2018, weekly updates.<\/li>\n<\/ul>\n\n<h4>\ud83c\udf81 What you get in the free Yatra plugin<\/h4>\n\n<p><strong>Trips and catalog (11 free features)<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/wpyatra.com\/features\/trips\/\">Trips &amp; Itineraries<\/a> \u2014 unlimited trips with rich descriptions, gallery, difficulty, duration, meeting points, included \/ excluded lists, day-by-day itinerary builder, per-trip FAQs and custom attributes<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/departures\/\">Departures &amp; Availability<\/a> \u2014 scheduled departures, capacity, recurring availability rules<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/customer-accounts\/\">Customer Accounts<\/a> \u2014 booking history, payments, profile, and document access (invoices, vouchers, itineraries)<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/reviews\/\">Reviews &amp; Ratings<\/a> \u2014 moderation and trip-level display<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/reports\/\">Sales Reports<\/a> \u2014 admin reports for bookings, revenue, and trends<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/discounts\/\">Discounts &amp; Coupons<\/a> \u2014 sale and regular pricing, traveler-based pricing, coupon engine<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/enquiries\/\">Enquiries Inbox<\/a> \u2014 capture pre-booking questions per trip<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/pdfs\/\">PDF Documents<\/a> \u2014 generated invoices, vouchers, traveler itineraries<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/transactional-emails\/\">Transactional Emails<\/a> \u2014 booking confirmation, payment receipt, cancellation, reminder<\/li>\n<\/ul>\n\n<p><strong>Free payment gateways<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/wpyatra.com\/features\/paypal\/\">PayPal<\/a> \u2014 cards, PayPal balance, Pay-in-4<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/pay-later\/\">Pay Later<\/a> \u2014 book now, confirm or pay offline (ideal for bank transfer, cash on arrival, invoice workflows)<\/li>\n<\/ul>\n\n<p><strong>Front-end + extensibility<\/strong><\/p>\n\n<ul>\n<li>Templates for trip listings, single trip, booking flow, checkout, and account<\/li>\n<li><strong>4 Gutenberg blocks<\/strong> + <strong>6 shortcodes<\/strong> to place trips, search, login and account on any page<\/li>\n<li>Compatible with most well-coded block themes, classic themes and major page builders<\/li>\n<li>PHP 7.4 or newer, structured codebase, hooks and filters, template overrides<\/li>\n<li>REST-oriented flows for booking and account experiences<\/li>\n<\/ul>\n\n<h4>\ud83d\udc8e Yatra Pro \u2014 20 modules across 3 tiers<\/h4>\n\n<p><strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">Compare plans and buy Yatra Pro<\/a><\/strong> \u2014 three plans (Personal \u00b7 Growth \u00b7 Agency), each available yearly or lifetime.<\/p>\n\n<p><strong>Personal \u2014 $99\/yr (sale, regular $149)<\/strong> \u00b7 everything below included<\/p>\n\n<ul>\n<li><a href=\"https:\/\/wpyatra.com\/features\/dynamic-pricing\/\">Dynamic Pricing<\/a> \u2014 seasonality, demand, early bird, last-minute, inventory rules<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/flexible-payments\/\">Flexible Payments<\/a> \u2014 deposits and partial payments<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/scheduled-payments\/\">Scheduled Payments<\/a> \u2014 instalment plans<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/advanced-discount\/\">Advanced Discount<\/a> \u2014 group-style discounts alongside coupons<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/additional-services\/\">Additional Services<\/a> \u2014 sell extras with the trip<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/email-automation\/\">Email Automation<\/a> \u2014 multi-step sequences, audience filters, per-send delivery logs<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/abandoned-booking-recovery\/\">Abandoned Booking Recovery<\/a> \u2014 recover incomplete bookings<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/mailchimp\/\">Mailchimp Integration<\/a> \u2014 sync travelers + bookings to lists<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/facebook-pixel\/\">Facebook Pixel<\/a> \u2014 server-side + browser events<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/google-analytics\/\">Google Analytics 4 Enhanced<\/a> \u2014 booking funnel + revenue events<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/google-calendar\/\">Google Calendar sync<\/a> \u2014 departures and bookings into Google Calendar<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/custom-landing-pages\/\">Custom Landing Pages<\/a> \u2014 per-trip conversion-focused landing pages<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/dynamic-form-field\/\">Dynamic Form Field<\/a> \u2014 drag-and-drop custom booking questions<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/trip-consent\/\">Trip Consent<\/a> \u2014 digital waivers and signatures<\/li>\n<li><strong>Premium payment gateways<\/strong>: Stripe \u00b7 Razorpay \u00b7 Mollie \u00b7 Paystack \u00b7 Square \u00b7 Authorize.Net \u00b7 Bank Transfer<\/li>\n<\/ul>\n\n<p><strong>Growth \u2014 $199\/yr (sale, regular $299)<\/strong> \u00b7 everything in Personal, plus<\/p>\n\n<ul>\n<li><a href=\"https:\/\/wpyatra.com\/features\/ai-assistant\/\">AI Assistant<\/a> \u2014 generate itineraries, draft descriptions, suggest replies (bring your own OpenAI or Anthropic key)<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/whatsapp\/\">WhatsApp Notifications<\/a> \u2014 booking confirmations, payment receipts and departure reminders over WhatsApp (Meta Cloud API)<\/li>\n<\/ul>\n\n<p><strong>Agency \u2014 $499\/yr (sale, regular $699)<\/strong> \u00b7 everything in Growth, plus<\/p>\n\n<ul>\n<li><a href=\"https:\/\/wpyatra.com\/features\/channel-manager\/\">Channel Manager<\/a> \u2014 sell on Viator + GetYourGuide from one WordPress dashboard. Signed webhooks, anti-overbooking locks, real-time inventory sync.<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/white-label\/\">White Label<\/a> \u2014 rebrand the admin, emails, PDFs and frontend. Full agency theming.<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/team-access\/\">Team &amp; Access<\/a> \u2014 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.<\/li>\n<li><a href=\"https:\/\/wpyatra.com\/features\/webhooks\/\">Webhooks<\/a> \u2014 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.<\/li>\n<\/ul>\n\n<p><strong>Lifetime plans<\/strong> also available: Personal $499 \u00b7 Growth $999 \u00b7 Agency $1,999 \u2014 pay once, own it forever.<\/p>\n\n<p><a href=\"https:\/\/wpyatra.com\/pricing\/\">See full plan comparison and pricing \u2192<\/a><\/p>\n\n<h4>\ud83e\udd4a How Yatra compares<\/h4>\n\n<p>Considering Yatra against a SaaS booking platform or another WordPress travel plugin? We've written honest, side-by-side comparisons against each major alternative:<\/p>\n\n<ul>\n<li>\ud83d\udd04 <strong><a href=\"https:\/\/wpyatra.com\/yatra-vs-rezdy\/\">Yatra vs Rezdy<\/a><\/strong> \u2014 Sell on Viator + GetYourGuide without the $99\u2013$499 \/ month Rezdy SaaS bill. Lifetime license \u00b7 GPL \u00b7 your data, your gateway.<\/li>\n<li>\ud83d\udd04 <strong><a href=\"https:\/\/wpyatra.com\/yatra-vs-bokun\/\">Yatra vs Bokun<\/a><\/strong> \u2014 Skip the per-OTA-booking fee Bokun charges (typically 2.5% per booking). Independent open-source alternative to Tripadvisor-owned Bokun.<\/li>\n<li>\ud83d\udd04 <strong><a href=\"https:\/\/wpyatra.com\/yatra-vs-wp-travel-engine\/\">Yatra vs WP Travel Engine<\/a><\/strong> \u2014 Same WordPress philosophy, modern architecture, broader Pro modules. Custom database tables for performance vs. WP Travel Engine's custom post types.<\/li>\n<\/ul>\n\n<p>Each page covers the feature matrix, pricing math, migration steps and FAQ \u2014 written without overpromising. Read the verdict, then <a href=\"https:\/\/try.wpyatra.com\/try-yatra-pro\/\">try Yatra Pro free<\/a> before you commit.<\/p>\n\n<h4>\ud83c\udf10 Native integrations<\/h4>\n\n<p>Yatra ships with bring-your-own-credential integrations \u2014 no proxy, no markup, no per-event fees. Full directory: <strong><a href=\"https:\/\/wpyatra.com\/integrations\/\">All integrations on wpyatra.com<\/a><\/strong>.<\/p>\n\n<ul>\n<li><strong>Payments<\/strong>: PayPal \u00b7 Pay Later \u00b7 Stripe \u00b7 Razorpay \u00b7 Mollie \u00b7 Paystack \u00b7 Square \u00b7 Authorize.Net \u00b7 Bank Transfer<\/li>\n<li><strong>OTAs<\/strong>: Viator \u00b7 GetYourGuide \u00b7 Other OTAs (by request)<\/li>\n<li><strong>Email &amp; Messaging<\/strong>: Mailchimp \u00b7 WhatsApp Cloud API<\/li>\n<li><strong>Analytics &amp; Marketing<\/strong>: Google Analytics 4 \u00b7 Meta \/ Facebook Pixel<\/li>\n<li><strong>Calendars &amp; Scheduling<\/strong>: Google Calendar<\/li>\n<li><strong>AI Providers<\/strong>: OpenAI \u00b7 Anthropic Claude<\/li>\n<li><strong>WordPress Ecosystem<\/strong>: Gutenberg blocks (4 native) \u00b7 Elementor (via Shortcode) \u00b7 WooCommerce (coexistence) \u00b7 Loco Translate<\/li>\n<\/ul>\n\n<h4>\ud83e\udde9 Blocks and shortcodes<\/h4>\n\n<p>Use the <strong>block editor<\/strong> or <strong>classic shortcodes<\/strong> to drop catalog widgets, search and account UI into any page.<\/p>\n\n<p><strong>Blocks<\/strong> (search the inserter for \"Yatra\" or the block name):<\/p>\n\n<ul>\n<li><strong>Trip<\/strong> \u2014 block name <code>yatra\/tour<\/code> (trip grid; the registered name stays <code>yatra\/tour<\/code> for backward compatibility, but the inserter title and UI now read <strong>Trip<\/strong>). <strong>Trip Settings<\/strong> (layout, <strong>Featured Priority<\/strong> \u2014 restrict to <em>Featured<\/em>, <em>New<\/em>, or <em>Limited Time<\/em> picked on the trip form's <strong>Categorization \u2192 Featured Priority<\/strong>) and <strong>Filters<\/strong>: each taxonomy (destinations, activities, trip categories, difficulty \/ fitness level) supports <strong>Listing scope<\/strong> \u2014 either <strong>All published<\/strong> (no ID filter saved) or <strong>Only selected<\/strong>, with <strong>search plus checkboxes<\/strong> to pick numeric classification IDs.<\/li>\n<li><strong>Activity<\/strong> \u2014 <code>yatra\/activity<\/code>: same taxonomy picker pattern (All published vs search + IDs) in the sidebar; matches <strong><code>[yatra_activity]<\/code><\/strong> ID rules.<\/li>\n<li><strong>Destination<\/strong> \u2014 <code>yatra\/destination<\/code>: same pattern; matches <strong><code>[yatra_destination]<\/code><\/strong> ID rules.<\/li>\n<li><strong>Trip categories<\/strong> \u2014 <code>yatra\/trip-category<\/code> (same card layout as destinations; links use your trip category base from Settings).<\/li>\n<\/ul>\n\n<p><strong>Shortcodes<\/strong> (all accept string values as in the plugin defaults \u2014 use <code>yes<\/code> \/ <code>no<\/code> or <code>0<\/code> \/ <code>1<\/code> where noted):<\/p>\n\n<ul>\n<li><strong><code>[yatra_trip]<\/code><\/strong> \u2014 Trip listing. Alias: <strong><code>[yatra_tour]<\/code><\/strong>. Filters: <code>destination<\/code>, <code>activity<\/code>, <code>category<\/code> accept comma-separated classification IDs. Optional: <code>order<\/code>, <code>featured_priority<\/code> (<code>featured<\/code> \/ <code>new<\/code> \/ <code>limited<\/code>), <code>per_page<\/code>, <code>difficulty<\/code>, <code>price_min<\/code>, <code>price_max<\/code>, <code>duration_min<\/code>, <code>duration_max<\/code>, <code>search<\/code>, <code>columns<\/code>, <code>show_pagination<\/code>, <code>title<\/code>. Pagination: <code>trip_page<\/code>. Examples: <code>[yatra_trip]<\/code>, <code>[yatra_trip destination=\"44\" activity=\"12\"]<\/code>, <code>[yatra_trip featured_priority=\"new\" per_page=\"6\"]<\/code>.<\/li>\n<li><strong><code>[yatra_activity]<\/code><\/strong> \u2014 Activity listing cards.<\/li>\n<li><strong><code>[yatra_destination]<\/code><\/strong> \u2014 Destination showcase.<\/li>\n<li><strong><code>[yatra_trip_category]<\/code><\/strong> \u2014 Trip category cards.<\/li>\n<li><strong><code>[yatra_search]<\/code><\/strong> \u2014 Advanced trip search form.<\/li>\n<li><strong><code>[yatra_login]<\/code><\/strong> \u2014 Customer login form.<\/li>\n<li><strong><code>[yatra_my_account]<\/code><\/strong> \u2014 Account dashboard for logged-in users.<\/li>\n<li><strong><code>[yatra_discount_and_deals]<\/code><\/strong> \u2014 Discounted trips.<\/li>\n<\/ul>\n\n<p><strong>Empty-term filtering (<code>hide_empty<\/code>):<\/strong> <code>[yatra_destination]<\/code>, <code>[yatra_activity]<\/code> and <code>[yatra_trip_category]<\/code> accept <code>hide_empty=\"yes\"<\/code> to skip taxonomy terms that have zero published trips. Opt-in (default <code>no<\/code>).<\/p>\n\n<p><strong>Note:<\/strong> If you're migrating from an older build, <code>[yatra_cart]<\/code>, <code>[yatra_checkout]<\/code> and <code>[yatra_mini_cart]<\/code> are no longer registered \u2014 checkout and the booking flow now use Yatra's own front-end routes and templates. See <strong><a href=\"https:\/\/docs.wpyatra.com\">docs.wpyatra.com<\/a><\/strong> for full shortcode reference, URLs and page setup.<\/p>\n\n<h4>\ud83c\udfa8 Compatible WordPress travel themes<\/h4>\n\n<p>Yatra works with most well-coded block themes, classic themes and major page builders. <strong>Recommended themes<\/strong> (optional \u2014 Yatra works with any theme):<\/p>\n\n<ul>\n<li>\ud83e\uddf3 <strong><a href=\"https:\/\/wpyatra.com\/best-wordpress-travel-theme\/\">Resa \u2014 the official Yatra travel theme<\/a><\/strong> \u2014 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.<\/li>\n<li>\ud83e\uddf1 <strong><a href=\"https:\/\/wordpress.org\/themes\/blocksy\/?ref=yatrapluginorg\">Blocksy<\/a><\/strong> \u2014 modern block theme<\/li>\n<li>\u26a1 <strong><a href=\"https:\/\/wordpress.org\/themes\/kadence\/?ref=yatrapluginorg\">Kadence<\/a><\/strong> \u2014 fast, flexible theme<\/li>\n<\/ul>\n\n<h4>\ud83d\udd17 Quick links<\/h4>\n\n<ul>\n<li>\ud83c\udfe0 <strong><a href=\"https:\/\/wpyatra.com\/\">wpyatra.com<\/a><\/strong> \u2014 official site<\/li>\n<li>\ud83d\udcb3 <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">Pricing<\/a><\/strong> \u2014 Personal \u00b7 Growth \u00b7 Agency \u00b7 Lifetime plans<\/li>\n<li>\u2728 <strong><a href=\"https:\/\/wpyatra.com\/features\/\">All features<\/a><\/strong> \u2014 full Free + Pro capability list<\/li>\n<li>\ud83c\udf10 <strong><a href=\"https:\/\/wpyatra.com\/integrations\/\">Integrations<\/a><\/strong> \u2014 every native partner<\/li>\n<li>\ud83e\udd4a <strong><a href=\"https:\/\/wpyatra.com\/yatra-vs-rezdy\/\">Yatra vs alternatives<\/a><\/strong> \u2014 head-to-head comparisons<\/li>\n<li>\ud83c\udfa8 <strong><a href=\"https:\/\/wpyatra.com\/best-wordpress-travel-theme\/\">WordPress travel theme (Resa)<\/a><\/strong> \u2014 recommended pairing<\/li>\n<li>\ud83d\udcd6 <strong><a href=\"https:\/\/docs.wpyatra.com\/\">Documentation<\/a><\/strong> \u2014 installation, blocks, shortcodes, operations<\/li>\n<li>\ud83c\udfaf <strong><a href=\"https:\/\/demo.wpyatra.com\/\">Live demo<\/a><\/strong> \u2014 see Yatra on a real WordPress demo<\/li>\n<li>\ud83c\udd98 <strong><a href=\"https:\/\/mantrabrain.com\/contact\">Support \/ contact<\/a><\/strong> \u2014 help and commercial support routing<\/li>\n<\/ul>\n\n<h4>\ud83d\udc99 Join the community<\/h4>\n\n<ul>\n<li>\u2b50 <strong><a href=\"https:\/\/wordpress.org\/support\/plugin\/yatra\/reviews\/?filter=5\">Rate Yatra five stars<\/a><\/strong> \u2014 helps other tour operators find the plugin<\/li>\n<li>\ud83d\udcac <strong><a href=\"https:\/\/www.facebook.com\/groups\/yatrawordpressplugin\">Facebook community<\/a><\/strong> \u2014 connect with other Yatra users<\/li>\n<li>\ud83d\udce7 <strong><a href=\"mailto:mantrabrain@gmail.com\">Email support<\/a><\/strong> \u2014 direct email for product questions<\/li>\n<li>\ud83d\udc1b <strong><a href=\"https:\/\/github.com\/MantraBrain\/yatra\">GitHub \u2014 issues &amp; contributions<\/a><\/strong> \u2014 bug reports and pull requests<\/li>\n<\/ul>\n\n<h4>\ud83d\ude80 Try Yatra risk-free<\/h4>\n\n<ul>\n<li>\ud83e\uddea <strong><a href=\"https:\/\/try.new\/plugins\/yatra\">Try the free Yatra plugin in WordPress Playground<\/a><\/strong> \u2014 spin up a temporary WordPress site with the free Yatra plugin pre-installed. No local setup, no signup, no credit card.<\/li>\n<li>\ud83c\udf81 <strong><a href=\"https:\/\/try.wpyatra.com\/try-yatra-pro\/\">Try Yatra Pro free<\/a><\/strong> \u2014 full Pro trial environment with every module enabled. No credit card required.<\/li>\n<li>\ud83d\udcb0 <strong>14-day refund<\/strong> on every paid Yatra Pro plan \u2014 see the <a href=\"https:\/\/wpyatra.com\/pricing\/\">pricing page<\/a> for the refund window terms.<\/li>\n<\/ul>\n\n<h3>Additional Information<\/h3>\n\n<h4>Privacy<\/h4>\n\n<p>Booking and customer data are stored in your WordPress database. Payment processing is performed by the gateways you enable; review each provider's privacy and PCI documentation. Yatra does not ship customer data to an external SaaS.<\/p>\n\n<h4>Credits<\/h4>\n\n<p>Yatra is developed by <strong>MantraBrain<\/strong>. Third-party libraries include components such as React (admin UI), Vite, TanStack Query, and others as shipped in the plugin package.<\/p>\n\n<h4>Contributing<\/h4>\n\n<p>Issues and contributions: <a href=\"https:\/\/github.com\/MantraBrain\/yatra\">GitHub \u2014 Yatra<\/a><\/p>\n\n<p>If Yatra helps your business, a \u2b50 <strong>five-star review<\/strong> on WordPress.org and considering <strong>\ud83d\udc8e <a href=\"https:\/\/wpyatra.com\/pricing\/\">Yatra Pro<\/a><\/strong> when you need paid features both help sustain development. Thank you for using Yatra.<\/p>\n\n<!--section=installation-->\n<p>\ud83d\udee0\ufe0f <strong>Quick setup<\/strong><\/p>\n\n<ol>\n<li>Install and activate <strong>Yatra<\/strong> from this screen or upload the ZIP under Plugins \u2192 Add New \u2192 Upload.<\/li>\n<li>Complete the setup wizard (currency, basics, permalinks as prompted).<\/li>\n<li>Add destinations and activities, then create your first trip under <strong>Yatra \u2192 Trips<\/strong>.<\/li>\n<li>Configure <strong>PayPal<\/strong> and\/or <strong>Pay Later<\/strong> under Yatra payment settings (free). Add <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">Yatra Pro<\/a><\/strong> when you need card gateways or <a href=\"https:\/\/wpyatra.com\/features\/\">Pro modules<\/a>.<\/li>\n<li>Place the booking experience on your site using Yatra templates, <strong>blocks<\/strong>, or <strong>shortcodes<\/strong> (see <strong>\ud83e\udde9 Blocks and shortcodes<\/strong> in the description above and <a href=\"https:\/\/docs.wpyatra.com\">docs.wpyatra.com<\/a>).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20the%20best%20wordpress%20travel%20booking%20plugin%20for%20tour%20operators%3F\"><h3>What is the best WordPress travel booking plugin for tour operators?<\/h3><\/dt>\n<dd><p>Yatra is the <strong>WordPress travel booking plugin<\/strong> built around the operational reality of selling tours \u2014 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); <a href=\"https:\/\/wpyatra.com\/pricing\/\">Yatra Pro<\/a> adds 20 modules across Personal, Growth and Agency tiers. Read the <a href=\"https:\/\/wpyatra.com\/yatra-vs-wp-travel-engine\/\">head-to-head comparison vs WP Travel Engine<\/a> or <a href=\"https:\/\/wpyatra.com\/yatra-vs-rezdy\/\">vs Rezdy SaaS<\/a>.<\/p><\/dd>\n<dt id=\"is%20yatra%20free%3F\"><h3>Is Yatra free?<\/h3><\/dt>\n<dd><p>Yes. The plugin on WordPress.org is free and includes the core booking stack for many tour operators. <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">Yatra Pro<\/a><\/strong> is a paid upgrade for <a href=\"https:\/\/wpyatra.com\/pricing\/\">premium gateways<\/a> and <a href=\"https:\/\/wpyatra.com\/features\/\">20 Pro modules<\/a>.<\/p><\/dd>\n<dt id=\"do%20i%20need%20code%20skills%20to%20use%20yatra%3F\"><h3>Do I need code skills to use Yatra?<\/h3><\/dt>\n<dd><p>No for day-to-day operation. Developers can override templates and use hooks for custom workflows.<\/p><\/dd>\n<dt id=\"which%20payments%20are%20free%20vs%20pro%3F\"><h3>Which payments are free vs Pro?<\/h3><\/dt>\n<dd><p><strong>Free:<\/strong> <a href=\"https:\/\/wpyatra.com\/features\/paypal\/\">PayPal<\/a> and <a href=\"https:\/\/wpyatra.com\/features\/pay-later\/\">Pay Later<\/a>. <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">Pro<\/a>:<\/strong> Stripe, Razorpay, Mollie, Paystack, Square, Authorize.Net, bank transfer (as supported for your account and region).<\/p><\/dd>\n<dt id=\"can%20i%20take%20bookings%20without%20charging%20a%20card%20immediately%3F\"><h3>Can I take bookings without charging a card immediately?<\/h3><\/dt>\n<dd><p>Yes. Use <strong>Pay Later<\/strong> for offline confirmation, invoices, or pay-on-arrival flows.<\/p><\/dd>\n<dt id=\"can%20i%20distribute%20my%20tours%20on%20viator%2C%20getyourguide%20and%20other%20otas%3F\"><h3>Can I distribute my tours on Viator, GetYourGuide and other OTAs?<\/h3><\/dt>\n<dd><p>Yes \u2014 the <a href=\"https:\/\/wpyatra.com\/features\/channel-manager\/\">Channel Manager module<\/a> (Agency tier) connects Yatra directly to <strong>Viator<\/strong> and <strong>GetYourGuide<\/strong> 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.<\/p><\/dd>\n<dt id=\"does%20yatra%20work%20with%20woocommerce%3F\"><h3>Does Yatra work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Yatra runs alongside WooCommerce on the same WordPress site \u2014 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.<\/p><\/dd>\n<dt id=\"does%20yatra%20support%20multilingual%20and%20multi-currency%20travel%20sites%3F\"><h3>Does Yatra support multilingual and multi-currency travel sites?<\/h3><\/dt>\n<dd><p>Yes. Yatra ships translation-ready POT files and is compatible with <strong>WPML<\/strong>, <strong>Polylang<\/strong> and <strong>TranslatePress<\/strong>. Currency configuration is at the site level \u2014 set your default currency in Yatra \u2192 Settings. RTL stylesheets ship in the bundled <a href=\"https:\/\/wpyatra.com\/best-wordpress-travel-theme\/\">Resa WordPress travel theme<\/a>.<\/p><\/dd>\n<dt id=\"does%20yatra%20work%20with%20my%20theme%3F\"><h3>Does Yatra work with my theme?<\/h3><\/dt>\n<dd><p>It works with most modern WordPress themes. Yatra ships front-end templates; your theme controls global layout and typography. For the smoothest pairing, see <strong><a href=\"https:\/\/wpyatra.com\/best-wordpress-travel-theme\/\">Resa<\/a><\/strong> \u2014 the dedicated Yatra travel theme by MantraBrain, free on WordPress.org.<\/p><\/dd>\n<dt id=\"are%20invoices%20and%20vouchers%20only%20in%20pro%3F\"><h3>Are invoices and vouchers only in Pro?<\/h3><\/dt>\n<dd><p>Travelers can access invoices, vouchers and itineraries from the account area on the free plugin when your site is configured for it. <a href=\"https:\/\/wpyatra.com\/pricing\/\">Pro<\/a> expands payment choices and business modules \u2014 it does not remove core documents by default.<\/p><\/dd>\n<dt id=\"how%20do%20saved%20trips%20%2F%20wishlist%20work%3F\"><h3>How do saved trips \/ wishlist work?<\/h3><\/dt>\n<dd><p>Saved trips appear when <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">Yatra Pro<\/a><\/strong> is active and <strong>wishlist<\/strong> is enabled in Yatra settings.<\/p><\/dd>\n<dt id=\"is%20yatra%20gdpr-friendly%3F\"><h3>Is Yatra GDPR-friendly?<\/h3><\/dt>\n<dd><p>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 \u2014 Yatra does not ship data to an external SaaS. Payment data is handled by your chosen gateways under their terms.<\/p><\/dd>\n<dt id=\"where%20is%20documentation%3F\"><h3>Where is documentation?<\/h3><\/dt>\n<dd><p>See <strong><a href=\"https:\/\/docs.wpyatra.com\">docs.wpyatra.com<\/a><\/strong> and <strong><a href=\"https:\/\/wpyatra.com\/\">wpyatra.com<\/a><\/strong> for features, <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">Pro<\/a><\/strong> and updates.<\/p><\/dd>\n<dt id=\"where%20are%20shortcodes%20and%20blocks%20documented%3F\"><h3>Where are shortcodes and blocks documented?<\/h3><\/dt>\n<dd><p>See <strong>\ud83e\udde9 Blocks and shortcodes<\/strong> in the description above. Full walkthroughs (pages, permalinks, checkout URLs) are in the documentation.<\/p><\/dd>\n<dt id=\"does%20yatra%20provide%20cart%20or%20checkout%20shortcodes%3F\"><h3>Does Yatra provide cart or checkout shortcodes?<\/h3><\/dt>\n<dd><p><strong>No.<\/strong> Checkout and the booking flow run on Yatra's own front-end routes and templates \u2014 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.<\/p><\/dd>\n<dt id=\"what%20does%20yatra%20pro%20cost%3F\"><h3>What does Yatra Pro cost?<\/h3><\/dt>\n<dd><p>Pricing starts at <strong>$99\/yr<\/strong> (Personal, sale) and goes up to <strong>$499\/yr<\/strong> (Agency, sale). Lifetime plans available from <strong>$499<\/strong> one-time. Every Pro tier includes a <strong>14-day refund<\/strong> window. See the <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">full pricing breakdown<\/a><\/strong>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.0.5.1<\/h4>\n\n<ul>\n<li><strong>Hotfix \u2014 admin 403 on REST routes:<\/strong> site administrators on a free-only install were hitting <code>rest_forbidden<\/code> on Settings (and any other surface whose REST controller gates on a granular <code>yatra_*<\/code> cap). Root cause: the <code>user_has_cap<\/code> filter installer (<code>AdminServiceProvider::bootstrapMenuCapability()<\/code>) was only called from <code>registerAdminMenu()<\/code> \u2014 hooked on <code>admin_menu<\/code>, which doesn't fire during REST requests. The admin SPA loads everything via REST, so the admin fallback that grants <code>yatra_*<\/code> caps to users with <code>manage_options<\/code> never ran for those calls. Fix: the installer is now also invoked from <code>AppServiceProvider::register()<\/code> (always-loaded core path), so the filters install for every entry point \u2014 admin pageviews, REST, AJAX, frontend, CLI. An idempotency guard prevents double-registration. Filter logic, priorities, and the team-module-disabled strip branch are unchanged \u2014 this is a registration-timing fix, not a semantics change. Pair with <strong>Yatra Pro 3.0.4<\/strong> (Team &amp; Access).<\/li>\n<li>Safe to update from 3.0.5. No database changes, no settings reset.<\/li>\n<\/ul>\n\n<h4>3.0.5<\/h4>\n\n<ul>\n<li><strong>Capability registry foundation:<\/strong> the free plugin now ships a <code>user_has_cap<\/code> filter at priority 7 (<code>AdminServiceProvider::bootstrapMenuCapability()<\/code>) that reads the <code>yatra_team_role_enforcement_active<\/code> filter signal to decide whether non-admin <code>yatra_*<\/code> caps resolve normally or get stripped. When the Pro Team &amp; Access module is enabled (or its \"keep access on disable\" setting is on), the signal returns true and caps resolve. When Pro is deactivated or the module is off without that opt-in, non-admin yatra_* caps are stripped so existing role assignments become inert \u2014 re-activating restores everything. WP administrators always pass via the admin fallback regardless.<\/li>\n<li><strong>Cap-string consistency sweep:<\/strong> every React page that gated UI on <code>manage_yatra<\/code> now references the canonical registered cap (<code>yatra_manage_settings<\/code>, <code>yatra_manage_emails<\/code>, <code>yatra_access_admin<\/code>). New caps registered: <code>yatra_view_reviews<\/code>, <code>yatra_edit_reviews<\/code>, <code>yatra_delete_reviews<\/code>, <code>yatra_manage_reviews<\/code>. Inline cap checks inside <code>TripController::restore_revision<\/code> and <code>SingleTripController<\/code> draft-preview gain <code>manage_options<\/code> fallback so site owners never fail.<\/li>\n<li><strong><code>isWpAdmin<\/code> always injected:<\/strong> <code>AdminAssetsProvider<\/code> now always injects <code>isWpAdmin<\/code> and <code>manage_options<\/code> into <code>window.yatraAdmin.capabilities<\/code> (was previously only set by the Pro Team module). Fixes the regression where Reviews + Email Templates didn't load data for admins on free-only or Team-disabled installs. React <code>usePermissions.can()<\/code> gets a triple admin-fallback (isWpAdmin \u2192 roles.administrator \u2192 capabilities.manage_options) so admins always pass regardless of injection edge cases.<\/li>\n<li><strong>Customer + Availability controllers:<\/strong> <code>CustomerController::checkAdminPermission<\/code>, <code>AvailabilitySpecificDatesController::checkPermission<\/code>, and <code>AvailabilityRecurringRulesController::checkPermission<\/code> now accept the registered Team caps (<code>yatra_edit_customers<\/code>, <code>yatra_edit_trips<\/code>) in addition to the legacy <code>manage_options<\/code> and pre-existing legacy caps (kept as OR-arms for back-compat with any hand-grant filter).<\/li>\n<li><strong>Transactional email types are now extensible:<\/strong> <code>TransactionalEmailTemplateService::typeToSettingsKeys()<\/code> exposes the <code>yatra_transactional_email_type_to_keys<\/code> filter so Pro modules can register their own type \u2192 settings-keys mapping. Default subject\/body lookups expose <code>yatra_transactional_email_default_subject<\/code> and <code>yatra_transactional_email_default_body<\/code> so modules can supply baseline copy. Powers the new Team module's customizable invitation email surface.<\/li>\n<li><strong>Try Yatra Pro pill:<\/strong> subtle amber pill appears next to the page title on every admin page when the Pro plugin is NOT active. Links to <code>https:\/\/try.wpyatra.com\/try-yatra-pro\/<\/code> (no credit card required). Hidden as soon as Pro is active.<\/li>\n<li><strong>UX polish:<\/strong> <code>SharedTable<\/code> action-menu dropdown shadow reduced from <code>shadow-2xl<\/code> to <code>shadow-md<\/code> (matches the rest of the admin design); modal-body data loaders replaced with Skeleton blocks (Team page, MemberEditDrawer, RoleEditDrawer, AddMemberModal candidate picker); Departure save\/cancel redirect now returns to the Departures page instead of the Trips page; Email page tabs (Delivery, Templates, Sequences, Logs) persist in the URL so direct links and reload work.<\/li>\n<li><strong>Reviews + Email registry:<\/strong> <code>Layout.tsx<\/code> sidebar entry for Reviews now gates on <code>yatra_view_reviews<\/code> (was <code>yatra_view_trips<\/code>); <code>useEmailSettingsManager<\/code> gates on <code>yatra_manage_emails<\/code> (was the unregistered <code>manage_yatra<\/code>).<\/li>\n<li><strong>Version:<\/strong> Yatra free <strong>3.0.5<\/strong>. Pair with <strong>Yatra Pro 3.0.3<\/strong> for the Team &amp; Access module.<\/li>\n<li>Safe to update from 3.0.4.<\/li>\n<li><strong>NEW \u2014 Discount Stacking setting:<\/strong> Settings \u2192 Pricing tab with four modes (Both apply \/ Best for the customer \/ Discount only \/ Dynamic Pricing only). Only renders when both Advanced Discount and Dynamic Pricing modules are enabled. Default <code>both<\/code> preserves legacy behaviour \u2014 zero change for existing sites unless an operator opts in.<\/li>\n<li><strong>NEW \u2014 <code>yatra_pricing_after_discount_stack<\/code> filter<\/strong> in <code>CalculationService<\/code> lets premium modules rewrite the discount\/DP combination per operator policy. <code>pre_dp_base_amount<\/code> ships in the snapshot so listeners detect DP-active without re-running rules. <code>calculateBaseAmount()<\/code> and <code>calculateGroupDiscount()<\/code> made public; new <code>computeBaseAmountWithoutDynamicPricing()<\/code> helper for the discount-only re-walk.<\/li>\n<li><strong>NEW \u2014 Channel Manager UI:<\/strong> searchable TripPicker on the New Mapping form (replaces the numeric Trip ID input); Mappings list shows trip name with link instead of <code>#42<\/code>; All-channels filter + Add Mapping button stay on one row.<\/li>\n<li><strong>NEW \u2014 Module-page skeletons:<\/strong> Webhooks, Channel Manager, AI Assistant, WhatsApp, WhiteLabel, Team now render shape-aware skeletons (not bare spinners) on initial load. New <code>ModulePageSkeleton<\/code> + variants component.<\/li>\n<li><strong>Booking confirmation:<\/strong> Features tag row removed; featured-image always renders with a bundled placeholder fallback (no more lopsided text-only cards on trips without an image set).<\/li>\n<li><strong>Booking sidebar consistency:<\/strong> per-category price (Adult \u00d7 N) now always matches Trip Subtotal across JSON response, server-rendered HTML, and the React renderer \u2014 reconciled against CalculationService's authoritative <code>category_prices_post_dp<\/code> map.<\/li>\n<li><strong>Stripe \/ AuthorizeNet \/ Square checkout fix:<\/strong> all three premium-gateway flows now forward <code>X-Yatra-Booking-Nonce<\/code> on <code>\/booking\/create<\/code>, fixing the <code>invalid_nonce<\/code> 403 that blocked card payments.<\/li>\n<li><strong>Booking confirmation fatal fix:<\/strong> <code>BookingRepository::getResolvedBookingsTable()<\/code> \u2192 <code>getTableName()<\/code> (post-3.0.5 dangling refactor that crashed the confirmation page).<\/li>\n<li><strong>Booking-Form sub-tab gate:<\/strong> truthy check on <code>yatraAdmin.dynamicFormFieldEnabled<\/code> so the sub-tab actually renders (wp_localize_script string-coercion bug \u2014 <code>true<\/code> arrives as <code>\"1\"<\/code>, strict-equality silently failed).<\/li>\n<li><strong>Repo housekeeping:<\/strong> <code>BookingForm.tsx.backup<\/code> removed (71 KB orphan file).<\/li>\n<\/ul>\n\n<h4>3.0.4<\/h4>\n\n<ul>\n<li><strong>Unicode \/ Cyrillic slugs (end-to-end):<\/strong> <code>SlugHelper::generate()<\/code> now rawurldecodes percent-encoded UTF-8 and uses <code>mb_strtolower<\/code> with a Unicode-aware regex (<code>\\pL\\pN<\/code>), so Cyrillic \/ CJK trip, destination, activity, and category slugs round-trip cleanly through validators and pretty-permalink routing. <code>ActivityValidator<\/code>, <code>DestinationValidator<\/code>, and <code>TripValidator<\/code> now route raw user input through <code>SlugHelper<\/code> instead of <code>sanitize_title<\/code> (which stripped non-ASCII characters down to a single dash). <code>PrettyRouteMatcher<\/code> decodes captured slugs the same way before lookup, so a URL like <code>\/trip\/\u0442\u043e\u043a\u0438\u043e\/<\/code> resolves correctly.<\/li>\n<li><strong>Pricing \u2014 single source of truth:<\/strong> <code>create_booking<\/code> now uses <code>CalculationService::calculateFromSession<\/code> as its primary path, so the sidebar pricing summary, the AJAX summary refresh, and the actual amount sent to the payment gateway are all driven by the same code. The calculation result exposes <code>unit_price_before_dp<\/code>, <code>dp_total_adjustment<\/code>, <code>category_prices_post_dp<\/code>, and a <code>dynamic_pricing<\/code> breakdown so templates can render a clean \"Trip Pricing \u2192 Services \u2192 Itinerary \u2192 Dynamic Pricing \u2192 Discount\" stack with no double-counting and no sidebar\/payment drift.<\/li>\n<li><strong>Pricing summary \u2014 UI cleanup:<\/strong> services render as compact rows above Trip Subtotal (matching the traveler-row style instead of a separate card), Dynamic Pricing renders as one consolidated line (no \"1 rule applied\" caption), and service descriptions surface via a CSS <code>data-tooltip<\/code> hover (no native <code>title<\/code> attribute, no info-icon clutter). The duplicate-traveler bug (1 selected showing as 2) is fixed in <code>formDataToObject<\/code>'s handling of <code>name[]<\/code> array notation.<\/li>\n<li><strong>Coupon UI persistence:<\/strong> <code>remove_coupon<\/code> now writes back via <code>yatra_set_booking_session()<\/code> so the transient stays in sync, and the applied-coupon row's visible state is server-rendered on first paint \u2014 the Remove button is now visible after a page refresh.<\/li>\n<li><strong>Session management:<\/strong> <code>yatra_set_booking_session()<\/code> writes to both <code>$_SESSION<\/code> and a transient keyed by a <code>booking_token<\/code> in the URL, and <code>yatra_get_booking_session()<\/code> falls back to the transient when REST endpoints arrive without <code>PHPSESSID<\/code>. Service toggles, summary refresh, coupon apply \/ remove, and create-booking all resolve the same cart regardless of how the request authenticated.<\/li>\n<li><strong>Mobile sticky bar:<\/strong> the sticky-bottom booking widget's flatpickr \/ traveler-sync JavaScript is extracted into <code>assets\/js\/single-trip-sidebar.js<\/code> so it can no longer be mangled by WordPress's <code>convert_chars<\/code> content filter (which previously rewrote <code>&amp;&amp;<\/code> operators inside inline scripts as <code>&amp;#038;&amp;#038;<\/code> and broke the bar on some themes).<\/li>\n<li><strong>FSE \/ block-theme support:<\/strong> new <code>Yatra\\Core\\Template\\FseTemplates<\/code> + <code>Yatra\\Core\\Routing\\PageContext<\/code> provide a proper handoff between page handlers and the renderer so single-trip, booking, account, and confirmation pages render correctly inside the FSE template canvas.<\/li>\n<li><strong>Custom trip tab:<\/strong> new <code>templates\/partials\/single-trip\/content-custom.php<\/code> lets an admin-defined \"Custom\" frontend tab render through the same <code>yatra_render_tab_icon()<\/code> pipeline as the built-in tabs.<\/li>\n<li><strong>Pro toggle scaffolding:<\/strong> Settings \u2192 Booking now has <strong>\"Show available dates as a dropdown\"<\/strong> with a PRO badge. The setting key (<code>date_picker_as_dropdown<\/code>) and free-side filter contract (<code>yatra_use_date_dropdown<\/code>, <code>yatra_single_trip_date_dropdown_options<\/code>) live in the free plugin; the actual behavior (gate, option-builder, flexible-trip date synthesis) is contributed by the corresponding Yatra Pro module.<\/li>\n<li><strong>i18n \/ Loco Translate:<\/strong> <code>Bootstrap::loadTextDomain()<\/code> now installs a <code>load_script_translation_file<\/code> filter that falls back to <code>WP_LANG_DIR\/loco\/plugins\/<\/code> for <code>.json<\/code> script-translation files. This mirrors the existing <code>.mo<\/code> fallback so React surfaces (account page, admin app, blocks) pick up Loco-managed translations from Loco's standard private workspace.<\/li>\n<li><strong>CI \/ DevOps:<\/strong> the PHP-lint pipeline's silent-failure bug (subshell counter in <code>find | while<\/code>) is fixed; <code>xargs -0 -P 4 php -l<\/code> now aggregates failures correctly. Added <code>concurrency<\/code>, least-privilege <code>permissions: contents: read<\/code>, and <code>timeout-minutes<\/code> to every job; <code>composer validate --strict<\/code> moved before <code>composer install<\/code>; debug noise and the inline AI-report preamble removed from <code>$GITHUB_STEP_SUMMARY<\/code>.<\/li>\n<li>Safe to update from 3.0.3.<\/li>\n<\/ul>\n\n<h4>3.0.3<\/h4>\n\n<ul>\n<li><strong>Shortcodes:<\/strong> <strong><code>[yatra_trip_category]<\/code><\/strong> \u2014 lists trip categories in the same card layout as destinations, with optional filters, pagination (<code>trip_category_page<\/code>), and AJAX-friendly behavior (see <code>TripCategoryShortcode<\/code> + <code>TripCategoryShortcodeAjax<\/code>).<\/li>\n<li><strong>Shortcodes \/ blocks (<code>[yatra_trip]<\/code>, Trip block):<\/strong> <strong>Featured Priority<\/strong> filter (<code>featured_priority<\/code> = <code>featured<\/code> \/ <code>new<\/code> \/ <code>limited<\/code>; mirrors the trip form's <em>Categorization \u2192 Featured Priority<\/em>) and <strong>Difficulty \/ fitness-level<\/strong> filter (<code>difficulty=\"3,5\"<\/code>) are now first-class attributes. Legacy <code>featured=\"1\"<\/code> is retained as a back-compat alias for <code>featured_priority=\"featured\"<\/code> (<code>featured_priority<\/code> wins if both are set). Centralised in <code>TripListingFilterBuilder<\/code> so the same rules apply to both shortcode and block inputs.<\/li>\n<li><strong>Trip block:<\/strong> retired the legacy <em>Show only featured trips<\/em> toggle in favor of the unified <strong>Featured Priority<\/strong> dropdown; existing block instances saved with <code>featured: true<\/code> are auto-migrated to <code>featured_priority: \"featured\"<\/code> when reopened in the editor. Inserter title and labels read <strong>Trip<\/strong> (registered block name <code>yatra\/tour<\/code> is preserved for back-compat with saved posts).<\/li>\n<li><strong>Cards (Destination \/ Activity \/ Trip Category \u2014 shortcodes + blocks):<\/strong> the whole card is now a click target instead of just the title text. Implemented via the WAI-ARIA \"stretched link\" pattern (CSS pseudo-element on the existing title <code>&lt;a&gt;<\/code>) so a single canonical link is exposed to screen readers and crawlers; keyboard focus shows a card-wide outline.<\/li>\n<li><strong>Enquiry emails:<\/strong> <code>{{trip_name}}<\/code> (and other trip merge tags) now resolve correctly when an enquiry is submitted from a single-trip page. The modal posts <code>trip_id<\/code> \/ <code>trip_slug<\/code> reliably; backend normalizes <code>tripId<\/code> casing and derives <code>trip_id<\/code> from slug or <code>HTTP_REFERER<\/code> when missing; <code>EnquiryService<\/code> now eager-loads joined trip data before firing <code>yatra_enquiry_created<\/code> so admin templates and Pro automation receive a complete object. Merge-tag regex now tolerates surrounding whitespace (<code>{{ trip_name }}<\/code>).<\/li>\n<li><strong>Payments admin (Add \/ Edit Payment):<\/strong> the <em>Booking ID<\/em> text field is replaced with a searchable <strong>booking picker<\/strong> that queries <code>GET \/yatra\/v1\/bookings?search=\u2026<\/code> and matches against booking code (reference), customer name, and email \u2014 debounced server-side search with rich rows (code, customer, trip, email). The <em>Payment Date<\/em> field now uses the shared admin <code>DatePicker<\/code> for visual parity with every other date field in the admin and prevents future-dated payments by default.<\/li>\n<li><strong>Upgrades:<\/strong> version-gated Free upgrade runner; legacy payment tokens table dropped when applicable (see <code>Upgrade_3_0_3<\/code>).<\/li>\n<li><strong>Discounts:<\/strong> REST and repository hardening (writable column whitelist; safer updates).<\/li>\n<li><strong>Single trip:<\/strong> group discount discoverability in the sidebar; <strong>Similar trips<\/strong> links respect plain permalinks via <code>yatra_get_trip_permalink()<\/code>; enquiry modal <strong>Send Enquiry<\/strong> uses <code>yatra-booking-button<\/code> so primary color matches <strong>Check Availability<\/strong> and global <code>--yatra-primary<\/code> tokens.<\/li>\n<li><strong>Admin \/ i18n:<\/strong> Trip Builder meal plan strings use shared labels; attribute icon picker preserves Font Awesome <code>provider<\/code> after save; front-end Important Info shows translated meal plan labels (<code>yatra_meal_plan_label()<\/code>).<\/li>\n<li>Safe to update from 3.0.2.x.<\/li>\n<\/ul>\n\n<h4>3.0.2.9<\/h4>\n\n<ul>\n<li><strong>Mobile booking bar:<\/strong> Improved sticky booking UI on small screens (date + travelers layout, full-width travelers dropdown opening upward, and reliable click targets).<\/li>\n<li><strong>Admin caching:<\/strong> Fixed service cache invalidation so updates (including SEO fields) reflect immediately when cache is enabled.<\/li>\n<li>Safe to update from 3.0.2.8.<\/li>\n<\/ul>\n\n<h4>3.0.2.8<\/h4>\n\n<ul>\n<li><strong>Booking UI:<\/strong> Added Advanced settings to select <strong>Terms &amp; Conditions<\/strong> and <strong>Privacy Policy<\/strong> pages; booking form now links to these pages (Privacy falls back to WordPress Settings \u2192 Privacy when unset).<\/li>\n<li><strong>Fix (Usage Tracking):<\/strong> Moved <code>StatsUsage<\/code> into <code>app\/Services<\/code> and updated references to avoid case-sensitive autoload issues on Linux hosts.<\/li>\n<li><strong>Fix (Gallery Modal):<\/strong> Hardened gallery modal image URL resolution against LiteSpeed Cache lazy-load placeholders.<\/li>\n<li>Safe to update from 3.0.2.7.<\/li>\n<\/ul>\n\n<h4>3.0.2.7<\/h4>\n\n<ul>\n<li><strong>Fix (Gallery Modal):<\/strong> Improved compatibility with LiteSpeed Cache lazy-load placeholders (base64 <code>src<\/code>) so the modal always opens the real image URLs.<\/li>\n<li><strong>Compat (LiteSpeed Cache):<\/strong> Excluded Yatra hero\/gallery selectors from LiteSpeed lazy-load and excluded Yatra trip assets from optimisation where needed.<\/li>\n<li>Safe to update from 3.0.2.6.<\/li>\n<\/ul>\n\n<h4>3.0.2.6<\/h4>\n\n<ul>\n<li><strong>Fix:<\/strong> Composer autoload path was declared as <code>includes\/Admin\/<\/code> (uppercase) but the directory on disk is <code>includes\/admin\/<\/code> (lowercase); caused fatal <code>include<\/code> warnings on Linux\/cPanel servers (case-sensitive filesystems).<\/li>\n<li><strong>License:<\/strong> Removed stub <code>LicenseController<\/code> from the free plugin \u2014 all <code>\/yatra\/v1\/license\/*<\/code> routes are now registered exclusively by Yatra Pro's own controller, eliminating any route conflicts.<\/li>\n<li><strong>Admin UI (Additional Services):<\/strong> Added missing <strong>Add New Service<\/strong> button via the <code>PageHeader<\/code> component on the Additional Services screen.<\/li>\n<li>Safe to update from 3.0.2.5.<\/li>\n<\/ul>\n\n<h4>3.0.2.5<\/h4>\n\n<ul>\n<li>Admin: add Review + Upgrade notices (React UI + WordPress notices) with smart dismiss scheduling.<\/li>\n<li>Setup wizard: save step settings when navigating between steps.<\/li>\n<\/ul>\n\n<h4>3.0.2.4<\/h4>\n\n<ul>\n<li><strong>REST:<\/strong> implemented <strong><code>TripService::permanentDelete()<\/code><\/strong> so <strong><code>DELETE \/yatra\/v1\/trips\/{id}\/permanent-delete<\/code><\/strong> no longer fatals (fixes permanent delete from trash and bulk actions).<\/li>\n<li><strong>Admin (React):<\/strong> bulk trip actions rely on <strong><code>BulkActionToolbar<\/code><\/strong> confirmation only (removed duplicate <strong><code>window.confirm<\/code><\/strong>); improved bulk dialog copy for <strong><code>mark_*<\/code><\/strong> actions.<\/li>\n<li>Safe to update from 3.0.2.3.<\/li>\n<\/ul>\n\n<h4>3.0.2.3<\/h4>\n\n<ul>\n<li><strong>Admin (React):<\/strong> moved fullscreen shell CSS into the document <strong>head<\/strong> to reduce wp-admin chrome flicker; added HTML\/CSS <strong>boot splash<\/strong> and <strong><code>modulepreload<\/code><\/strong> for the admin bundle; primary <strong>sidebar navigation<\/strong> uses client-side URL updates so the PHP loading state does not repeat on every screen change.<\/li>\n<li><strong>REST:<\/strong> registered <strong>License<\/strong> routes in the API registry so <strong><code>GET \/yatra\/v1\/license<\/code><\/strong> works on the free plugin (License screen and scripts that probe it).<\/li>\n<li><strong>Admin UI:<\/strong> hardened <strong>Departures<\/strong> and <strong>Availability<\/strong> trip dropdowns against <strong>TanStack Query<\/strong> cache shapes and <code>\/trips<\/code> list payloads (fixes <code>map<\/code> \/ <code>find<\/code> errors when navigating without a full reload).<\/li>\n<li>Safe to update from 3.0.2.2.<\/li>\n<\/ul>\n\n<h4>3.0.2.2<\/h4>\n\n<ul>\n<li>Maintenance \/ patch release. Safe to update from 3.0.2.1.<\/li>\n<\/ul>\n\n<h4>3.0.2.1<\/h4>\n\n<ul>\n<li><strong>Readme (WordPress.org):<\/strong> linked <strong>Pro<\/strong> gateways, modules, traveler features, and related mentions to <strong><a href=\"https:\/\/wpyatra.com\/pricing\/\">wpyatra.com\/pricing<\/a><\/strong> throughout the long description, FAQ, and quick links.<\/li>\n<li>Patch release; safe to update from 3.0.2.<\/li>\n<\/ul>\n\n<h4>3.0.2<\/h4>\n\n<ul>\n<li><strong>Readme (WordPress.org):<\/strong> reorganized the long description \u2014 the <strong>Yatra Pro<\/strong> section now appears <strong>before<\/strong> <strong>Blocks and shortcodes<\/strong> for a clearer Free \u2192 Pro \u2192 integration flow.<\/li>\n<li>Documentation-only release for the plugin directory listing; no code changes required for existing 3.0.x sites.<\/li>\n<\/ul>\n\n<h4>3.0.1<\/h4>\n\n<ul>\n<li>Maintenance release: updated WordPress.org <strong>banner<\/strong> and directory <strong>assets<\/strong> (including screenshots) for the 3.x listing.<\/li>\n<li><strong>Readme:<\/strong> shortened the plugin short description to meet WordPress.org's <strong>150-character<\/strong> limit so imports are no longer truncated.<\/li>\n<li>Minor fixes and polish; see <a href=\"https:\/\/wpyatra.com\/\">wpyatra.com<\/a> for release notes.<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>Major 3.0 release: redesigned admin experience, streamlined booking and traveler account flows, expanded gateway and module architecture for Pro, and ongoing hardening for production travel sites.<\/li>\n<li>See the plugin's release notes and <a href=\"https:\/\/wpyatra.com\/yatra-3-0\/\">wpyatra.com<\/a> for highlights. <strong>Always back up<\/strong> before upgrading from 2.x; follow migration guidance in documentation.<\/li>\n<\/ul>\n\n<h4>Earlier versions<\/h4>\n\n<ul>\n<li>For 2.x changelog entries, see the plugin's GitHub releases or historical notes on the vendor site.<\/li>\n<\/ul>","raw_excerpt":"WordPress travel booking plugin for tour operators. Trips, departures, payments, OTAs, AI. Free + Pro from $99\/yr.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/103726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=103726"}],"author":[{"embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mantrabrain"}],"wp:attachment":[{"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=103726"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=103726"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=103726"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=103726"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=103726"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/rhg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=103726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}