Hotel Revenue Management: How Dynamic Pricing Works
Advanced4 minInnovialabs editorial team
In short
Dynamic pricing changes room rates based on demand signals to maximize RevPAR — revenue per available room — rather than occupancy or average rate alone.
What dynamic pricing means for a hotel
Revenue management is selling the right room to the right guest at the right price at the right time. A room night is perishable: an unsold night never comes back. So the rate is not fixed for a season — it moves with demand, date, day of week and market conditions.
The goal is not maximum occupancy or maximum rate, but maximum revenue per available room.
The three core metrics
| Metric | Formula | What it shows |
|---|---|---|
| Occupancy | rooms sold / rooms available | How full the hotel is |
| ADR (average daily rate) | room revenue / rooms sold | What a guest pays per night on average |
| RevPAR | room revenue / rooms available = ADR × Occupancy | How well the whole inventory performs |
A worked example with arbitrary numbers: a hotel has 100 rooms and sells 80 at an average of 50 units. Occupancy is 80%, ADR is 50, RevPAR is 40. Drop the rate to 40 and sell all 100 rooms, and RevPAR is still 40 — the same revenue, but higher housekeeping costs and wear.
RevPAR = ADR × Occupancy
50 × 0.80 = 40
40 × 1.00 = 40
That is why hotels track RevPAR and, once operating costs are included, GOPPAR (gross operating profit per available room).
Demand signals
Pricing decisions rely on data:
- pickup — how many bookings arrived for a date recently compared with earlier periods;
- booking window — how many days before arrival guests usually book;
- history — occupancy and ADR for the same dates last year, adjusted for day of week;
- city events — conferences, exhibitions, concerts, holidays;
- competitor rates and their availability;
- cancellations and no-shows by segment and channel;
- segments — corporate, groups, OTAs, direct bookings.
Rules or RMS algorithms
Rules are manual logic: "if occupancy for a date exceeds X, raise the rate one step". They are easy to understand and set up in a PMS or channel manager.
An RMS (revenue management system) forecasts demand from historical data and signals, then recommends or publishes rates itself.
| Criterion | Rules | RMS |
|---|---|---|
| Entry barrier | Low | Needs data history and integrations |
| Transparency | Full | Depends on the system |
| Market response | Only to scenarios you defined | Weighs many signals at once |
| Risk | Missed demand | Blind trust in the algorithm |
| Best for | Small hotels, getting started | Hotels with history and several channels |
A sensible path: start with rules and clean data, then add an RMS. Without accurate booking history, any algorithm will make poor calls.
Tracking competitor rates
A rate shopper collects rates of selected competitors from OTAs and websites by date. What matters:
- pick a compset of 4-8 hotels guests genuinely compare you with by location, category and audience;
- compare like with like: room type, meal plan, cancellation terms;
- watch availability — a competitor closing sales is a strong demand signal.
How to avoid a price war
A price war is when hotels keep undercutting each other and the whole market loses revenue without gaining demand.
- Do not copy competitors automatically. Their rate is a signal, not a command.
- Set a floor price below which a room is not sold, based on your costs and positioning.
- Compete on value: breakfast packages, flexible terms, perks for direct booking.
- Use restrictions instead of discounts: minimum length of stay on peak dates, closing cheaper rates.
- Segment: a closed-group discount or a non-refundable rate does not crash your public price.
How to implement it
- Clean up PMS data: segments, channels, cancellations.
- Define the rate structure: a base rate and rates derived from it.
- Connect a channel manager so a price change reaches every channel at once.
- Set up reports on pickup, ADR, occupancy and RevPAR.
- Introduce rules, then assess whether you need an RMS.
- Review decisions regularly: what worked, where the rate was too low or too high.