# How to build property booking in Bubble

- Tool: Bubble
- Difficulty: Beginner
- Time required: 45-60 min
- Compatibility: Growth plan+ (Stripe for payments)
- Last updated: March 2026

## TL;DR

Build a property booking platform like Airbnb in Bubble with property listings, availability calendars, nightly rate calculation, guest checkout, host dashboards, and guest reviews. This tutorial covers the data model for properties and bookings, building a search with date and guest filters, implementing the booking flow with availability checking, and creating host and guest management pages.

## Overview: Building a Property Booking Platform in Bubble

Property booking platforms connect hosts with guests through searchable listings, real-time availability, and secure payments. This tutorial builds the core: property listings with photos and rates, availability management, the booking workflow with date selection and price calculation, and dashboards for both hosts and guests.

## Before you start

- A Bubble account on Growth plan or higher
- A Stripe account for payment processing
- Basic familiarity with Repeating Groups, workflows, and Data Types
- Understanding of date operations in Bubble

## Step-by-step guide

### 1. Design the property booking data model

Create Data Types: Property (Title, Description, Address (geographic), Photos (list of images), Nightly_Rate (number), Max_Guests (number), Bedrooms (number), Host (User), Amenities (list of text)). Booking (Property, Guest (User), Check_In (date), Check_Out (date), Guests (number), Total_Price (number), Status (Option Set: Pending/Confirmed/Completed/Cancelled), Stripe_Session_ID (text)). BlockedDate (Property, Date (date)) for dates the host blocks. Review (Booking, Reviewer (User), Rating (number), Comment (text)).

**Expected result:** A complete data model supporting properties, bookings, blocked dates, and reviews.

### 2. Build the property search page

Create a listings page with filters: Location SearchBox, Check-in and Check-out Date Pickers, Guest count Input, and Price range. Add a Repeating Group showing matching Properties. The search must exclude properties already booked for the selected dates. Use constraints plus advanced filtering: after the initial search, filter out Properties where any Booking exists with overlapping dates (Check_In < selected Check_Out AND Check_Out > selected Check_In AND Status is not Cancelled). Display property cards with first photo, title, nightly rate, bedrooms, and star rating.

**Expected result:** A search page showing available properties for the selected dates and guest count.

### 3. Create the property detail and booking page

Create a property-detail page (Type: Property). Show photos in a gallery, full description, amenities list, host info, nightly rate, and reviews. Add a booking sidebar with Check-in/Check-out Date Pickers and Guest count. Calculate total price: (Check_Out - Check_In in days) * Nightly_Rate. Show unavailable dates by searching BlockedDates and existing Bookings for this Property. Disable Check-in dates that are blocked. Add a Book Now button that creates a Booking record (Status: Pending) and redirects to Stripe Checkout with the total price.

**Expected result:** A detail page with booking controls showing price calculation and availability.

### 4. Build the host management dashboard

Create a host-dashboard page. Show: upcoming bookings (Search Bookings where Property's Host = Current User AND Check_In >= today), a calendar view or list of all bookings, and a form to block dates (create BlockedDate records). Add booking management: Confirm or Cancel buttons on pending bookings. Show earnings summary: sum of Total_Price for completed bookings. Allow hosts to edit their property details and manage photos.

> Pro tip: For multi-property hosts needing advanced analytics, automated pricing, or channel management, RapidDev can architect a scalable property management system.

**Expected result:** Hosts can manage bookings, block dates, and view earnings from their dashboard.

### 5. Add guest reviews and ratings

After a booking's Check_Out date passes, show a Leave Review button on the guest's booking detail. The form includes a star rating (1-5 using clickable star icons) and a text comment. Create a Review record linked to the Booking. On the property detail page, display reviews in a Repeating Group sorted by date. Show the average rating (Search Reviews for this Property:each item's Rating:average) prominently near the property title.

**Expected result:** Guests can leave reviews after their stay, and ratings display on property pages.

## Complete code example

File: `Workflow summary`

```text
PROPERTY BOOKING PLATFORM — WORKFLOW SUMMARY
==============================================

DATA TYPES:
  Property: Title, Description, Address, Photos, Nightly_Rate,
    Max_Guests, Bedrooms, Host (User), Amenities
  Booking: Property, Guest (User), Check_In, Check_Out, Guests,
    Total_Price, Status (Option Set), Stripe_Session_ID
  BlockedDate: Property, Date
  Review: Booking, Reviewer (User), Rating (number), Comment

SEARCH LOGIC:
  Available = No overlapping Booking exists AND No BlockedDates in range
  Overlap check: Booking Check_In < selected Check_Out
    AND Booking Check_Out > selected Check_In
    AND Status is not Cancelled

BOOKING FLOW:
  1. Guest selects dates and guest count
  2. Price = (Check_Out - Check_In days) * Nightly_Rate
  3. Click Book Now → Create Booking (Pending)
  4. Stripe Checkout with total price
  5. Webhook confirms payment → Status = Confirmed

HOST DASHBOARD:
  Upcoming bookings, Block dates form, Earnings summary
  Confirm/Cancel pending bookings

REVIEWS:
  After checkout date: Leave Review form
  Property page: Average rating + review list
```

## Common mistakes

- **Not checking for double bookings** — Two guests can book the same dates if availability is not validated. Fix: Check for overlapping bookings before creating a new one. Use the overlap formula: existing Check_In < new Check_Out AND existing Check_Out > new Check_In.
- **Calculating prices client-side only** — Users can manipulate client-side calculations. The server should validate the total. Fix: Recalculate the total price in the backend workflow that processes the payment confirmation.
- **Not handling booking cancellations properly** — Cancelled bookings should free up the dates for other guests. Fix: Set cancelled bookings to Status = Cancelled and exclude them from availability checks.

## Best practices

- Validate availability server-side before confirming bookings
- Use BlockedDate records for host-controlled unavailable dates
- Calculate prices on both client (display) and server (validation) sides
- Show clear check-in/check-out dates and total price before payment
- Add automated emails for booking confirmation, reminders, and review requests
- Pre-compute average ratings as a field on the Property for faster loading
- Set cancellation policies as configurable rules per property

## Frequently asked questions

### How do I prevent double bookings?

Check for overlapping bookings server-side before confirming. Search for existing bookings where Check_In < new Check_Out AND Check_Out > new Check_In AND Status is not Cancelled. If found, reject the booking.

### Can I add different rates for weekends or seasons?

Add a SeasonalRate Data Type with Property, Start_Date, End_Date, and Rate. When calculating price, check for seasonal rates that overlap the booking dates and use them instead of the default Nightly_Rate.

### How do I handle service fees?

Add a Service_Fee_Percent field to your app settings. Calculate: service fee = Total_Price * percent. Show it as a separate line item and add it to the Stripe charge.

### Can guests message hosts before booking?

Yes. Add a messaging system with a Conversation Data Type linking Guest and Host. Allow messages before booking with the Property as context.

### How do I handle refunds for cancellations?

Define a cancellation policy per property (full refund before X days, partial after). Process refunds via the Stripe API using the booking's Stripe Session ID.

### Can RapidDev help build a booking platform?

Yes. RapidDev can architect property booking platforms with dynamic pricing, channel management, automated messaging, and multi-currency support.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/set-up-a-property-booking-platform-in-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/set-up-a-property-booking-platform-in-bubble
