{"id":334999,"date":"2026-07-07T16:28:12","date_gmt":"2026-07-07T16:28:12","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/journeyloom-ai-powered-travel-hotel-booking\/"},"modified":"2026-07-07T16:27:41","modified_gmt":"2026-07-07T16:27:41","slug":"byteflows-travel-hotel-booking","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/byteflows-travel-hotel-booking\/","author":23525807,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Byteflows Travel & Hotel Booking","header_author":"Byteflows","header_description":"Turn WordPress into a complete travel & hotel booking platform \u2014 trip packages, hotels, a smart booking engine, search, reviews, wishlist & compare and bank-transfer checkout.","assets_banners_color":"f9f1ec","last_updated":"2026-07-07 16:27:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/byteflows.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":37,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"byteflows","date":"2026-07-07 16:27:41"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3599361,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3599361,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3599361,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3599361,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"wptm\/trip-grid":{"name":"wptm\/trip-grid","title":"Wptm Trip Grid"},"wptm\/hotel-grid":{"name":"wptm\/hotel-grid","title":"Wptm Hotel Grid"},"wptm\/search-form":{"name":"wptm\/search-form","title":"Wptm Search Form"},"wptm\/booking-form":{"name":"wptm\/booking-form","title":"Wptm Booking Form"},"wptm\/destinations":{"name":"wptm\/destinations","title":"Wptm Destinations"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[269,4488,6472,249,40087],"plugin_category":[39,40],"plugin_contributors":[270502],"plugin_business_model":[],"class_list":["post-334999","plugin","type-plugin","status-publish","hentry","plugin_tags-booking","plugin_tags-hotel","plugin_tags-tourism","plugin_tags-travel","plugin_tags-trip","plugin_category-business","plugin_category-calendar-and-events","plugin_contributors-byteflows","plugin_committers-byteflows"],"banners":{"banner":"https:\/\/ps.w.org\/byteflows-travel-hotel-booking\/assets\/banner-772x250.png?rev=3599361","banner_2x":"https:\/\/ps.w.org\/byteflows-travel-hotel-booking\/assets\/banner-1544x500.png?rev=3599361","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/byteflows-travel-hotel-booking\/assets\/icon-128x128.gif?rev=3599361","icon_2x":"https:\/\/ps.w.org\/byteflows-travel-hotel-booking\/assets\/icon-256x256.gif?rev=3599361","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Byteflows Travel &amp; Hotel Booking<\/strong> transforms your WordPress site into a complete travel and hotel booking platform \u2014 trip packages and hotels, a step-by-step booking engine, powerful search, reviews, wishlist &amp; compare and manual\/bank-transfer checkout. Everything in this plugin is free and fully functional \u2014 there is no locked code.<\/p>\n\n<p>Online card\/PayPal\/Razorpay checkout, printable invoices, coupons, priced pickup points, WhatsApp booking alerts and an AI assistant are available through the optional <strong>Byteflows Travel &amp; Hotel Booking Pro<\/strong> add-on (see below).<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Trip Management<\/strong> \u2014 Create trip packages with day-by-day itineraries, pricing tiers, galleries, maps and FAQs<\/li>\n<li><strong>Hotel Management<\/strong> \u2014 Hotels with room types, amenities, star ratings and availability<\/li>\n<li><strong>Smart Booking Engine<\/strong> \u2014 Step-by-step AJAX booking with availability checking, traveler details and server-side price validation<\/li>\n<li><strong>Manual \/ Bank Transfer Payments<\/strong> \u2014 Take bookings with configurable bank-transfer instructions<\/li>\n<li><strong>Advanced Search<\/strong> \u2014 AJAX search with filters for destination, activity, date and budget, plus a drag-and-drop search-form builder<\/li>\n<li><strong>Wishlist &amp; Compare<\/strong> \u2014 Let visitors save favorites and compare trips\/hotels side by side<\/li>\n<li><strong>Reviews &amp; Ratings<\/strong> \u2014 Built-in review system with moderation<\/li>\n<li><strong>Email Notifications<\/strong> \u2014 Automated booking confirmation and status-update emails<\/li>\n<li><strong>Booking Manager<\/strong> \u2014 A dedicated admin dashboard with a slide-in booking detail drawer and reports<\/li>\n<li><strong>Gutenberg Blocks &amp; Elementor Widgets<\/strong> \u2014 Native blocks\/widgets for trip grids, hotel grids, search forms and more<\/li>\n<li><strong>REST API<\/strong> \u2014 REST API for headless\/mobile integrations<\/li>\n<li><strong>Schema Markup<\/strong> \u2014 Automatic SEO-friendly structured data for trips and hotels<\/li>\n<li><strong>Modern UI\/UX<\/strong> \u2014 Clean, responsive design with smooth animations<\/li>\n<\/ul>\n\n<h4>Byteflows Travel &amp; Hotel Booking Pro<\/h4>\n\n<p>The optional <strong>Pro add-on<\/strong> (hosted at byteflows.net, not on WordPress.org) adds:<\/p>\n\n<ul>\n<li><strong>AI Assistant<\/strong> \u2014 Bring your own API key (OpenAI, Anthropic, or any OpenAI-compatible endpoint) for natural-language search, a concierge chat with bookable cards, smart recommendations, an AI Trip Builder, itinerary generation and AI-drafted customer replies<\/li>\n<li><strong>Online payments<\/strong> \u2014 Stripe (cards, SCA \/ 3-D Secure), PayPal and Razorpay checkout with server-side verification<\/li>\n<li><strong>Printable invoices<\/strong> \u2014 Branded, print-ready invoices for any booking<\/li>\n<li><strong>Coupons &amp; Discounts<\/strong> \u2014 Percentage or fixed-amount coupon codes with usage limits and expiry<\/li>\n<li><strong>Pickup points<\/strong> \u2014 Free or priced pickup locations chosen per traveler at checkout<\/li>\n<li><strong>WhatsApp notifications<\/strong> \u2014 Instant WhatsApp alerts for new bookings, enquiries and payments, with customizable message templates (via the official WhatsApp Cloud API or CallMeBot)<\/li>\n<\/ul>\n\n<p>Install the Pro add-on alongside this free plugin; the extra options appear automatically. No settings to migrate.<\/p>\n\n<h4>Shortcodes<\/h4>\n\n<ul>\n<li><code>[wptm_trips]<\/code> \u2014 Display trip grid (attrs: count, columns, destination, activity)<\/li>\n<li><code>[wptm_hotels]<\/code> \u2014 Display hotel grid (attrs: count, columns)<\/li>\n<li><code>[wptm_search_form]<\/code> \u2014 Display search form (attrs: style=horizontal|vertical)<\/li>\n<li><code>[wptm_booking_form]<\/code> \u2014 Display booking form (attrs: id)<\/li>\n<li><code>[wptm_destinations]<\/code> \u2014 Display destination grid (attrs: count)<\/li>\n<li><code>[wptm_ai_chat]<\/code> \u2014 Display the AI chat widget (requires the Pro add-on)<\/li>\n<\/ul>\n\n<h3>For Developers<\/h3>\n\n<p>Byteflows Travel &amp; Hotel Booking is built to be theme-developer friendly. Integrate it three ways: template overrides, action\/filter hooks, and helper functions.<\/p>\n\n<h4>Template overrides<\/h4>\n\n<p>Drop a file into <code>your-theme\/journeyloom\/&lt;path&gt;<\/code> to override the plugin default (same path under <code>templates\/<\/code>):<\/p>\n\n<ul>\n<li><code>single-trip.php<\/code>, <code>single-hotel.php<\/code>, <code>archive-trip.php<\/code>, <code>archive-hotel.php<\/code><\/li>\n<li><code>partials\/booking-form.php<\/code>, <code>partials\/gallery-hero.php<\/code>, <code>partials\/trip-card.php<\/code>, <code>partials\/hotel-card.php<\/code>, <code>partials\/search-form.php<\/code>, <code>partials\/calendar.php<\/code><\/li>\n<\/ul>\n\n<p>In your own templates you can load any template\/partial (theme-overridable) with:\n    wptm_get_template( 'partials\/trip-card.php', array( 'foo' =&gt; $bar ) );<\/p>\n\n<h4>Action hooks<\/h4>\n\n<p>Single trip: <code>wptm_before_single_trip<\/code>, <code>wptm_single_trip_before_content<\/code>, <code>wptm_single_trip_after_overview<\/code>, <code>wptm_single_trip_after_content<\/code>, <code>wptm_single_trip_before_sidebar<\/code>, <code>wptm_single_trip_after_sidebar<\/code>, <code>wptm_after_single_trip<\/code> \u2014 each passes the trip ID.<\/p>\n\n<p>Single hotel: <code>wptm_before_single_hotel<\/code>, <code>wptm_single_hotel_before_content<\/code>, <code>wptm_single_hotel_after_content<\/code>, <code>wptm_single_hotel_before_sidebar<\/code>, <code>wptm_single_hotel_after_sidebar<\/code>, <code>wptm_after_single_hotel<\/code> \u2014 each passes the hotel ID.<\/p>\n\n<p>Lifecycle: <code>wptm_loaded<\/code> (passes the Plugin instance), <code>wptm_booking_created<\/code>, <code>wptm_booking_status_changed<\/code>, <code>wptm_payment_completed<\/code>, <code>wptm_manual_payment_pending<\/code>.<\/p>\n\n<h4>Filter hooks<\/h4>\n\n<ul>\n<li><code>wptm_trip_post_type_args<\/code>, <code>wptm_hotel_post_type_args<\/code> \u2014 adjust CPT registration (slug, supports, archive\u2026)<\/li>\n<li><code>wptm_destination_taxonomy_args<\/code>, <code>wptm_destination_taxonomy_objects<\/code>, <code>wptm_activity_taxonomy_args<\/code>, <code>wptm_trip_type_taxonomy_args<\/code><\/li>\n<li><code>wptm_trips_query_args<\/code>, <code>wptm_hotels_query_args<\/code> \u2014 modify the WP_Query for the grid shortcodes<\/li>\n<li><code>wptm_locate_template<\/code>, <code>wptm_template_args<\/code> \u2014 override resolved template path \/ passed variables<\/li>\n<li><code>wptm_enqueue_fonts<\/code> (bool), <code>wptm_fonts_url<\/code> \u2014 disable the bundled (self-hosted) fonts or point to your own stylesheet<\/li>\n<li><code>wptm_payment_gateways<\/code> \u2014 register custom payment gateways<\/li>\n<\/ul>\n\n<h4>Re-skinning<\/h4>\n\n<p>All front-end styling is driven by CSS custom properties on <code>:root<\/code> (e.g. <code>--wptm-primary<\/code>, <code>--wptm-font<\/code>, <code>--wptm-radius<\/code>). Override them in your theme to re-brand without touching plugin CSS.<\/p>\n\n<h4>Helper functions<\/h4>\n\n<pre><code>wptm_get_template(), `wptm_locate_template()`, `wptm_format_price()`, `wptm_get_option()`, `wptm_is_feature_enabled()`, `wptm_get_page_url()`, `wptm_get_system_pages()`.&lt;h3&gt;External services&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>This plugin can connect to the third-party services below. <strong>Each is optional and only contacted when you enable and configure the related feature.<\/strong> No data is sent anywhere by default. Demo images are bundled with the plugin \u2014 the importer contacts no external service.<\/p>\n\n<p><strong>OpenStreetMap<\/strong> (only when a trip\/hotel has a location map)\nUsed to display an interactive location map. Map tiles are loaded from the OpenStreetMap tile servers (tile.openstreetmap.org) in the visitor's browser. The Leaflet map library itself is bundled with the plugin (not loaded externally).\nTerms \/ Tile Usage Policy: https:\/\/operations.osmfoundation.org\/policies\/tiles\/ \u2014 Privacy: https:\/\/wiki.osmfoundation.org\/wiki\/Privacy_Policy<\/p>\n\n<p><strong>Stripe<\/strong> (Pro add-on only; when the Stripe gateway is enabled and a customer pays by card)\nProvided by the Byteflows Travel &amp; Hotel Booking Pro add-on. Used to process card payments. Stripe.js is loaded from js.stripe.com on the checkout page, and the booking amount, currency, order number and a payment token are sent to api.stripe.com to create and verify the charge. No card numbers touch your server.\nTerms: https:\/\/stripe.com\/legal \u2014 Privacy: https:\/\/stripe.com\/privacy<\/p>\n\n<p><strong>PayPal<\/strong> (Pro add-on only; when the PayPal gateway is enabled and a customer pays with PayPal)\nProvided by the Pro add-on. The PayPal JS SDK is loaded from paypal.com on the checkout page, and the booking amount, currency and order reference are sent to PayPal's REST API (api-m.paypal.com \/ api-m.sandbox.paypal.com) to create and capture the order.\nTerms: https:\/\/www.paypal.com\/legalhub \u2014 Privacy: https:\/\/www.paypal.com\/privacy<\/p>\n\n<p><strong>Razorpay<\/strong> (Pro add-on only; when the Razorpay gateway is enabled and a customer pays via Razorpay)\nProvided by the Pro add-on. Used to process payments (cards, UPI, netbanking, wallets). The Razorpay Checkout script is loaded from checkout.razorpay.com on the checkout page. The booking amount, currency and order reference are sent to Razorpay's API (api.razorpay.com) to create an order, and the returned payment id\/signature are sent back to verify and capture the payment.\nTerms: https:\/\/razorpay.com\/terms\/ \u2014 Privacy: https:\/\/razorpay.com\/privacy\/<\/p>\n\n<p><strong>WhatsApp Cloud API \u2014 Meta<\/strong> (Pro add-on only; when WhatsApp notifications are enabled with the Cloud API provider)\nProvided by the Pro add-on. Used to send booking\/enquiry\/payment alert messages to the site owner's own WhatsApp number. The alert text (booking number, customer name\/contact, amount, or enquiry details) is sent to graph.facebook.com using the access token and phone number ID you provide. Opt-in: nothing is sent until you install Pro, enable WhatsApp notifications and enter your credentials. Customers are never messaged.\nTerms: https:\/\/www.whatsapp.com\/legal\/business-terms \u2014 Privacy: https:\/\/www.whatsapp.com\/legal\/business-data-privacy<\/p>\n\n<p><strong>CallMeBot<\/strong> (Pro add-on only; when WhatsApp notifications are enabled with the CallMeBot provider)\nProvided by the Pro add-on as an alternative delivery service for the same owner-only WhatsApp alerts. The alert text and your WhatsApp number are sent to api.callmebot.com with the personal API key you obtained from CallMeBot. Opt-in: nothing is sent until you enable the feature and enter your key.\nWebsite &amp; terms: https:\/\/www.callmebot.com\/<\/p>\n\n<p><strong>OpenAI<\/strong> (Pro add-on only; when AI features are enabled and OpenAI is the provider)\nThe AI assistant is part of the Pro add-on. When you or a visitor use an AI feature (search, chat, recommendations, trip\/itinerary\/reply generation), the relevant query and a short catalogue of your public trips\/hotels are sent to api.openai.com using the API key you provide. Opt-in: nothing is sent until you install Pro, enable AI and enter your own key.\nTerms: https:\/\/openai.com\/policies\/terms-of-use \u2014 Privacy: https:\/\/openai.com\/policies\/privacy-policy<\/p>\n\n<p><strong>Anthropic (Claude)<\/strong> (Pro add-on only; when AI features are enabled and Anthropic is the provider)\nSame AI features as above, sent to api.anthropic.com using the API key you provide. Opt-in: nothing is sent until you install Pro, enable AI and enter your own key.\nTerms: https:\/\/www.anthropic.com\/legal\/consumer-terms \u2014 Privacy: https:\/\/www.anthropic.com\/legal\/privacy<\/p>\n\n<p><strong>Custom \/ OpenAI-compatible endpoint<\/strong> (Pro add-on only; when AI features are enabled and \"Custom\" is the provider)\nFor any OpenAI-compatible API you configure by Base URL (for example Groq at https:\/\/api.groq.com\/openai\/v1, Google Gemini's OpenAI-compatible endpoint, OpenRouter, or a self-hosted Ollama). The same AI query data described above is sent to the Base URL you enter, using the API key you provide. Opt-in: nothing is sent until you install Pro, enable AI, choose Custom, and enter a Base URL and key. Please review the terms and privacy policy of whichever provider you configure.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> (or install from the Plugins screen)<\/li>\n<li>Activate the plugin through the 'Plugins' menu<\/li>\n<li>Follow the setup wizard, then go to <strong>Byteflows Travel \u2192 Settings<\/strong> to configure<\/li>\n<li>Start creating trips and hotels!<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20payment%20gateways%20are%20supported%3F\"><h3>What payment gateways are supported?<\/h3><\/dt>\n<dd><p>Manual \/ Bank Transfer works out of the box. Stripe, PayPal and Razorpay online checkout are provided by the optional Byteflows Travel &amp; Hotel Booking Pro add-on. Additional gateways can be added via the <code>wptm_payment_gateways<\/code> filter.<\/p><\/dd>\n<dt id=\"how%20do%20i%20use%20the%20ai%20features%3F\"><h3>How do I use the AI features?<\/h3><\/dt>\n<dd><p>The AI assistant is part of the Byteflows Travel &amp; Hotel Booking Pro add-on and is bring-your-own-key. With Pro installed, go to Byteflows Travel \u2192 Settings \u2192 AI, enable AI and enter your provider API key (OpenAI, Anthropic, or any OpenAI-compatible endpoint such as Groq). Nothing is sent to any AI provider until you do this.<\/p><\/dd>\n<dt id=\"what%20does%20the%20pro%20add-on%20add%3F\"><h3>What does the Pro add-on add?<\/h3><\/dt>\n<dd><p>Online payments (Stripe, PayPal, Razorpay), printable invoices, coupons\/discount codes, priced pickup points and the AI assistant. It's a separate plugin from byteflows.net; install it alongside this free plugin and the extra options appear automatically.<\/p><\/dd>\n<dt id=\"where%20do%20demo%20images%20come%20from%3F\"><h3>Where do demo images come from?<\/h3><\/dt>\n<dd><p>The demo importer uses placeholder images bundled inside the plugin. It does not download images from any external service.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20templates%3F\"><h3>Can I customize the templates?<\/h3><\/dt>\n<dd><p>Yes! Copy any file from the plugin's <code>templates\/<\/code> folder into <code>your-theme\/journeyloom\/<\/code> (keeping the same path) and it will be used instead. You can also extend templates without copying them using the action hooks listed in the Developers section.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Turn WordPress into a complete travel &amp; hotel booking platform \u2014 trip packages, hotels, a smart booking engine, search and manual checkout.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/334999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=334999"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/byteflows"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=334999"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=334999"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=334999"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=334999"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=334999"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=334999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}