Docs

Overview

Last updated: 27 Oct 2026

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_month

How 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_days

Which 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 DESC

How 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_CHANGE

Are 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_CHANGE

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