Overview
Documentation

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 sellHow it works
Rooms, villas, apartments, rentalsEach is an “accommodation” linked to a Shopify product.
Nightly staysGuests pick check-in and check-out; price is calculated per night.
Add-onsOptional services like breakfast, cleaning or airport pickup.
Across channelsKeep 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.

  1. Install from the App Store. One-click install via Shopify OAuth. No code or payment keys.
  2. Create an accommodation. Go to Accommodations → Add accommodation. Set its name, capacity, and add at least one unit.
  3. Connect a Shopify product. On the accommodation, use Select product to link the product guests will pay for.
  4. 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.
  5. 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.
  6. 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.
TipThe dashboard shows an onboarding checklist that tracks these steps and links straight to each screen. It disappears once you've completed setup.

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.

FreeStandardPremiumBusiness
Accommodations1525Unlimited
Units / accommodation210UnlimitedUnlimited
Bookings / month15150750Unlimited
Storefront blocksYesYesYesYes
Rate plans & ratesYesYesYesYes
Services (add-ons)YesYesYesYes
SeasonsNoYes StandardYes PremiumYes
Booking rulesNoYes StandardYes PremiumYes
Channel sync (iCal)NoNoYes PremiumYes

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:

SectionWhat it controls
Shopify product mappingThe product/variant the guest buys. See Connecting products below.
AccommodationName, description, Kind (Accommodation, Rental, etc.), Status, and Location.
Details & amenitiesAttribute values (size, beds, view…) and amenity checkboxes that show on storefront detail blocks.
Booking capacityMax adults, children and (if enabled) babies. Leave Total capacity blank to derive it from adults + children.
ServicesWhich add-on services are offered for this accommodation.
UnitsThe 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.

Good to knowKeep at least one Active unit on every bookable accommodation. A type with no active unit can never be booked. Set a unit to Maintenance or Inactive to stop it receiving bookings without deleting its history.

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.

  1. In the accommodation editor, under Shopify product mapping, click Select product.
  2. Pick the product (its first variant is used). The accommodation name defaults to the product title if empty.
  3. Save. The Accommodations list now shows the product handle instead of “Not connected”.
Good to knowThe product must be Active and published, and it can't be a gift card. If a product isn't bookable, guests see a clear message rather than a broken form.

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.

FieldNotes
CityNeeded to show the map and appear in the storefront location filter.
Region / stateOptional. Shown in listings and search.
Country, Country codeCountry (with City) is needed for the map and location search.
Latitude / LongitudeOptional. 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.

FieldMeaning
NameShown to guests when they choose a plan, e.g. “Flexible” or “Saver”.
RefundableMarks the plan as refundable; surfaced to guests as Refundable / Non-refundable.
ActiveOnly 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:

FieldMeaning
AccommodationThe room this rate applies to.
SeasonOptional. “Base rate” = no season (the standing price).
Date overrideOptional. A price for one exact date that beats season and base, and ignores weekend/holiday multipliers.
PriceNightly price in your shop currency.
Base adults / children includedHow many guests the price covers before extras apply.
Extra adult / childAdded per night for each guest above the included counts.
Minimum / Maximum nightsA 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:

  1. Exact date rate: a rate with a matching Date override. Used as-is, with no weekend/holiday multiplier.
  2. Season rate: a rate whose season covers that night. If seasons overlap, the higher-priority season wins.
  3. Base rate: the rate with no date and no season.
  4. 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:

Fri night: base $200 × 1.2 weekend + 1 extra adult $30$270.00
Sat night: base $200 × 1.2 weekend + 1 extra adult $30$270.00
Room total (2 nights)$540.00

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.

FieldMeaning
NameInternal label, also shown when choosing a season on a rate.
Start / End dateThe range the season covers.
PriorityWhen two seasons overlap a date, the higher number wins. Default 0.
ActiveOnly active seasons affect pricing and rules.
TipUse priority to layer seasons. For example a broad “Summer” season at priority 0 and a narrow “Christmas week” at priority 10. The Christmas rate takes over for those specific dates.

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.

SettingDefaultApplies to
Weekend multiplier1.2×Saturday and Sunday nights.
Major holiday multiplierDates listed under Major holiday dates.
Minor holiday multiplier1.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.

TipFor exact, non-multiplied control of a specific date (a New Year's Eve flat price, say), add a date override rate instead of listing it as a holiday.

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

TypeHow it's charged
Per bookingA flat fee once per booking (e.g. cleaning).
Per nightMultiplied by the number of nights (e.g. parking).
Per guestMultiplied by the number of guests (e.g. welcome drink).
Per guest per nightMultiplied 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.

Good to knowIn Settings → Services you can turn services off storefront-wide, or require guests to pick at least one service before they can complete a booking.

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).

RuleEffect
Minimum / Maximum stayThe fewest and most nights a guest can book. Leave max blank for no limit.
Allowed check-in daysRestrict arrivals to certain weekdays (e.g. Saturday-only changeovers).
Allowed check-out daysRestrict departures to certain weekdays.
Minimum advance bookingHow many days ahead a guest must book.
Maximum advance bookingHow far into the future bookings are allowed. Blank = no limit.
Booking bufferEmpty days kept before and after each booking, e.g. for cleaning.
Allow same-day bookingWhether guests can book for today.
Require full guest detailsForce 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.

TypeDefault labelDefault ageNotes
AdultsAdultsAge 13+Always shown.
ChildrenChildrenAge 2–12Always shown.
BabiesBabiesUnder 2Off 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.

BlockWhereWhat it doesKey settings
Availability searchHome / landingDates + guests + location search that lists matching rooms.Hero mode (image/video background), height; show images, details and price in results.
Accommodations gridCollection / landingA grid of bookable rooms with capacity and starting price.Columns (2–4), sorting toggle, show capacity, show price.
Reservation formProductThe date picker, live price and Book now button.Show check-in/out times, show services, price summary, hide native product UI.
Accommodation detailsProductCapacity, amenities and attributes for the room.Toggle amenities, size, bedrooms and bathrooms.
Availability calendarProductA month calendar of open/blocked nights with nightly prices.Months to show (1–3), enable selection.
Location mapProductA map with the property pin and directions.Provider (Google/OpenStreetMap), zoom, height, Google API key.
TipThe Reservation form is the only block guests book from. The others help them discover and evaluate rooms. A typical product page uses Reservation form + Accommodation details (+ optionally the calendar and map).

How a booking is created

Rbooking uses a draft-order checkout, with no cart holds or temporary products. Here is the full path:

  1. Guest picks dates and services in the reservation form. The price updates live.
  2. Rbooking validates and quotes server-side: product is bookable, room is active, capacity fits, a unit is free, and all booking rules pass.
  3. 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.
  4. 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.
  5. If the order is cancelled or refunded later, the booking is cancelled or marked refunded and the unit is released.
Good to knowA booking is created only when payment completes. Abandoned checkouts never produce a booking, and a paid order is never lost. Even in the rare oversold case it's created and flagged for you to resolve.

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

  1. Choose the accommodation or a specific unit to sync.
  2. Pick the channel (Airbnb, Booking.com, Vrbo, TripAdvisor, HomeAway, or Generic iCal) and an auto-sync interval (15 min to daily).
  3. Import URL: paste the channel's iCal link to pull their bookings in as availability blocks. Leave blank for export-only.
  4. 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.

GroupSettings
GeneralTimezone (all dates/times display in it), default check-in and check-out times.
Guest policyAdult/child/baby labels and age ranges; enable babies and how they count toward capacity and pricing.
Booking rulesDefault min/max stay, booking buffer, min/max advance booking, allow same-day, require full guest details.
Price displayHow prices read to guests: currency code (240 USD), symbol before ($240) or symbol after (240 $).
Pricing defaultsWeekend, major-holiday and minor-holiday multipliers and the holiday date lists.
ServicesEnable services on the storefront; require at least one service per booking.
TipPer-accommodation values always override these defaults. A room with its own minimum stay ignores the global default, and a room's own rate always beats the pricing-default multipliers.

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.

Still need a hand?
Email admin@foxlendar.com with your store URL and a short description.