Skip to content

Lodging

Lodging is the third live domain, beside flights and cruises. A lodging is a house — a hotel, a guesthouse, an apartment, a hostel, a campsite — with its type, chain, position on the map and its own stays. A stay is one visit to that house: dates, room, board, guests, per-category ratings, price with its currency, loyalty programme, and the trip it belongs to. The domain switches on and off like the others under Settings → Modules; off means it is gone from the navigation, the dashboard, the map, the statistics and the achievements, while the data stays untouched.

The split between house and stay is the point. A photograph of the building, the lobby or the view is a fact about the house and survives every stay, so it hangs off the lodging. A rating, a room number and a price belong to one visit, so they hang off the stay. “Every hotel I have slept in” is a list of houses; “how much did I pay for a night in 2024” is a question about stays.

A house carries an address in Latin script and an ISO country code — the address is filled in from the pin when you save, and a nightly pass fills in houses recorded earlier. The country field is grouped by code everywhere, so “Deutschland” and “Germany” are one country in every list, filter and statistic, shown in your language. The original text a booking mail used is kept as the record of what the source said.

A stay may record only a month, only a year, or no date at all, and says which — a hotel you cannot date is still a hotel you slept in, and forcing a guess would later read as fact. Check-in and check-out times are optional and refine the day rather than replace it: night counts, statuses and currency conversion keep reading the dates, while “next up” counts down to the real 15:00 check-in.

The Add dialog on the lodging page or the dashboard opens with the drop zone:

  • Drop a confirmation — a mail, a PDF, or a photograph of the bill. The server recognises it as a hotel booking on its own. Booking.com mails are read by a deterministic template measured against 95 real confirmations, across both layouts the sender uses. Anything else goes to the language model, which is asked for what the document says: the kind of place (a campground is not a hotel), the group behind a brand (“Courtyard by Marriott” → Marriott), the country a city sits in, the meal plan, the per-night rate, how many people the booking covers. A total the document labels overrules the model, and a number counts as money only if it carries a currency or two decimals. The postcode stays out of the city. A booking for more than one person points at the companions field and never invents a name. See Documents.
  • Import a list — a flat CSV through Settings → Import, with a preview that names every questionable row first. See Import & Export.
  • Manual entry — the form. The address input opens the map picker: search, click, or drag the pin, and dropping it lists the named places around it so the hotel’s own details can be carried into the form. An out-of-range coordinate is refused with a message rather than silently dropped.

Before creating a house, the import looks for it: it compares where the house is, not only what it is called, and reads through decoration like “Hotel”, “Restaurant” or “GmbH”. Two names are offered as one house when the town agrees and they share an identifying word; a hit is a guess you confirm, and “Hotel Rose” in Portland and in Bietigheim stay two houses. An unknown chain is offered, never created behind your back.

The lodging list is one family with the flight and cruise lists: status pills, sortable headers, a column picker, a filter bar, a summary line for the rows shown. A Last stay column dates each house by its newest stay, planned ones included. A row says what it still needs — an address the geocoder could not find, no address at all, a name and nothing else, a country field holding something that is not a country — and nothing for a sound row. The list does not stop at 200 rows.

The house page shows its stays, photographs, chain and loyalty programme, the pin, and offers to search a location when there is none. Since 2.6.1 the stays of a house with many of them scroll in a box of their own beside the map and the spend card — on wide screens only; on a phone the page still scrolls as one, so there is no scroll trap inside a scroll. A cleared address stays cleared: emptying a field is an instruction, not a gap for the geocoder to fill.

A chain is a catalogue entry a house belongs to. A loyalty programme is a card you hold: created once under Settings → Lodging → Loyalty programmes, it covers as many chains and individual houses as it really covers, and each stay derives its programme from that instead of asking again. A programme already on file offers to extend to the chain you are looking at rather than refusing you. Unticking a chain says before you save that the programme leaves that chain’s page, and names where the card stays reachable.

A stay counts once it is over. A booking for next month is not a night slept, and a house bookmarked from a saved-places import is not a visit; both are reported separately, never folded into a total or dropped from it. That rule has exactly one home in the code and every screen reads it. A planned, priced stay shows “planned: 149.90 €” in a muted line, never “0 €” and never inside the total.

A house entered with no stay at all counts as one night — the owner’s rule from the country-counting design — while a cancelled booking proves nothing, and a house whose stays were all cancelled is not a visited one.

A price is recorded in the currency it was paid in and converted at the rate for the day of the stay. What cannot be converted is kept in its own currency, marked “no rate”, and left out of the total, which says how many stays it left out — on the stay, on the house, in the list and in the statistics strip. See Money & currencies.

The Lodging tab of the statistics page is a chapter of its own — cost per night by year, country, chain and board with the median over nights; award-night value; the four ratings separately; continents, the northernmost night, your centre of gravity; weekdays, seasons, the longest run away from home; nights per programme per year. See Statistics. Lodging badges — nights, houses, chains, countries slept in, ratings — are part of the catalogue of 270+ badges.

A completed stay is the strongest evidence a country can have: it lands the country on the slept rung of the passport, and a country with hotel stays and no flight ever is counted like any other. See Countries & passport.

One pin per house on the Lodging tab, coloured by the mode you pick and sized by the slider; the same pins on the trip map with this trip’s nights on them. A stay is a place, not a route, so nothing connects them. See Maps.

  • No availability, no booking. TravStats records where you slept; it does not talk to a booking engine.
  • Stays are export-only in the spreadsheet. Houses and stays go out; a stay edited in the workbook does not come back yet, and the import panel says so.
  • No automatic stay detection from flights or location history. A stay is recorded from a document, a list, or by hand.
  • Only Booking.com has a deterministic template. Every other sender needs the language model or manual entry.