Booking Engine

A guest-facing booking PWA with dynamic pricing, split-room suggestions, sub-bookings, and full lifecycle management — built for experience hospitality, not hotel room-nights.

-35%
— Reduction in booking abandonment vs. multi-step booking flows
artidal-booking · booking engine
Bookings this month
847
▲ 12% vs last month
Avg. completion time
4:12
▼ 0:48 faster
Revenue captured
€94K
▲ 18% vs last month
Recent bookings
BOOKINGGUESTPACKAGESTATUSVALUE
#8847L. Petersen7-Night Surf & StayCONFIRMED€1,890
#8846M. ChenYoga Retreat 14DPENDING€3,200
#8845A. RossiWeekend AdventureCONFIRMED€680
#8844J. WilliamsSurf Camp OctDEPOSIT€1,440

Why Experience Hospitality Needs Its Own Booking Engine

The standard hotel booking widget — pick a date, choose a room, enter a credit card — collapses the moment you apply it to a surf camp, retreat centre, or adventure lodge. The product being sold is not a room-night. It is an experience composed of accommodation, activities, meals, equipment, and transfers, with interdependent availability and pricing that changes based on season, group size, room choice, and package configuration. Trying to force this through a Cloudbeds or Beds24 booking widget produces either a drastically simplified product (pick a room, we'll email about activities later) or a multi-step booking maze that haemorrhages conversion at every click.

Artidal's Booking Engine is a Progressive Web App purpose-built for this complexity. It presents the full breadth of what an operator offers — packages, room types, optional add-ons, date-dependent pricing — in a single, fast, mobile-first flow that guides the guest from discovery to confirmed payment in under four minutes. Behind the clean interface sits a real-time availability engine that queries rooms at bed-level, activities at session-level, and packages at composite-level simultaneously, ensuring that every option shown to the guest is genuinely bookable at the displayed price.

— Free assessment

Feeling frustrated that your team juggles 6+ tools and still drops the ball on guest experience?

Answer 15 questions to discover where your operation stands — and what to fix first.

System Fragmentation
How disconnected are your tools?
Guest Experience
Can guests self-serve seamlessly?
Revenue Optimization
Are you leaving money on the table?
Based on operational data from 400+ hospitality businesses worldwide.
Take the Assessment
3 minutes · Free · Instant results

Dynamic Pricing That Responds to Demand

Static rate cards are the norm in experience hospitality. Most surf camps publish a single weekly rate, maybe with a high-season and low-season variant, and leave money on the table during peak demand while failing to stimulate bookings during shoulder season. The pricing model is often dictated by whatever the WordPress plugin supports — which is typically a flat nightly rate with a seasonal multiplier.

Artidal's Booking Engine integrates with the platform's Dynamic Pricing Engine at the point of display. Rates adjust in real-time based on configurable signals: current occupancy, lead time to arrival, day-of-week patterns, group size thresholds, and promotional rules. A surf camp in Ericeira might set rates to increase by 12% once occupancy for a given week crosses 75%, decrease by 8% for bookings made more than 90 days in advance, and apply a per-person discount for groups of four or more — all enforced automatically during the booking flow without staff intervention.

Critically, the dynamic pricing layer applies to the entire bookable product — not just the room component. When a guest selects a package that includes accommodation, surf lessons, and airport transfers, the pricing engine evaluates all components, applies the relevant rules, and presents a single price. This prevents the common problem where a room rate is dynamically priced but the activity component is still a static spreadsheet rate that was last updated three months ago.

Operators retain full control through minimum and maximum price bounds, blackout dates for promotions, and approval workflows for price changes exceeding a configurable threshold. The system also maintains a complete pricing audit trail, so operators can retrospectively analyse what rate a guest saw, what rules triggered, and why.

Split-Room Suggestions and Intelligent Availability Recovery

In experience hospitality, 'no availability' is often a lie. When a couple requests a private room for 10 nights and the calendar shows it's booked for 3 nights in the middle, a traditional system returns 'unavailable' and the operator loses the booking. In reality, the solution is often straightforward: the couple stays in the private room for the first 5 nights, moves to another private room (or an upgraded suite) for 3 nights, and returns to the original room for the remaining 2 nights. This is a split-room booking — completely normal in surf camps and retreats where guests develop relationships with staff and other guests and are far more flexible about room changes than a business traveller in a city hotel.

Artidal's Booking Engine automatically detects split-room opportunities when a direct availability query fails. It scans the room inventory for combinations that satisfy the full date range, evaluates the pricing impact, and presents the guest with a split-room suggestion alongside the explanation: 'Your preferred room is available for 7 of your 10 nights. We can offer you an upgrade to the Ocean Suite for the remaining 3 nights at no additional cost.' The guest accepts or declines; the booking is created with linked sub-bookings for each room segment.

This availability recovery mechanism typically converts 8-15% of bookings that would otherwise be lost to 'unavailable' messages. For a 30-bed surf camp with an average booking value of €1,200, that translates to tens of thousands in recovered revenue per season.

Sub-Bookings and the Booking Lifecycle

A single guest booking in experience hospitality is rarely a single transaction. A family booking a retreat might include two adults in a private room, a teenager in a shared dorm, three surf lesson packages, one yoga-only package, two airport transfers, and a day trip for the whole family. In Artidal, this is modelled as a parent booking with sub-bookings — each sub-booking representing a distinct, independently manageable component of the overall stay.

Each sub-booking carries its own status, pricing, availability allocation, and lifecycle. The teenager's surf package can be cancelled without affecting the parents' accommodation. An additional activity can be added to one sub-booking mid-stay. A room change affects only the accommodation sub-booking, not the activity components. This granular structure mirrors how experience hospitality actually operates — guests routinely modify parts of their stay while keeping the rest intact.

The booking lifecycle itself follows a defined state machine: Draft (initiated but not submitted), Pending (submitted, awaiting payment or approval), Confirmed (payment received or deposit paid), Active (guest has checked in), Completed (guest has checked out), and Cancelled (with full or partial refund tracking). Each transition can trigger automated actions — a confirmation email on Pending → Confirmed, an activity schedule push notification on Confirmed → Active, a satisfaction survey on Active → Completed.

Expiration Logic and Inventory Protection

Unpaid bookings that hold inventory indefinitely are a significant problem for operators with limited capacity. A 20-bed surf camp that has 5 pending bookings holding rooms for the same peak week — with no guarantee any of them will convert to payment — is effectively hiding 25% of its inventory from real demand. The traditional solution is manual follow-up: staff emailing or WhatsApp-messaging guests to ask if they still intend to pay. This is time-consuming, inconsistent, and often too late.

Artidal's Booking Engine enforces configurable expiration policies on every booking. Operators define rules by booking type, lead time, and season: a peak-season booking might expire after 24 hours without a deposit, while a low-season booking made three months in advance might have a 7-day hold window. When a booking approaches expiration, the system sends automated reminders (email, push notification, or WhatsApp) at configurable intervals. If payment is not received by the deadline, the booking status transitions to Expired, inventory is released immediately, and the guest receives a final notification with an option to rebook if availability remains.

This automated inventory protection is particularly valuable for operators in high-demand surf destinations like Taghazout, Ericeira, or Canggu, where a single unpaid booking holding a peak-week bed can represent €800-€1,500 in lost revenue if it blocks a genuine booking from converting.

Progressive Web App Architecture

The Booking Engine is delivered as a Progressive Web App, not an embedded iframe or a redirect to a third-party domain. This matters for two reasons. First, the booking flow lives on the operator's own domain, inheriting their branding, SSL certificate, and domain authority — critical for SEO and guest trust. Second, the PWA architecture provides near-native performance on mobile devices, where 65-75% of experience hospitality bookings originate. Offline capability means that a guest browsing packages on a spotty connection in a rural surf town doesn't lose their cart when signal drops.

The PWA is fully customisable — operators configure colours, typography, imagery, and layout through the Artidal dashboard. Multi-language support is built in, with automatic detection based on browser locale and manual override. Payment processing supports Stripe with local payment methods (iDEAL for Dutch guests, Bancontact for Belgian, Multibanco for Portuguese) alongside standard card payments. The checkout flow includes PSD2-compliant Strong Customer Authentication where required by the guest's card-issuing country.

Competitive Positioning

The experience hospitality booking engine market is fragmented. Operators typically choose between generic booking widgets (Bookingkit, FareHarbor, Rezdy) designed for tours and activities but weak on accommodation, hotel-centric systems (Cloudbeds, Little Hotelier, Beds24) that handle rooms but cannot model packages or activities, or custom WordPress solutions (WooCommerce + Amelia + a room booking plugin) that are brittle, slow, and expensive to maintain.

Artidal's Booking Engine is the only solution built from the ground up for the intersection of accommodation and activities that defines experience hospitality. It doesn't bolt activities onto a hotel PMS or accommodation onto a tour booking platform. Both are first-class entities in the same availability engine, priced through the same dynamic pricing layer, and managed through the same lifecycle. This architectural decision — which is extremely difficult to retrofit onto an existing system — is what enables split-room suggestions, composite package pricing, and sub-booking lifecycle management.

— Capabilities

What it does

Real-time composite availability

Queries rooms at bed-level, activities at session-level, and packages at composite-level simultaneously — every option shown is genuinely bookable.

Dynamic pricing integration

Rates adjust in real-time based on occupancy, lead time, day-of-week, group size, and promotional rules — applied across the full package, not just the room.

Split-room suggestions

Automatically detects room-split opportunities when direct availability fails, presenting guests with alternatives instead of 'unavailable' dead-ends.

Sub-booking architecture

A single booking can contain multiple independently manageable components — accommodation, activities, transfers, add-ons — each with its own status and lifecycle.

Configurable expiration policies

Unpaid bookings auto-expire based on rules for season, lead time, and booking type — with automated reminder sequences before release.

PWA with offline resilience

Progressive Web App on the operator's own domain with near-native mobile performance, offline cart persistence, and automatic language detection.

PSD2-compliant payments

Stripe integration with local payment methods (iDEAL, Bancontact, Multibanco), Strong Customer Authentication, and multi-currency checkout.

Booking lifecycle state machine

Draft → Pending → Confirmed → Active → Completed (or Cancelled) with automated actions triggered on each state transition.

— Problems solved

What changes

01
Lost bookings from false 'unavailable' messages

Split-room suggestions recover 8-15% of bookings that would be lost when a single room isn't available for the full date range.

02
Revenue leakage from static pricing

Dynamic pricing captures demand-driven revenue that static rate cards miss — especially during peak weeks and last-minute shoulder-season gaps.

03
Inventory held hostage by unpaid bookings

Automated expiration policies release held inventory when payment deadlines pass, preventing phantom bookings from blocking real demand.

04
Multi-step booking abandonment

A single-flow PWA replaces the disjointed process of booking accommodation on one platform and activities on another, reducing abandonment by up to 35%.

05
Third-party domain trust issues

The booking engine lives on the operator's own domain — no redirects to unfamiliar checkout pages that erode guest confidence and break analytics attribution.

— See it in action

Ready to explore
Booking Engine?