Northbound
A booking flow redesign for an independent walking-tour operator, cutting drop-off between 'select a date' and 'confirmed booking' by more than half.
- Year
- 2023
- Role
- Product design & frontend development
- Stack
- Next.js, TypeScript, Stripe Checkout
The problem
The original booking flow asked for group size, then date, then a login, then payment details — four full page loads before a customer could actually pay. Analytics showed most people never made it past the login step, and there wasn’t a good reason for that step to exist at all.
What changed
I redesigned the flow as a single page with progressive disclosure: pick a tour, pick a date from real-time availability, pay. Account creation became optional and happens after payment, pre-filled from the booking, so it costs the customer nothing extra.
Details that mattered
- Availability is fetched once and cached client-side for the session, so switching between dates feels instant instead of triggering a new request each time.
- Form validation happens inline, field by field, rather than surfacing a wall of errors after submission.
- The confirmation state is designed as carefully as the hero — it’s the last thing a customer sees before they close the tab, and it’s usually a screenshot they send to whoever they’re travelling with.
Outcome
Checkout completion rate rose from 34% to 79% of customers who reached the booking page, measured over the following two months.
Next project
Ledger