Travel Agency & Tour Operator Management
The ECOSIRE Travel Agency & Tour Operator Management app turns Odoo into a complete back office and storefront for a travel business. It folds what competitors sell as ten separate add-ons — packages, hotels, flights, transport, meals, attractions, visas, expenses, CRM and a booking website — into one application, then adds modern extras: payment plans, agent credit & net-rate rules, package reviews, digital e-waivers and premium OWL dashboards.
For Hajj & Umrah operators, add the companion Hajj & Umrah Management module on top.
| Technical name | ecosire_travel_management |
| Current shipped version | 17.0 -> 17.0.1.0.6, 18.0 -> 18.0.1.0.4, 19.0 -> 19.0.2.0.2 |
| Compatibility | Odoo 17 / 18 / 19 (Community or Enterprise) |
| Price | USD 1,000 (one-time) |
| License | OPL-1 (Odoo Proprietary License v1.0) |
| Category | Services / Travel |
Explore a fully-populated system at travel.demo.ecosire.com — log in with admin / admin.
What it does
- Tour package builder — one package holds a day-by-day itinerary plus typed component lines (hotel, flight, transport, meal, attraction, visa, insurance, extra expense). Multi-currency cost rolls up automatically; a markup or fixed margin derives the sale price.
- Sellable packages — every published package becomes a
product.product, so it can be sold through Sales and the public website, with its price and image always kept in sync. - Travel CRM — an enquiry → quotation → booking pipeline with stages, sources and salespeople.
- Bookings & travellers — confirm, invoice, track paid/balance, print vouchers; each traveller carries passport, nationality, age, room and seat.
- Payment plans / installments — a deposit plus a scheduled installment ladder per booking, with paid/due/overdue computed from the invoices, surfaced in the customer portal.
- Agents & commissions — B2B agents and sub-agents with automatic commission generation, credit limits, and per-package/category/supplier/market net-rate, markup or discount override rules.
- Supplier management — airlines, hotels, transport, DMCs and visa services, with contracts protected by a no-overlap constraint.
- Public website + eCommerce — a branded package storefront (
/travel/packages), online enquiry and booking that feed straight into Odoo, package reviews & ratings, and a Featured Packages homepage snippet. The shop lists only travel packages — never unrelated products. - Customer portal — My Bookings with itineraries, travellers, invoices, downloadable vouchers, and click-wrap digital waivers (no Enterprise dependency).
- Notifications — booking-confirmation email and SMS, an upcoming-travel reminder cron, and one-click WhatsApp (click-to-chat).
- Premium dashboards & reporting — the app opens on a modern OWL Chart.js dashboard (KPI tiles + revenue trend, bookings-by-package, revenue-by-destination, pipeline), backed by native graph & pivot reports.
What's new in 18.0.1.0.4 / 17.0.1.0.6
Odoo 17 and 18 only. The 19.0 build already behaves this way and is unchanged.
- List totals show the amount instead of a dash (17 and 18). On a database that uses one currency, the currency column is hidden, and the Bookings, Commissions, Payment Plans, Supplier Contracts, Agents and Packages lists showed "—" under every money column instead of the total. The totals now show the amount. The currency column stays hidden unless you use several currencies.
- Packages, Enquiries, Bookings and Destinations open on Odoo 17 (17 only). Opening any of these menus showed "Odoo Client Error" and no records, because the kanban cards used a card layout that Odoo 17 does not support. The cards, including the package photo gallery, now use the Odoo 17 layout. On each card the traveller count and the assignee are now spaced apart.
- Dashboard access and drill-downs on Odoo 17 (17 only). The dashboard now uses the Odoo 17 access check, so it loads for every user who may read bookings. Clicking the Bookings (MTD) or Confirmed tile, or the empty state's View bookings button, now opens the matching bookings list.
What's new in 19.0.2.0.2 / 18.0.1.0.3 / 17.0.1.0.5
All three series. This release ships the same two fixes on Odoo 17, 18 and 19.
- The operations dashboard reads correctly in dark mode, on a phone, and before there is any data.
- Dark mode: the KPI and chart cards now follow the active theme, and chart text and grid lines take their colour from it. Before, the cards kept a white background in dark mode, so values and chart titles were almost invisible.
- Phone: the season selector keeps its normal height on small screens instead of stretching to a tall box.
- No data yet: a new database no longer shows five zero tiles and nothing else. The dashboard explains that there is no activity yet and offers the two next steps: create a package or view bookings.
- Load errors: if the dashboard cannot load, it shows a plain explanation and a Retry button. The technical message is still available under Technical details.
- Grouping enquiries by stage works on every series. When you group the enquiries list or kanban by stage, all five stages are listed, including the empty ones. On Odoo 17 this grouped view previously raised an error and showed nothing.
What's new in 19.0.2.0.1
Odoo 19 only. The 17.0 and 18.0 builds did not receive these changes.
- Customer portal fix (19.0.2.0.1). On the newest Odoo 19 builds, the portal home page could turn into an error page for every signed-in customer, because the My Bookings badge used a permission check that Odoo has since removed. The badge now uses the current method. It still shows the customer's own booking count, and shows nothing when the customer has no access to bookings.
- Withdrawing a tour takes it off sale everywhere (19.0.2.0.0). A package has an Unpublish action. It removes the package from the storefront, clears its Featured flag and unpublishes the sale product behind it, so the tour can no longer be bought in the eCommerce shop. Archive and Reset to Draft unpublish the package first. Before this release an archived package left the travel listing but stayed buyable in the shop.
- Category visibility follows the whole tree (19.0.2.0.0). Each package category shows a computed Visible on Website state. Unpublishing a parent category hides its entire branch, and the storefront category filter, package listing, package page and homepage selection all apply the same visibility rule.
- Faster dashboard on long booking histories (19.0.2.0.0). Revenue, passenger and revenue-trend figures are computed with grouped database queries, so the dashboard stays quick as bookings accumulate.
- Translatable (19.0.2.0.0). The module ships a translation template (
i18n/ecosire_travel_management.pot), so it can be translated through Odoo's standard translation workflow.
Who it's for
Independent travel agents, tour operators, DMCs, holiday and corporate-travel companies — anyone selling packaged trips who wants bookings, a website, accounting and reporting in one Odoo system.
Requirements
| Requirement | Detail |
|---|---|
| Odoo | 17.0, 18.0, or 19.0 (Community or Enterprise) |
| Odoo dependencies | base, mail, contacts, sale_management, account, purchase, website, website_sale, portal, sms |
Website and portal addresses
These are the public pages the module adds to your Odoo website. Link them from your menus, campaigns or partner sites.
| Address | What it is |
|---|---|
/travel/packages | Package storefront with filters (paged as /travel/packages/page/<n>) |
/travel/package/<package> | Package detail page with itinerary, inclusions, gallery and reviews |
/travel/package/<id>/enquiry | Enquiry form on the package page; each submission creates a Travel CRM enquiry |
/travel/package/<id>/review | Review form on the package page; reviews wait for moderation before they show |
/my/bookings | Customer portal: My Bookings list for signed-in customers (paged as /my/bookings/page/<n>) |
/my/booking/<id> | One booking in the portal: travellers, itinerary, invoices and voucher |
/my/booking/<id>/waiver | Online waiver signing for that booking |
The back-office dashboard loads its figures from /ecosire_travel/dashboard_data. That endpoint is internal: it answers only signed-in Odoo users and returns only records they are allowed to see. You never need to configure it.
Sample data
Install the optional ECOSIRE Travel & Hajj Suite — Sample Data module on a demo/evaluation database to populate ready-made packages (with images), bookings, agents and reviews. The product modules themselves ship completely clean — no sample records are ever created on a normal install, and uninstalling the sample-data module removes every demo record.
Integration-ready (roadmap)
The suite is built to extend toward GDS/flight (Amadeus, Sabre, Travelport), hotel/transfer aggregators (TBO, Hotelbeds), OTA/channel managers and online payment-gateway capture. These require paid third-party API access and are offered as scoped add-ons rather than bundled stubs.
Getting started
- Install Travel Agency & Tour Operator Management.
- Create your destinations, seasons and package categories under Travel → Configuration.
- Build a package with its itinerary and components, set the markup, then Confirm and Publish.
- Take bookings from the CRM pipeline or the public website; invoice and (optionally) add a payment plan.
- Watch it all on the Travel → Dashboard.