Blog

October 29, 2026·User stories

PortAventura: +63% revenue with Medusa for hotel and ticket bookings

Nicklas Gellner

Nicklas avatar

Nicklas Gellner

Learn how PortAventura World connected tickets, hotel stays, and extras through one Medusa checkout, increasing conversion by 40% and average order value by 17%.

Image modal

PortAventura World is one of Europe's largest theme park resorts, with more than 100 million visits since opening near Barcelona in 1995. It brings together PortAventura Park, Ferrari Land, and Caribe Aquatic Park, alongside ten hotels with over 3,300 rooms. Ferrari Land is home to Red Force, Europe's tallest roller coaster, standing 112 metres high and reaching 180 km/h.

For customers, planning a visit means choosing tickets, finding a hotel, and booking extras such as Express Passes and parking. But behind that journey sit separate ticketing, hotel reservation, and payment systems, each with its own rules.

PortAventura World worked with Rigby, a Medusa Expert partner, to bring those purchases together. Following the rebuild, PortAventura saw a 63% revenue uplift from the same traffic, alongside higher checkout conversion and order value.

The Challenge: Booking the Whole Visit in One Checkout

Park tickets and hotel rooms previously required separate purchase steps. Bringing them into one cart meant coordinating products that behave differently throughout the booking process:

  • Tickets have daily capacity limits, with prices that change by visit date.
  • Hotel rooms need to be held while a customer completes payment.
  • Express Passes can appear several times in a cart, each for a different date.
  • Extras such as parking and strollers must be purchased alongside a park ticket.

A customer booking a multi-day visit might need all of these at once. The checkout had to validate each selection, apply the right prices, and take one payment, while the connected systems handled their respective bookings.

Promotions added another dimension. The same code could offer different discounts depending on the visit date or sales channel. Partner programmes such as Carnet Jove and DIA also needed their own validation and redemption rules.

All of this had to work during seasonal traffic spikes, with an architecture designed to support up to ten server instances without losing cart or promotion state between requests.

The Solution: Custom Booking Logic on a Shared Commerce Foundation

Rigby designed the architecture and built the commerce backend on Medusa, connecting PortAventura World's existing systems through custom modules and integrations. Tickets, hotel stays, and extras could share a cart and payment flow while retaining their own pricing, availability, and fulfilment rules.

Medusa's modular architecture provided a place to model those resort-specific requirements alongside the commerce layer. The team extended the cart, checkout, promotions, and payment flows around the booking process.

PortAventura World already relied on specialist systems to run its parks and hotels. Galaxy is a ticketing and admission-control platform for attractions. At the resort, it issues park tickets and extras such as parking, meal vouchers, and Express Passes, including the scannable passes customers use for entry.

TravelClick handles the hotel side of the booking. Its reservation system provides room availability and confirms hotel reservations, so a room selected in the storefront must also be reserved and confirmed in the hotel system.

Medusa brings these systems into one purchase flow. Custom integrations connect the shared cart and checkout to Galaxy and TravelClick, then split the cart into orders by product type so ticket issuance and hotel confirmation can run in parallel.

Rigby built custom Redsys and Sequra payment providers with custom redirect handling and cryptographic verification. Product data syncs from Medusa to Payload CMS.

The result is one customer-facing purchase backed by several specialised systems, with the custom logic coordinated through Medusa.

Image modal

From Reserving a Room to Recovering a Booking

When a customer enters checkout with a hotel room, the backend places a temporary hold through the reservation system. The room stays reserved while payment is completed, and scheduled jobs release the hold if its time limit expires.

Tickets use a different mechanism. A custom limits module validates and reserves daily availability within the cart flow. If a product has reached capacity for the selected date, the cart rejects further additions.

A bulk endpoint brings availability checks together. Instead of requesting each product separately, the storefront sends the products and dates together and receives availability, prices, and active promotional pricing in one response. This reduced API requests and frontend load times.

Completing payment introduces another challenge: an external system can still fail to confirm the purchase. A customer may have paid successfully while Galaxy has not issued the ticket or TravelClick has not confirmed the room.

Rigby built a recovery layer that detects these partial failures, retries the external confirmation, and logs the result. If automatic recovery fails, operations staff can re-trigger the confirmation from the Admin Panel, without asking the customer to begin another purchase.

These extensions connect the customer's cart to the operational steps required to deliver the visit, including the cases where a booking needs attention after payment.

The Results: Higher Conversion and More Control for the Commercial Team

The unified checkout lets customers book tickets, hotel rooms, and extras together. Alongside the 63% revenue uplift, checkout conversion increased by 40% and average order value by 17%.

The commercial team also gained control over how those products are sold. A per-day price calendar manages ticket and hotel pricing, with separate price lists for sales channels. Promotions can vary by visit date, day of the week, or channel, while email-based usage limits restrict repeated redemption of partner codes.

The team can configure bundles combining park entry, hotel stays, and extras directly in the Admin Panel, without engineering involvement.

For PortAventura World, the rebuild brought the booking journey and its underlying operations onto a shared commerce foundation. Customers can purchase more of their visit in one place, while the resort has an architecture designed to accommodate additional channels, products, and integrations.

Share this post

Ready to build your custom commerce setup?