Rbooking guide
Everything you need to turn your Shopify store into a booking engine for rooms, villas, apartments and rentals. From first setup to running daily operations.
Overview
Rbooking adds date-based bookings to Shopify without a separate cart, holds, or throwaway products. Guests choose dates and guests right on your product pages, and pay through native Shopify Checkout. You manage everything from the app dashboard: accommodations, pricing, rules and bookings.
Because checkout is native, the Shopify order is always the source of truth. Prices and dates are locked server-side, and bookings stay in sync automatically when an order is paid, cancelled or refunded.
| What you sell | How it works |
|---|---|
| Rooms, villas, apartments, rentals | Each is an “accommodation” linked to a Shopify product. |
| Nightly stays | Guests pick check-in and check-out; price is calculated per night. |
| Add-ons | Optional services like breakfast, cleaning or airport pickup. |
| Across channels | Keep dates in sync with Airbnb, Booking.com and Vrbo Premium. |
Core concepts
A few terms appear throughout the app. Understanding them makes everything else click into place.
Accommodation
A bookable type, like “Deluxe Double Room” or “Ocean Villa”. It holds capacity, amenities, pricing and the link to a Shopify product. This is what guests browse and book.
Unit
A physical instance of an accommodation, like “Apartment A1” or “A2”. Units are what actually get reserved. If a type has 3 units, 3 guests can book the same dates. Only Active units are bookable.
Product mapping
The link between an accommodation and the Shopify product/variant the customer pays for. The accommodation is reserved; the product is what checks out.
Rate plan
A pricing package such as “Flexible (refundable)” or “Saver (non-refundable)”. Rates are attached to a plan. When more than one plan has pricing for a room, guests get to choose.
Season
A date range (e.g. “Summer peak”) you can attach special pricing and rules to. When seasons overlap, the higher-priority one wins.
Rate
The actual nightly price for an accommodation under a plan, optionally for a specific season or single date, with per-guest extras and stay-length limits.
Booking rule
Constraints like minimum/maximum stay, allowed check-in/check-out days and advance-booking windows. Rules can apply to all rooms or a specific room/season.
Service
An optional add-on (breakfast, cleaning, parking) with its own pricing model. Assigned to accommodations and offered during booking.
Block
A date range made unavailable manually (maintenance, owner stay) or imported from an external channel calendar.
Quick start
Six steps from install to your first live booking.
- Install from the App Store. One-click install via Shopify OAuth. No code or payment keys.
- Create an accommodation. Go to Accommodations → Add accommodation. Set its name, capacity, and add at least one unit.
- Connect a Shopify product. On the accommodation, use Select product to link the product guests will pay for.
- Set a price. Create a rate plan under Rates and add a base nightly rate for the accommodation. If no rate is set, the Shopify product price is used as a fallback.
- Add storefront blocks. In the theme editor, add the Reservation form and Accommodation details to the product page, and optionally an Availability search to your home page.
- Make a test booking. Book a stay end to end. The paid order appears as a confirmed booking on your dashboard with a unit assigned.
Plans & limits
Rbooking is billed through Shopify. Each tier unlocks more capability. Features marked Standard, Premium or Business below are gated to those plans and up.
| Free | Standard | Premium | Business | |
|---|---|---|---|---|
| Accommodations | 1 | 5 | 25 | Unlimited |
| Units / accommodation | 2 | 10 | Unlimited | Unlimited |
| Bookings / month | 15 | 150 | 750 | Unlimited |
| Storefront blocks | Yes | Yes | Yes | Yes |
| Rate plans & rates | Yes | Yes | Yes | Yes |
| Services (add-ons) | Yes | Yes | Yes | Yes |
| Seasons | No | Yes Standard | Yes Premium | Yes |
| Booking rules | No | Yes Standard | Yes Premium | Yes |
| Channel sync (iCal) | No | No | Yes Premium | Yes |
When you hit a plan limit (for example adding a second accommodation on Free), the app explains it inline and points you to upgrade. The monthly bookings allowance works differently: as you approach it your dashboard shows a reminder, and if you go over, your guests keep booking without interruption. Storefront checkout is never blocked. Existing data is never deleted by a plan change.
Accommodations & units
Open Accommodations to create the room types you sell. Each accommodation editor has these sections:
| Section | What it controls |
|---|---|
| Shopify product mapping | The product/variant the guest buys. See Connecting products below. |
| Accommodation | Name, description, Kind (Accommodation, Rental, etc.), Status, and Location. |
| Details & amenities | Attribute values (size, beds, view…) and amenity checkboxes that show on storefront detail blocks. |
| Booking capacity | Max adults, children and (if enabled) babies. Leave Total capacity blank to derive it from adults + children. |
| Services | Which add-on services are offered for this accommodation. |
| Units | The physical inventory items (see below). Available after the accommodation is saved. |
Status values
An accommodation can be Active (bookable), Inactive, Maintenance or Archived. Only Active accommodations appear on the storefront and accept bookings.
Units are what actually get booked
Think of the accommodation as the “type” and units as the real keys on the wall. “Serviced Apartment Suite” is one accommodation; “A1” and “A2” are two units. With two units, two separate guests can book the same dates.
Connecting Shopify products
Every bookable accommodation must be linked to a published Shopify product. The product is what the customer checks out and pays for; Rbooking handles availability, pricing and the booking record.
- In the accommodation editor, under Shopify product mapping, click Select product.
- Pick the product (its first variant is used). The accommodation name defaults to the product title if empty.
- Save. The Accommodations list now shows the product handle instead of “Not connected”.
Locations
Each accommodation has its own location, set right inside the accommodation editor (no separate Locations page). The location powers the Location map block and the location filter in storefront search. It's available on every plan.
Open an accommodation and fill in the Location & map section. Everything here is optional. Leave it blank if you don't need a map or location search.
| Field | Notes |
|---|---|
| City | Needed to show the map and appear in the storefront location filter. |
| Region / state | Optional. Shown in listings and search. |
| Country, Country code | Country (with City) is needed for the map and location search. |
| Latitude / Longitude | Optional. Used by the Location map block to drop the pin and give directions. |
The storefront location filter only appears once you have two or more accommodations with a location set. With a single location, there's nothing to filter by, so it stays hidden.
Amenities & attributes
These two catalogs describe your accommodations on the storefront.
Amenities
Reusable facilities shown as icons, like Wi-Fi, parking, pool or kitchen. Add them under Amenities with a label, value, sort order and an icon (built-in or your own uploaded SVG/PNG). Then tick them per accommodation.
Attributes
Descriptive facts like size, bed type, bedrooms/bathrooms and view. Each attribute has a type (Text, Number, Yes/No, Single-select, Multi-select) and can show in the details block and/or in search filters.
You fill in attribute values and tick amenities in each accommodation's Details and amenities section. They render through the Accommodation details and search blocks.
Rate plans
A rate plan is a pricing package. Most properties run one or two: a flexible refundable rate and a cheaper non-refundable one. Create plans under Rates.
| Field | Meaning |
|---|---|
| Name | Shown to guests when they choose a plan, e.g. “Flexible” or “Saver”. |
| Refundable | Marks the plan as refundable; surfaced to guests as Refundable / Non-refundable. |
| Active | Only active plans are used for quoting. |
Inside a plan you add the actual prices (the rates), covered next. When a room has rates under more than one active plan, the storefront shows a plan selector with each plan's total. With a single plan, guests never see a selector.
Rates & how price is calculated
A rate sets the nightly price for an accommodation under a plan. Each rate row has:
| Field | Meaning |
|---|---|
| Accommodation | The room this rate applies to. |
| Season | Optional. “Base rate” = no season (the standing price). |
| Date override | Optional. A price for one exact date that beats season and base, and ignores weekend/holiday multipliers. |
| Price | Nightly price in your shop currency. |
| Base adults / children included | How many guests the price covers before extras apply. |
| Extra adult / child | Added per night for each guest above the included counts. |
| Minimum / Maximum nights | A rate is only eligible when the stay length falls within this range. |
Per-night precedence
For every night of a stay, Rbooking picks the price in this order, highest priority first:
- Exact date rate: a rate with a matching Date override. Used as-is, with no weekend/holiday multiplier.
- Season rate: a rate whose season covers that night. If seasons overlap, the higher-priority season wins.
- Base rate: the rate with no date and no season.
- Shopify fallback: if none of the above exist, the mapped product's price is used (this is how the Free plan prices nights).
Season, base and fallback nights then receive the relevant weekend or holiday multiplier (see next section). Per-guest extras are added on top, and each night is rounded to your currency before being summed, so the displayed total always matches the amount charged.
Worked example
Base rate $200/night, includes 2 adults, extra adult $30/night. Weekend multiplier 1.2×. A guest books Friday → Sunday (2 nights) for 3 adults:
Seasons
A season Standard is a named date range you attach pricing and rules to, like “Summer peak”, “Holidays”, or “Low season”. Create them under Seasons.
| Field | Meaning |
|---|---|
| Name | Internal label, also shown when choosing a season on a rate. |
| Start / End date | The range the season covers. |
| Priority | When two seasons overlap a date, the higher number wins. Default 0. |
| Active | Only active seasons affect pricing and rules. |
Weekend & holiday pricing
Set under Settings → Pricing defaults, these multipliers bump the nightly price on certain dates. They apply to season, base and Shopify-fallback nights, never to an exact date rate, which is always charged as entered.
| Setting | Default | Applies to |
|---|---|---|
| Weekend multiplier | 1.2× | Saturday and Sunday nights. |
| Major holiday multiplier | 2× | Dates listed under Major holiday dates. |
| Minor holiday multiplier | 1.5× | Dates listed under Minor holiday dates. |
Enter holiday dates one per line in YYYY-MM-DD format. Only one multiplier ever applies to a night, in this order: major holiday, then minor holiday, then weekend.
Services (add-ons)
Services Standard are optional extras guests add while booking, like breakfast, cleaning, airport pickup or early check-in. Create them under Services, then assign them to accommodations.
Pricing types
| Type | How it's charged |
|---|---|
| Per booking | A flat fee once per booking (e.g. cleaning). |
| Per night | Multiplied by the number of nights (e.g. parking). |
| Per guest | Multiplied by the number of guests (e.g. welcome drink). |
| Per guest per night | Multiplied by guests × nights (e.g. breakfast). |
For per-guest and per-night types you can set custom labels (e.g. “People”, “Days”) that guests see, plus a sort order, a Taxable flag, and Active state.
Booking rules
Rules Standard control when and how guests can book. Set defaults for all rooms under Settings → Booking rules, and create more specific rules under Booking rules (which can target one accommodation and/or one season).
| Rule | Effect |
|---|---|
| Minimum / Maximum stay | The fewest and most nights a guest can book. Leave max blank for no limit. |
| Allowed check-in days | Restrict arrivals to certain weekdays (e.g. Saturday-only changeovers). |
| Allowed check-out days | Restrict departures to certain weekdays. |
| Minimum advance booking | How many days ahead a guest must book. |
| Maximum advance booking | How far into the future bookings are allowed. Blank = no limit. |
| Booking buffer | Empty days kept before and after each booking, e.g. for cleaning. |
| Allow same-day booking | Whether guests can book for today. |
| Require full guest details | Force name, email and phone before completing a booking. |
The storefront date picker enforces these live: unavailable and disallowed dates are greyed out, and a clear message explains why a selection isn't allowed. The same engine drives the admin date picker so back-office bookings stay valid too.
Guest types & capacity
Under Settings → Guest policy you name your guest types and the ages they cover. These labels appear in the guest picker on the storefront.
| Type | Default label | Default age | Notes |
|---|---|---|---|
| Adults | Adults | Age 13+ | Always shown. |
| Children | Children | Age 2–12 | Always shown. |
| Babies | Babies | Under 2 | Off by default. Enable to add a baby row. |
When babies are enabled you also choose whether they:
- Count toward total capacity: whether a baby takes a “slot” against the room's capacity.
- Count toward child pricing: whether babies are treated as children for extra-guest pricing and per-guest services.
Capacity itself is set per accommodation (max adults, children, babies, and an optional overall total). It's checked separately from the price. A guest count that exceeds capacity is rejected with a clear message.
Storefront blocks
Add Rbooking to your storefront from the Shopify theme editor. No theme code. Open a page, click Add block (or Add section), and pick a Rbooking block. They inherit your theme's fonts and colors.
| Block | Where | What it does | Key settings |
|---|---|---|---|
| Availability search | Home / landing | Dates + guests + location search that lists matching rooms. | Hero mode (image/video background), height; show images, details and price in results. |
| Accommodations grid | Collection / landing | A grid of bookable rooms with capacity and starting price. | Columns (2–4), sorting toggle, show capacity, show price. |
| Reservation form | Product | The date picker, live price and Book now button. | Show check-in/out times, show services, price summary, hide native product UI. |
| Accommodation details | Product | Capacity, amenities and attributes for the room. | Toggle amenities, size, bedrooms and bathrooms. |
| Availability calendar | Product | A month calendar of open/blocked nights with nightly prices. | Months to show (1–3), enable selection. |
| Location map | Product | A map with the property pin and directions. | Provider (Google/OpenStreetMap), zoom, height, Google API key. |
How a booking is created
Rbooking uses a draft-order checkout, with no cart holds or temporary products. Here is the full path:
- Guest picks dates and services in the reservation form. The price updates live.
- Rbooking validates and quotes server-side: product is bookable, room is active, capacity fits, a unit is free, and all booking rules pass.
- On “Book now”, a Shopify draft order is created with the exact price locked as custom line items, and the guest is sent to native Shopify Checkout. They can't change the amount or dates.
- When the order is paid, Rbooking creates a confirmed booking and automatically assigns a free unit. Add-on services are attached in the same step.
- If the order is cancelled or refunded later, the booking is cancelled or marked refunded and the unit is released.
Managing bookings
The dashboard and calendar are where you run daily operations.
Bookings list
Tabs for All, Confirmed and Cancelled, with search by guest name, email, phone or order number. Each row shows status, dates, nights, guests, customer, total and the room. A Needs unit badge flags any confirmed booking without a unit assigned.
Calendar
An occupancy board by Month, Week or Day, grouped by accommodation type or by unit. Color-coded bars open a quick view with guest, dates, total and links to the booking and the Shopify order.
Add a booking manually
Add booking records a phone or walk-in reservation. It creates a paid Shopify order (offline payment) and a confirmed booking, recomputing the price and validating rules server-side. Shopify emails the guest a confirmation when you provide an email.
Editing, cancelling & refunds
- Order-backed bookings (from checkout) are managed on the Shopify order. In Rbooking you can re-assign or auto-assign the physical unit; price, dates and guest come from the order.
- Manual bookings are fully editable in Rbooking.
- Cancelling releases the unit. Rbooking never auto-refunds. Issue any refund from the Shopify order, where you control amount, restocking and customer notification.
- Audit history on each booking records every status change and edit, with who made it.
Resolving an oversold booking
If a paid booking has no unit, a warning banner appears and the booking shows a Needs unit badge. Open it and assign an available unit, or cancel and refund the order.
Channel sync (iCal)
Channel sync Premium keeps availability aligned with external calendars over iCal, so you don't get double-booked across Airbnb, Booking.com, Vrbo and others. Manage it under Channel sync.
iCal connections
- Choose the accommodation or a specific unit to sync.
- Pick the channel (Airbnb, Booking.com, Vrbo, TripAdvisor, HomeAway, or Generic iCal) and an auto-sync interval (15 min to daily).
- Import URL: paste the channel's iCal link to pull their bookings in as availability blocks. Leave blank for export-only.
- Export URL: Rbooking gives you a feed of your Shopify bookings to paste into the other channel.
Each connection shows its last sync time, status and recent logs, and you can press Sync now any time.
Manual blocks
Independently of channels, you can block dates for maintenance, an owner stay, or any reason, for an accommodation or a single unit. Blocked dates are never bookable from any channel.
Settings reference
Settings holds store-wide defaults. Changes save from the bar at the top of the page.
| Group | Settings |
|---|---|
| General | Timezone (all dates/times display in it), default check-in and check-out times. |
| Guest policy | Adult/child/baby labels and age ranges; enable babies and how they count toward capacity and pricing. |
| Booking rules | Default min/max stay, booking buffer, min/max advance booking, allow same-day, require full guest details. |
| Price display | How prices read to guests: currency code (240 USD), symbol before ($240) or symbol after (240 $). |
| Pricing defaults | Weekend, major-holiday and minor-holiday multipliers and the holiday date lists. |
| Services | Enable services on the storefront; require at least one service per booking. |
FAQ
Do I need to write any code?
No. Everything is configured in the app admin and added to your storefront through Shopify's theme editor blocks. No theme code editing is required.
How do guests pay? Do I need Stripe or a separate payment provider?
No separate provider. Guests pay through your normal Shopify Checkout. Rbooking creates a Shopify order with the exact price locked in, so there are no extra payment keys to set up.
Can two guests book the same room type on the same dates?
Yes, if that accommodation has more than one unit. Each booking is allocated its own unit. When all units are taken for a date range, those dates show as unavailable.
What stops a customer from editing the price or dates at checkout?
The price and dates are written onto a Shopify draft order as fixed custom line items server-side. The customer cannot change the amount, quantity or dates at checkout.
When is a booking actually created?
Only when the Shopify order is paid. Rbooking listens to the orders/paid webhook, then creates a confirmed booking and assigns a unit. Unpaid or abandoned checkouts never create a booking.
What happens if a date gets oversold?
If somehow no unit is free at the moment payment completes, the paid booking is still created (never lost) and flagged with a “Needs unit” badge. You assign a free unit, or cancel and refund from the Shopify order.
Does cancelling or refunding the Shopify order update the booking?
Yes. Cancelling the order cancels the booking and releases the unit. A full refund marks the booking refunded. Rbooking never auto-refunds money. You control refunds from the Shopify order.
Can I take a booking myself from the admin (phone or walk-in)?
Yes. Add booking creates a paid Shopify order (offline payment) and a confirmed booking, and Shopify emails the guest a confirmation when you provide an email.
Can I sync with Airbnb, Booking.com or Vrbo?
Yes, on the Premium plan. Channel sync imports those calendars as availability blocks and exports your Shopify bookings back via an iCal feed, so dates stay aligned across channels.
Troubleshooting
The reservation form doesn't appear on my product page
Confirm three things: the product is connected to an accommodation (Accommodations → Shopify product mapping), the accommodation Status is Active, and the Reservation form block has been added to that product template in the theme editor.
A date shows as unavailable when I expect it to be open
A date is blocked if every unit is already booked or marked unavailable for it, a manual block or imported channel block covers it, or a booking rule forbids it (for example no check-in on that weekday, or it falls outside the advance-booking window). Check the accommodation's units, Channel sync blocks, and Booking rules.
Prices look wrong on the storefront
Rbooking prices each night by precedence: an exact date rate, then a season rate, then the base rate, then the Shopify variant price as a fallback. Weekend and holiday multipliers only apply to season, base and fallback nights, never to an exact date rate. Check the room's rates under Rates and the multipliers under Settings → Pricing defaults.
“This room can't accommodate that many guests”
The guest count exceeds the accommodation's capacity. Increase Adults/Children (and Total capacity) on the accommodation, or reduce guests. Note that babies only count toward capacity if you enabled that in Settings → Guest policy.
I can't add more accommodations
Each plan has an accommodation limit. Free: 1, Standard: 5, Premium: 25, and Business: unlimited. Open Plans & billing to upgrade for a higher limit and more monthly bookings.
401 or session errors in the admin
Reinstall the app from your Shopify admin. The embedded session refreshes automatically once reconnected.
