SERVOS QL is a query language for hospitality commerce. You write a query to ask a question about your hotel, like room revenue last month, and get back a table you can chart.
It reads like SQL, so if you have written a database query before, it will feel familiar. Schemas cover sales, rooms, bookings, activities, payments, customers and more, so a question about your hotel maps to a schema you can query.
Getting started
Start with a question and write it as a query. Each step below adds one clause to the query before it.
How much did we sell last month?
FROM picks the
revenue schema, SHOW picks the
net_revenue metric, and DURING
last_month sets the range. The result is one number.
FROM revenue
SHOW net_revenue
DURING last_monthHow did it move day by day?
TIMESERIES day turns the total into
one row per day, and DURING last_30_days sets the last 30 days, today
included. Days with no sales show 0, so the line has no gaps.
FROM revenue
SHOW net_revenue
TIMESERIES day
DURING last_30_daysWhich channels bring in the room revenue?
GROUP BY channel splits the total by
channel, and ORDER BY ranks them. Each
channel comes back with its revenue, nights and average rate.
FROM rooms
SHOW room_revenue, room_nights_sold, adr
GROUP BY channel
DURING last_month
ORDER BY room_revenue DESCHow does this month compare with last year?
COMPARE TO stly puts each metric next
to the same weekdays last year, and WITH PERCENT_CHANGE adds the change.
FROM rooms
SHOW occupancy, adr, revpar
DURING this_month
COMPARE TO stly
WITH PERCENT_CHANGEAre we ahead of last year for next month?
AS OF today makes the comparison read last
year's bookings as they stood 364 days ago, so both columns have had the same
time to fill. This is pace.
FROM rooms
SHOW room_nights_sold, room_revenue
DURING next_month
AS OF today
COMPARE TO stly
WITH PERCENT_CHANGEWhere you write queries
Owners and admins write queries in Custom reports, under Insights. The editor checks a query as you type. It underlines what is wrong, says why and suggests the closest names. The Metrics, Dimensions and Filters controls change the same query, so you can build one by clicking and read the query it makes.
Run a query to see its table and chart. Save it as a report, export every row to a spreadsheet, or email it on a schedule.
Parts of a query
What comes back
A table, with the grouped dimensions first and then each metric. A comparison
adds a column per metric, named <metric>__<comparison>, such as
room_revenue__stly. Above the table, one sentence says what was computed:
Occupancy, ADR and RevPAR, by stay night (default), 1–31 October 2026, compared with the same weekdays last year, with percent change.
Money is in your organization's currency. SERVOS QL never adds two currencies together. A query that would gets an error instead of a wrong total. Rates such as occupancy and ADR are computed from their parts for each row, never averaged from other rates.
Dates are your hotel's local calendar dates. A booking made at 00:30 on 1 September in Oslo is a 1 September booking.