Classic Bike Adventure
A custom-built booking engine for global motorcycle expeditions
- Live motorcycle inventory
- English + German
- automated deposits + invoices
Client
Classic Bike Adventure

Classic Bike Adventure runs fixed-date, small-group motorcycle expeditions across some of the world's most demanding routes — from Himalayan mountain passes to the Panamericana — with a legacy rooted in German-speaking markets and a growing English-speaking audience. Outsourcify rebuilt the company's WordPress site from the ground up: a bespoke theme, a booking system coded entirely in-house in place of off-the-shelf e-commerce plugins, and the operational depth needed to keep four connected data structures, live motorcycle inventory, multi-currency payments and two languages in sync.
Results
Challenge
A generic e-commerce plugin treats every product as a flat item with a single stock count. Classic Bike Adventure's tours don't work that way: a single departure date carries its own participant limit, its own set of available motorcycle models, and pricing that shifts with room configuration, passenger count and season. Some itineraries — cross- continental trips that involve importing a rider's own machinery, visas or international permits — can't be booked automatically at all; they need a person to pre-qualify the traveler first. The legacy site also carried a decade of organic search equity that the move to a new domain and platform could not afford to lose, and the company needed room to add a second brand, Classic Adventure, without rebuilding the platform again.
Solution
Outsourcify built the reservation system entirely from scratch on top of WordPress, avoiding WooCommerce and commercial booking plugins to keep the codebase lean and the admin workflows matched to how the company actually operates. Four custom post types — Tour, Departure, Motorcycle Model and Booking — track availability at the departure level, so the platform can show exactly how many motorcycles of a given model remain for a specific date and disable options automatically once inventory hits zero. Pricing logic accounts for room type, passenger count and seasonal rate variations. Currency is handled through a deterministic, admin-controlled rate table — EUR and USD prices are entered as fixed, round amounts rather than pulled from a live exchange-rate feed — with IP-based geolocation applying the right table automatically and a one-time selection modal stepping in when detection fails or a visitor's currency isn't supported. The currency is then locked to that session for the rest of checkout. A direct Revolut API integration, backed by webhooks, captures deposit payments instantly, updates the admin UI in real time, and triggers automated PDF invoices carrying the client's legally required disclaimers. For vehicle-extended, harder-to-qualify itineraries, the booking flow routes to a manual inquiry form instead of automated checkout, preserving human oversight where it matters. WPML delivers the site natively in English and German, and the underlying data architecture was designed to support additional regional brands without a platform rebuild. A structured technical SEO migration — deterministic 301 redirects, granular noindex controls and hreflang mapping — protected the site's existing search visibility through the domain change.
Tools
WordPress (bespoke theme), custom CPTs, Revolut API, WPML
Methodology
Custom development / structured legacy migration
Tools
WordPress (bespoke theme), custom CPTs, Revolut API, WPML
Timeframe
6 months
A booking engine built from scratch, not a retail plugin
Rather than build on WooCommerce or a travel-booking plugin — both of which add code weight, security surface and rigid data models — Outsourcify coded the entire reservation system from the ground up on top of a bespoke WordPress theme. The result is a lighter, faster site and an admin interface shaped around how Classic Bike Adventure actually runs its tours, not around a generic e-commerce checkout.

A five-step journey, no account required
Booking a tour is compressed into a single session with no forced account creation. A rider selects a tour and lands on the booking interface for that specific departure; the system lists every upcoming date and checks live inventory against it, automatically disabling any date that's full and routing riders instead to a direct "contact us" link so staff can handle edge cases manually. From there, the rider picks a motorcycle model, room configuration and any passenger or excursion add-ons, with pricing recalculating at each step. Rather than demand full payment upfront for a complex, multi-week international trip, the platform calculates a fixed deposit based on the number of vehicles reserved and leaves the remaining balance to direct, human-to-human coordination later. Submitting the registration form triggers the Revolut checkout; once the payment is confirmed via webhook, the booking status flips to "approved," a PDF invoice generates automatically, and a confirmation email goes out — all without staff touching the record.

Four connected data structures, one live inventory picture
Tours hold the narrative content and route descriptions; Departures pin specific calendar dates to real-time participant limits; Motorcycle Models track which fleets are available and how many remain, per departure rather than globally; Bookings tie customer records to deposit status and live availability. Together, the four custom post types let the platform show riders exactly how many motorcycles of a given model are still open for a specific date, and disable options automatically once that number hits zero.

Pricing that adapts to room type, passengers and season
Expedition pricing rarely stays flat. The system calculates rates based on single- or double-room accommodation, applies smart validation so a single-room add-on only appears when a rider is traveling without a pillion passenger, and adjusts fares programmatically by the season attached to each departure and motorcycle model — replacing a flat retail price with a responsive matrix of variables.

Deterministic pricing tables, not a live exchange-rate feed
Rather than depend on a volatile third-party exchange-rate API, the platform runs on a static, admin-controlled pricing architecture. Inside the WordPress admin, staff enter fixed, round base fees, single-room surcharges and vehicle upgrades separately for each supported currency — currently EUR and USD — so displayed prices always match exactly what marketing intended, immune to mid-day rate swings. IP-based geolocation applies the right table automatically on arrival; if a visitor's IP can't be traced or their currency isn't supported, a one-time modal prompts them to pick from the available options instead of guessing. Once set, the currency is locked to that session and can't be changed mid-checkout, keeping the payment pipeline stable end to end.

Automated deposits, manual balances, and instant invoices
A direct Revolut API integration, backed by asynchronous webhooks, captures and confirms deposit payments the moment they happen, updating the custom admin UI instantly. Server-side PDF invoices — carrying the client's legally required disclaimers — generate automatically and dispatch by email as soon as a payment is verified, while balance collection for the personalized side of each booking stays a deliberate manual step. For vehicle-extended itineraries that require pre-qualifying a rider — importing a personal motorcycle, visas, international permits — the booking button routes to an inquiry form instead of the automated checkout, so staff can review a booking before it's confirmed.

A true bilingual platform, not a translated overlay
WPML gives English and German their own proper language architecture rather than a machine-translated layer bolted on top — German runs under de/de-DE locale conventions and English under en-US, so every navigation label, form field and system message resolves correctly per language. The admin dashboard maintains fully separate email and PDF invoice templates for each locale: a rider who books through the German interface receives a German confirmation email and invoice, and an English booking triggers the English equivalents, with no manual translation step in between. hreflang markup on every page tells search engines exactly how the English and German versions of each tour relate to one another, routing international riders to the correct localized page automatically. The same data architecture leaves room for Classic Bike Adventure's planned sister brand, Classic Adventure — 4x4 off-road expeditions — without another platform rebuild.

Protecting a decade of search equity through the migration
Moving to a new domain and a completely new platform put years of accumulated organic visibility at risk. Outsourcify mapped deterministic 301 redirects from every indexed legacy URL and applied granular noindex controls in Yoast SEO to keep crawl budget on conversion-relevant pages, protecting the site's existing rankings through the transition.

Where this project sits in our history
- 2017
Plani Travel / Les Secrets du SiamTravel Agency management web app - 2018
Chiang Rai Province (Thailand)Tourism website and mobile app design - 2019
High luxury travel agency (USA)A full digital suite for a travel agency - 2022
Plani TravelPlani Travel - 2023
Foreigner Friendly ThailandA directory of Thai businesses aimed at foreigners
2023AxiomeA SaaS Platform for Travel Agencies- 2026
Classic Bike AdventureClassic Bike AdventureYou are here
2026Get A Bus & Coastal Car Rentals (Australia)Multi-Tenant Quoting & Booking SaaS for Transport Operators
Contact us
Let’s find the right solution for your business.
We partner with product teams and founders to design, build, and ship software that lasts.













