=== Travelly – Tour & Travel Booking Manager for WooCommerce === Contributors: magepeopleteam, aamahin Plugin link: https://mage-people.com/ Tags: tour booking, travel agency, travel booking, tour operator, hotel booking Requires at least: 4.4.0 Tested up to: 7.0 Requires PHP: 7.0 Stable tag: 2.3.0 License: GPL v2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Travelly is a WordPress tour and travel booking plugin for WooCommerce. Sell tours, manage hotel bookings, and accept payments online. == Description == **Travelly – Tour & Travel Booking Manager for WooCommerce** is a complete WordPress booking plugin built for travel agencies, tour operators, and hotel owners who want to sell and manage bookings directly from their website. Launch a fully functional travel booking site in under five minutes, no coding required. With Travelly, you can create unlimited tour packages, set custom pricing and schedules, manage guest information, and accept payments through any WooCommerce-supported gateway — all from your familiar WordPress dashboard. Prefer to run without WooCommerce? Switch to **Custom** booking mode and Travelly handles the whole booking flow itself — its own checkout, its own order records, and the built-in Offline Payment method — with no WooCommerce install required. Launch your travel booking site in under five minutes using the most feature-rich booking plugin available. === Explore the Demo: === 🌐 [Live Demo](https://wptravelly.com/) 📘 [Online Documentation](https://docs.mage-people.com/plugins/wptravelly/overview) 🛍️ [Install Travelly](https://downloads.wordpress.org/plugin/tour-booking-manager.zip) = 🏆 Trusted by 1,000+ WordPress Websites = Travelly is one of the most popular free tour and travel booking plugins in the WordPress.org repository, rated 4.8 out of 5 stars by travel agencies and tour operators worldwide. = ✨ Key Features = * **Full WooCommerce Integration** – Sell tour packages using your existing WooCommerce store and accept payments through every gateway WooCommerce supports (Stripe, PayPal, and more). * **Works Without WooCommerce** – Choose Custom booking mode to use Travelly's own checkout, order records, and built-in Offline Payment method instead. * **Unified Booking Manager** – One admin screen for every booking, whether it came from WooCommerce or the built-in checkout, with status changes, order notes, and CSV export. * **Comprehensive Tour Management** – Add tour name, description, ticket type, quantity, price, category, and organizer. * **Extra Services** – Offer optional add-ons with their own price and quantity. * **Google Maps Integration** – Show tour locations visually on an interactive map. * **Flexible Scheduling** – Set start date, end date, time options, and off-schedule (blocked) dates for every tour. * **Guest Information** – Capture and manage guest details directly from the booking details screen. * **Hotel Booking Support** – Manage hotel listings alongside your tour packages. * **Customer Wishlist** – Let visitors save tours to a wishlist from any listing and review them in their account. * **Modern Admin Experience** – Redesigned tour editor with sidebar navigation and autosave, a searchable tour list with Classic/Compact/Modern layouts, plus Welcome and System Status pages. * **Responsive & SEO-Friendly Design** – Fast, mobile-friendly booking pages that are optimized for search engines. * **Cross-Browser Compatibility** – Consistent experience across all modern browsers. * **Multilingual Ready** – Works with WPML and Polylang for multilingual travel websites. * **Powerful Shortcodes & Gutenberg Blocks** – Display tour lists, search forms, filters, and hotel listings anywhere using shortcodes or blocks. * **Works With Any Theme** – Fully compatible with any standard WordPress theme that supports WooCommerce. = 🧱 Gutenberg Blocks Included = Travelly ships with 8 ready-to-use blocks: 1. Tour Top Search 2. Tour List 3. Tour Top Filter 4. Tour Location List 5. Tour Search Result 6. Tour Hotel List 7. Tour Registration 8. Related Tours = 🔧 Shortcodes = Display your tours anywhere on your site using flexible shortcodes: `[travel-list cat='' org='' style='grid' show='' pagination='no' sort='ASC' city='' country='' status='']` **Tour list view** `[travel-list style='list']` **Tour grid view** `[travel-list style='grid']` **Grid styles (Lotus, Flora, Blossom, Orchid)** `[travel-list style='lotus' column=3]` `[travel-list style='flora' column=3 show='15' pagination='yes']` `[travel-list style='blossom' show='9' column=3 pagination='yes']` `[travel-list style='orchid' column=3 pagination='yes' show=12]` **Tour location grid** `[travel-location-list column=4 show=4]` **Tour search form** `[ttbm-top-search]` **Tour list without sidebar filter** `[travel-list style='grid' show='9' column=3 pagination='yes' sidebar-filter='no']` **Tour list with top filter** `[ttbm-top-filter style='list']` **Tour list with modern filter bar** `[ttbm-tour-list style='grid' column=3 show='9' pagination='yes']` **Expired tours only** `[travel-list style='list' status='expired']` **Featured / popular / trending / deal-discount tours** `[wptravelly-tour-list type='feature' column=2 show=4 carousel='no']` `[wptravelly-tour-list type='popular' column=2 show=4 carousel='no']` `[wptravelly-tour-list type='trending' column=2 show=4 carousel='no']` `[wptravelly-tour-list type='deal-discount' column=2 show=2 carousel='no']` **Hotel search form** `[wptravelly-hotel-search]` **Hotel search result** (create a page with slug `hotel-search-result`) `[wptravelly-hotel-search-list]` **Hotel list with sidebar filter** `[wptravelly-hotel-list sidebar-filter='yes' price-filter='yes']` **Booking confirmation page** (used by the built-in checkout in Custom booking mode) `[ttbm-booking-confirmation]` = 💳 Payment Gateways = Travelly supports two booking modes, switchable from **Tour Settings → Payments**: * **WooCommerce mode** – bookings go through the WooCommerce cart and checkout, so every WooCommerce-supported payment gateway (Stripe, PayPal, and dozens more) works out of the box. * **Custom mode** – Travelly runs its own checkout and stores its own order records, so you can take bookings with WooCommerce deactivated. **Offline Payment** (bank transfer, pay on arrival, cash) is included free; PayPal and Stripe for Custom mode ship with Travelly PRO. = 🚀 Premium Features (PRO Version) = Upgrade to [Travelly PRO](https://mage-people.com/product/woocommerce-tour-and-travel-booking-manager-pro/) for advanced tour and travel booking management: * 🎫 Downloadable PDF Tickets * 📝 Custom Registration Forms * 📧 Automatic Email Confirmations with PDF Ticket * 📊 CSV Export of Attendee List * 📅 Recurring Tours with Specific and Repeated Dates = 🧩 Available Add-ons = Extend Travelly further with these premium add-ons: * [Backend Order Addon](https://mage-people.com/product/backend-order-addon-for-tour-booking-manager/) – create bookings manually from the admin dashboard * [Seat Plan Addon](https://mage-people.com/product/seat-plan-addon-for-tour-booking-manager/) – let customers pick specific seats * [Seasonal Pricing Addon](https://mage-people.com/product/seasonal-pricing-addon-for-woocommerce-tour-plugin/) – set prices by date range * [Group/Bulk Pricing Addon](https://mage-people.com/product/group-pricing-or-bulk-qty-discount-addon-for-tour-plugin/) – quantity-based discounts * [Early Bird Pricing Addon](https://mage-people.com/product/early-bird-pricing-addon-for-tour-booking-manager/) – time-limited discounts * [QR Code Addon](https://mage-people.com/product/qr-code-addon-for-tour-booking-manager/) – QR code check-in and ticket verification = 🎨 Tour Page Templates = Choose from multiple tour details page styles, including a Viator-style template, to match your travel website's design. = 🛠️ Support & Documentation = * 📘 [Documentation](https://docs.mage-people.com/plugins/wptravelly/overview) * 📺 [Video Tutorial: How to Install & Create a Tour](https://www.youtube.com/watch?v=ZQ99Z3kOMws) * 📩 [Submit a Support Ticket](https://mage-people.com/submit-ticket/) * 💬 [WordPress.org Support Forum](https://wordpress.org/support/plugin/tour-booking-manager/) = 🔒 Privacy Notice = Travelly uses the [Appsero](https://appsero.com) SDK to collect basic telemetry data, but only with the user's explicit confirmation via an admin notice. Appsero does not gather any data by default. [Learn more about how Appsero collects and uses data](https://appsero.com/privacy-policy/). == Installation == = Uploading in WordPress Dashboard = 1. Navigate to Plugins → Add New in your WordPress dashboard. 2. Click the Upload Plugin button. 3. Select the `tour-booking-manager.zip` file from your computer. 4. Click Install Now. 5. Activate the plugin from the Plugins page. = Using FTP = 1. Download `tour-booking-manager.zip`. 2. Extract the `tour-booking-manager` folder to your computer. 3. Upload the `tour-booking-manager` folder to the `/wp-content/plugins/` directory on your server. 4. Activate the plugin from the Plugins page in WordPress. = Getting Started = 1. Make sure WooCommerce is installed and activated. 2. Go to the Travelly menu in your dashboard and run the Quick Setup wizard. 3. Create your first tour with pricing, schedule, and location details. 4. Add a shortcode or block (e.g. `[travel-list]`) to any page to display your tours. 5. Configure your preferred WooCommerce payment gateway and start accepting bookings. == Frequently Asked Questions == = Does Travelly require WooCommerce? = No longer. Travelly runs in two booking modes. In **WooCommerce mode** it uses the WooCommerce cart, checkout, and payment gateways, exactly as before. In **Custom mode** it uses its own checkout and order records with the built-in Offline Payment method, so tours, hotels, listings, and bookings all work with WooCommerce deactivated. Pick the mode under Tour Settings → Payments. = Where do bookings show up? = Under **Tours → Tour Booking**. That screen lists bookings from both engines — WooCommerce orders and built-in checkout orders — so you can change status, add order notes, and export to CSV from one place. Notes added to a WooCommerce booking are written into the real WooCommerce order notes, not a separate copy. = Can I sell tour packages separately from other WooCommerce products? = Yes, Travelly lets you sell tours and travel packages as their own product type, independent from regular WooCommerce products. = Which payment gateways are supported? = Every payment gateway supported by WooCommerce works with Travelly, including Stripe, PayPal, and many regional gateways. = Is Travelly compatible with my WordPress theme? = Yes. Travelly is designed to work with any standard WordPress theme that supports WooCommerce. = Can I manage hotel bookings as well as tours? = Yes, Travelly includes hotel listing and hotel search shortcodes so you can manage both tours and hotel bookings from one plugin. = Does Travelly support multiple languages? = Yes, Travelly is multilingual-ready and works with WPML and Polylang. = Can visitors save tours for later? = Yes. When WooCommerce is active, visitors can add tours to a wishlist from any listing and review them under the Wishlist tab in My Account. Admins can see who wishlisted what from the Wishlist tab on the Tour List screen. = Is there a PRO version with more features? = Yes, [Travelly PRO](https://mage-people.com/product/woocommerce-tour-and-travel-booking-manager-pro/) adds PDF tickets, custom registration forms, automatic email confirmations, CSV attendee export, and recurring tours. = Where can I get support? = Use the [WordPress.org support forum](https://wordpress.org/support/plugin/tour-booking-manager/) or [submit a support ticket](https://mage-people.com/submit-ticket/) directly to the development team. == Changelog == = 2.3.0 – 20 August 2026 = **Booking & Availability** * New (PRO): Schedule Planner — a Schedule Planner tab on the tour editor for single-date and date-range exceptions to a tour's schedule: cancel a date outright, add or remove individual time slots, or reopen a day the off-day/off-date rules had closed, all without editing the recurrence underneath. Bulk rules can be narrowed to chosen weekdays or an explicit date list. * New (PRO): Capacity Override — a Capacity Override tab for giving a ticket type a different seat count on one date, a date range, or a single time slot, as an add, a reduce, or a fixed override. Where a shared pool is in play (Shared Quantity or Time-wise Stock), the override adjusts that pool. * New: Time-wise Stock — a repeated tour can give every time slot its own seat count, so the 09:30 departure sells out while 13:30 still has seats. Turn it on under Dates → Tour Time Slots and fill in "Slot Stock" per slot; leave a slot empty to keep using the ticket type capacity for it. The slot's seats are one shared pool across all ticket types, shown on the time picker ("N seats left" / "Sold out", with sold-out slots disabled) and enforced on the quantity steppers, at add-to-cart, and again at checkout. Where both are configured, a slot's stock takes precedence over PRO's tour-wide Shared Capacity. * Fixed: Bookings taken through Custom (non-WooCommerce) checkout never appeared in Bookings & Guests. The listing filtered on the "which statuses reserve a seat" setting (processing/completed), but custom-checkout bookings are recorded as pending — so the screen was empty no matter how many bookings had been taken. The listing now shows every booking and leaves narrowing to its own Status filter. * Fixed: Bookings & Guests rendered a blank page on sites running without WooCommerce, because the WooCommerce compatibility shim was missing methods that the page called. * Fixed: Tour dates are stored on order line items again (`_ttbm_date` / `_ttbm_end_date`). Without them, anything parsing the date — notably the PRO confirmation email's `{tour_date}` placeholder — printed the day the email was sent instead of the tour date. * Fixed: Tours duplicated by older versions shared the original's hidden WooCommerce product. Because that product is sold individually, only one of the colliding tours could be in a cart at a time and customers were bounced back to the booking form; orders, emails, and invoices also carried the wrong tour name. A one-time repair pass now relinks or recreates the affected products. * Fixed: Duplicated tour pricing in the cart. * Fixed: A PRO "Special Date" can now open a tour on a day the recurrence pattern excludes. Previously a special date could only re-time a departure that already existed, so one saved on an off day returned its time slot but never produced a bookable date. **Front End** * New: Travello theme — a complete single-tour page design with its own hero, gallery, itinerary, and booking sidebar, plus a matching grid layout for listings. * New: Tour list filtering rebuilt — AJAX top search with same-page results, date range picker, active filter chips above both columns, sortable results (Recommended, Highest Rated, Duration), and price/rating filters. The search form still posts to `/find/` as a plain-GET fallback for visitors without JavaScript. * New: Optional per-tour rating display (Display settings → Rating & Reviews). Off by default; the star row stays hidden unless both the average and the review count are filled in. * New: Smart theme styling with skeleton loaders on the booking interface. * Improved: Tour list and grid cards always show a price — ticket and sale prices are used when the start-price field is empty, and card prices are no longer hidden behind the details-page display toggle. * Improved: Refreshed FAQ, day-wise schedule, related tours, tour guide, tags, and "Ask a question" layouts. * Fixed: "Next Tour" date rendered as the current date and time on repeated tours. `get_date()` returns `Y-m-d H:i` for repeated tours and a bare `Y-m-d` for the others; the hero appended a time regardless, producing a value `strtotime()` rejects — which renders as "now". **Admin Experience** * New (PRO): Newly shipped tour editor tabs carry a short-lived "new" marker so they are not missed in a long sidebar. The countdown starts the first time your own site renders the tab — not from a fixed release date — so a shop that updates later still gets the full window, and the marker retires itself after five days with nothing to dismiss. Adjustable via the `ttbm_pro_feature_badge_days` filter (return 0 to switch markers off). * New: Per-slot "Slot Stock" field on every time slot row (Default plus each weekday), revealed by the Time-wise Stock toggle. Values entered are kept when the toggle is switched off, so turning it back on restores them. * Improved: Bookings admin menu unified, and the Pro badge removed from the bookings submenu. * Improved: Dummy-data import reworked. * Fixed: Category and Destination sidebar filters matched nothing on many installs. They compared real taxonomy terms against the legacy post-meta mirrors, which are only written by the classic tour edit screen — so tours assigned by import, Quick Edit, or the taxonomy screens never matched. Both filters now query the taxonomies directly. * Fixed: The last Extra Service row could not be deleted. The shared row-remove handler refused to act on a single remaining row, which is right for ticket types but wrong for extra services, where a blank starting row is rendered by default. * Fixed: Admin stylesheet changes did not reach browsers. `ttbm_admin_modern.css` was cache-busted by the plugin version rather than its own modification time, so edits stayed invisible until the next release. * Fixed: Local tour assets no longer go through URL stream wrappers. * Improved: The tour editor saves in a fraction of the time. Clicking Update used to spend about half a second in the browser before the request was even sent: the date fields announced a change event each time they were synced -- 16 events dispatched against every delegated handler on the page, and one of those listeners re-marked the form as unsaved mid-save -- while the save buttons ran their whole preparation pass twice and issued four blocking helper requests along the way. Saving now takes well under a fifth of that, and an Update pressed while a background auto-save is running no longer waits three seconds for its turn. * Improved: The tour edit screen loads far lighter. The icon picker wrote all ~4,800 of its tiles into every page load even though the popup is only shown on demand, which was 1.5MB of the 2MB page and left roughly ten thousand extra elements for every later form read to walk. The tiles are now fetched the first time the picker is opened; searching, category tabs, and selection are unchanged. **Developer** * New: `ttbm_timewise_slot_stock` filter to supply a slot's stock from elsewhere, and `ttbm_is_timewise_stock_enabled` to override the per-tour switch. * New: `ttbm_admin_booking_list_statuses` filter to restrict which order statuses the admin booking and attendee listings show (defaults to all). * New: `TTBM_Function::is_timewise_stock_enabled()`, `get_timewise_stock()`, `get_timewise_slot_availability()` and `get_timewise_sold()`. * Improved: The WooCommerce fallback shim degrades gracefully — an unknown method returns false and an unknown property null — so `function_exists('WC') && WC()->something()` guards short-circuit instead of fataling. Use `TTBM_Global_Function::has_woocommerce()` to branch on WooCommerce actually being active. * Improved: Slot meta holding a malformed row no longer takes the tour page down with a fatal on PHP 8. * New: `ttbm_lazy_icon_picker` filter — return false to render the icon picker inline again instead of loading it on first open. * New: `TTBM_Select_Icon_image::render_icon_picker_markup()` renders the picker body, and the `ttbm_icon_picker` admin-ajax action serves it to the browser (nonce plus `edit_posts`). * New: `window.ttbmAutosaveHandlesSave` is set by the tour editor auto-save module when it owns the save. Anything hooking the save buttons should stand down while it is true, rather than preparing or persisting the form a second time. = 2.2.0 – 28 July 2026 = **Booking & Payments** * New: Custom booking mode — Travelly now ships its own checkout and order records, so tours and hotels can be sold with WooCommerce deactivated. Switch modes under Tour Settings → Payments. * New: Offline Payment gateway (bank transfer, pay on arrival, cash) included free, with a pluggable gateway API (`ttbm_register_payment_gateways`) that PRO extends with PayPal and Stripe. * New: Built-in checkout modal with guest checkout, order review, and a booking confirmation page powered by the new `[ttbm-booking-confirmation]` shortcode. * New: Payments settings tab with a booking-mode switch, gateway icons, guest-booking control, and an adaptive admin notice when no payment method is usable. * New: "Tour Booking" admin screen listing bookings from both engines — WooCommerce orders and built-in checkout orders — with status changes, order notes, search/filtering, and CSV export. Notes on a WooCommerce booking write into the real WooCommerce order notes. * New: Optional login gate on the booking form, with a Confirm Booking button that completes in place. * Improved: Booking data is normalized into one shape before display, so tour, date, ticket, guest, and extra-service details render consistently across the checkout, confirmation, and admin screens. * Improved: The custom orders screen is fully responsive down to mobile. **Admin Experience** * New: Redesigned tour editor — sidebar navigation, deep-linkable tabs, background autosave with toast feedback, skeleton loading, and inline validation for dates, tickets, and pricing. * New: Tour List dashboard with AJAX filtering and pagination plus switchable Classic, Compact, and Modern layouts. * New: Guides and Ticket Types are now managed as tabs on the Tour List screen with add/edit/delete modals; their separate submenus are hidden. * New: Welcome page and a System Status diagnostics page. * New: Modular settings architecture with dedicated panels for pricing, dates, extra services, gallery, location, and sidebar, on a modern CSS design-token admin layer. * New: Pro Features menu listing the available premium add-ons. * New: WooCommerce installer popup and dummy-data import rebuilt as memory-safe stepped AJAX requests, so they no longer time out on small hosts. * Improved: Google Maps API key handling and map embedding in location settings. * Improved: Ticket type icons can be replaced by clicking the existing icon. **Front End** * New: Modern tour details redesign — reworked hero, sticky sidebar CTA, day-wise schedule timeline, expandable inclusions and features, and a scoped stylesheet that stays out of your theme's way. * New: Smart theme booking flow with its own date picker, ticket, and extra-service templates. * New: Wishlist — save tours from any listing, review them under the My Account Wishlist tab in grid or list view, and see wishlisted tours per customer from the admin Wishlist tab (requires WooCommerce). * New: `[ttbm-tour-list]` shortcode with a modern filter bar, "Showing X of Y" counter, and This Week / This Month / This Year tab filters that work together with Load More. * New: Auto-related tours, featured image slider, off-schedule (blocked) dates, and per-tour custom titles for tours and hotels. * New: New grid list style plus refreshed Lotus, Flora, Blossom, and Orchid cards. * Improved: Shortcode output now aligns with the active theme's container width. * Improved: Travel translation settings are applied to booking labels. * Improved: Korean translations for the modern filter bar; updated language files. **Performance** * Improved: Frontend and admin assets only load on pages and screens that need them (filterable via `ttbm_load_assets` and `ttbm_load_admin_assets`). * Improved: Asset cache-busting uses the plugin version instead of `time()`, so browser and CDN caches actually work. * Improved: Faster list shortcode rendering; list output is capped by `ttbm_list_render_cap` (default 300) with client-side pagination. **Fixes** * Fixed: "Undefined array key 0" notice on tour list cards. * Fixed: Fatal errors and connection timeouts on the tour list and tour details pages. * Fixed: Syntax error in the filter/pagination handler. * Fixed: WooCommerce bookings were dropped when the PRO add-on was inactive. * Fixed: Extra-service prices were misallocated across tickets; each ticket now gets its correct share. * Fixed: Hotel room display bug, hotel expired label, and checkout total price. * Fixed: Rooms no longer auto-load outside hotel detail pages. * Fixed: Tickets were loaded multiple times when changing the date. * Fixed: Wishlist toast feedback on mobile; the admin wishlist table now lists real customers correctly. * Fixed: Related tours no longer drop the list when only one result remains. * Fixed: Wishlist button is guarded when the wishlist class is unavailable. * Fixed: Global settings not saving in some setups; settings tab deep links now resolve to the right tab. * Fixed: Numerous responsive and styling issues across list, filter, hotel, and registration views. **Developer** * New: `do_action('ttbm_after_ticket_price', $tour_id, $ticket_name, $tour_date)` for injecting markup after a ticket price. * New: `apply_filters` hook making booking availability overridable for non-WooCommerce checkouts. * New: `ttbm_register_payment_gateways` action for registering custom standalone gateways. * Improved: Plugin loading and asset management centralized in `TTBM_Dependencies`. = 2.1.9 – 15 May 2026 = * New: Customer dashboard with booking cancellation requests (`[ttbm-customer-dashboard]`) * New: Admin management of cancellation requests with approve/reject and notifications * New: Global cancellation window setting in Travel Settings * Improved: Performance and speed optimization * Fixed: Starting price display issue * Removed: Unnecessary legacy code = 2.1.8 – 11 Mar 2026 = * Fixed: Frontend settings issue * Fixed: Language setting issue = 1.8.3 – 23 Aug 2024 = * Fixed: Style issues and general bugs = 1.8.2 – 20 Aug 2024 = * Improved: Styles and code optimization * New: Additional developer hooks = 1.7.8 = * Security: Security issue fixed * Improved: Code optimization = Earlier versions = * 1.5.3–1.5.6 (Jul–Aug 2023): Tour list menu, improved quick setup, WPML & Polylang multilanguage support, Astra theme fixes, admin notes, new hooks * 1.4.6–1.5.2 (Feb–May 2023): Hotel saving fix, reviews & ratings fix, related tour shortcode, email format fix, general bug fixes * 1.1.3–1.4.5 (2022–2023): New UI, Viator-style template, PHP error fixes, code optimization * 1.0.0–1.0.7 (2021): Initial release, Elementor support, hotel type, new hooks and shortcode attributes [View the full changelog](https://plugins.trac.wordpress.org/log/tour-booking-manager/) == Upgrade Notice == = 2.3.0 = Adds per-time-slot seat counts (Time-wise Stock), the new Travello theme, and a rebuilt tour list filter. Also fixes bookings taken through Custom checkout not appearing in Bookings & Guests, and a blank Bookings page on sites without WooCommerce. Recommended for all users. = 2.2.0 = Major update. Travelly can now take bookings without WooCommerce using its own checkout and free Offline Payment method, adds a unified booking manager for both engines, a redesigned admin and tour details page, a customer wishlist, and large performance gains. Back up your site before updating. = 2.1.9 = Adds the new customer dashboard with self-service cancellation requests, plus performance improvements and a starting-price fix. Recommended for all users.