Work/Tour booking platform

One platform, three tour operators.

Tour Treck, YatraStart and Tour Musafir run bookings, advance payments and WhatsApp enquiries through one system we built and maintain.

Client
Tour Treck, YatraStart, Tour Musafir
Sector
Adventure tourism, Rishikesh
What we built
Booking site, admin, payments, WhatsApp, hosting
Stack
Laravel, MySQL, Razorpay, WhatsApp Business API
Timeline
[X] weeks to first launch, new operator in [Y] days

The situation

Tour Treck runs a resort and adventure packages out of Shivpuri, near Rishikesh. When we started working with them, bookings came in through Instagram DMs and phone calls. Prices were quoted manually, and if someone wanted add-ons like rafting or a scooty rental, it took several messages back and forth to confirm the total.

They wanted customers to see a price and book directly, but without losing the WhatsApp relationship their audience prefers. Two other operators nearby had the same problem. Instead of building three separate sites, we built one platform and let each operator run it under their own brand.

Tour booking platform homepage

Tour Treck's homepage. YatraStart and Tour Musafir run the same platform with different branding and content.

What we built

Packages and destination search

Operators manage their own packages, destinations and pricing through the admin. Customers can browse by destination or filter by duration and budget. Group departures with fixed dates sit next to custom itineraries.

Booking flow with live pricing

Pick dates, guests and add-ons, and the total updates instantly. Scooty rental is per day and recalculates when checkout changes. Rafting and bungee are per person. Customers can pay in full or put down 20%, and the balance is tracked in the admin.

WhatsApp built in

Every booking sends a WhatsApp confirmation to the customer and a full itinerary alert to the operator. The enquiry buttons open a pre-filled WhatsApp message instead of a form, because that's how people in this market actually talk to businesses.

One codebase, three brands

Theme, content, payment account, phone numbers and policies are all configured per operator. A bug fix for one goes live for all three the same day. Adding a fourth operator is just configuration.

The hard part

Getting add-on pricing to agree with itself

Some add-ons are priced per person, some per day, some are flat fees, and some only apply to certain packages. Version one calculated this in the browser. The operator kept finding that what the customer saw didn't match what got charged.

We moved all pricing to a single server-side rule engine. The booking page, confirmation email and admin all read from the same source. We wrote tests for each add-on type against real packages (per_person, per_day, flat, package_scoped). The browser now only shows a quote; it never calculates one. The mismatch hasn't come back.

That fix took a week we hadn't planned for. But it also meant the operator stopped manually checking every booking, which was the whole point.

Next case study

Eternal Group India

Project listings, brochure downloads, a plot calculator and lead routing for a property developer in Dholera SIR and Indore.

Read the case study
Screenshot of Eternal Group India

Tell us what you are building

We reply within one business day. If we are not the right fit, we will say so.

Start a project