Know the guest is late before the guest calls.
A reservation has an arrival time on it that was typed weeks ago. The flight behind it moves on the day, and the guest finds out at the gate, not the desk. Watching the flight turns a no-show at midnight into a held room and a shuttle that leaves when the aircraft lands.
The two evenings that cost a review
The room released at midnight
The no-show rule ran. The guest landed at 00:40 after a three-hour delay, took a taxi, and arrived to a desk that had given the room away. Everything after that is a refund and a review.
The shuttle that left on time
The van went to the airport for the 21:10 arrival. The aircraft landed at 21:55. The driver waited, the other guests on the van waited, and the next run was late as well.
Both are fixed by one fact arriving at the desk on time: the guest’s flight is late, by this much, landing at this time. A subscription per arrival delivers it.
How to wire it
Five steps, one of which is a form field.
Capture the flight number at booking
A single optional field on the booking form and in the pre-arrival email: airline, flight number, date. Frame it as a service (“so we can hold your room if your flight is late”), and guests who fly in fill it in, which is the point: they are the ones who arrive late.
Subscribe with the airport as the selector
When a reservation has a flight, subscribe to it on the arrival date with destination set to the airport that serves the hotel, so a number that flies twice a day resolves to the right leg. Set the delay threshold to thirty minutes: the desk does not act on ten.
POST /v1/subscriptions
x-api-key: $FLIGHTBYTE_KEY
idempotency-key: pms:RES-20931
{
"carrier": "TK",
"flightNumber": "1848",
"date": "2026-09-12",
"destination": "IST",
"webhookUrl": "https://ops.yourhotel.com/hooks/flights",
"secret": "$FLIGHTBYTE_WEBHOOK_SECRET",
"delayThresholdMinutes": 30,
"events": [
"delay.increased", "arrival.estimated.changed", "flight.cancelled",
"flight.diverted", "flight.reinstated", "status.changed",
"flight.arrived", "arrival.baggage.changed"
],
"metadata": { "reservation": "RES-20931", "room": "412" }
}Put the fact where the desk looks
The receiver verifies the signature, answers 204, and writes one line where the evening shift will see it: a note on the reservation, a message in the desk’s channel, or both. The wording is the whole product, so write it for a person at 23:00 with a queue.
TK1848 Athens → Istanbul
Landing 23:40 · 55 min late
Time the shuttle off the landing, not the timetable
status.changed to landed is the signal the van has been waiting for. From a large airport, count twenty minutes to the gate and the belt, then the walk; from a small one, ten. When arrival.baggage.changed arrives, the guest is fifteen minutes from the kerb.
Let it end
FlightByte completes the subscription once the aircraft is at the gate and the belt window has passed; a cancelled reservation deletes it. A flight added to a reservation more than a week out waits as pending and activates by itself when the airline publishes it.
The events a hotel needs
Eight of the 23. Gate and terminal changes are left out: the guest is coming to you, not to a gate.
| Event | Why it is on the list |
|---|---|
delay.increased | The guest is later than the reservation says. Threshold at 30 minutes; the desk does not care about ten. |
arrival.estimated.changed | The landing moved. Re-time the shuttle and the late check-in note. |
flight.cancelled | The guest may not arrive today. Hold the room, send the message, do not release at midnight. |
flight.diverted | The guest is landing at another airport. Someone should call. |
flight.reinstated | A cancelled flight came back. So does the arrival. |
status.changed | Landed: the shuttle leaves in twenty minutes, not on the scheduled time. |
flight.arrived | At the gate. Start the clock for the pickup. |
arrival.baggage.changed | Bags on a belt. The guest is fifteen minutes from the kerb. |
An arrival, hour by hour
| When | What happens | Who does it |
|---|---|---|
| Booking made, 5 days out | Flight number captured. Subscription created; flight not published yet, so it sits as pending. | Your backend |
| 2 days out | Flight appears; subscription activates. subscription.activated delivered. | FlightByte |
| Day of, 20:15 | Departure slips 55 minutes. delay.increased crosses the 30-minute threshold. | FlightByte → desk |
| 20:16 | Note on the reservation: landing 23:40, hold the room, shuttle at 23:55. | Your backend |
| 23:38 | Aircraft lands. status.changed to landed. | FlightByte → shuttle |
| 23:52 | At the gate; belt 7 published. flight.arrived, arrival.baggage.changed. | FlightByte → shuttle |
| 00:37 | Belt window passes. subscription.completed. | FlightByte |
What it costs a hotel
One arrival with a flight number is one watched flight. The plan follows how many guests fly in.
A boutique property. Less than one late-night refund.
A busy hotel where fifteen or so arrivals a day come with a flight.
A group of properties on one integration; extra arrivals at three cents each.
Full plans on the pricing page.
Questions hotel teams ask
Guests do not give us their flight number.
Do we need a developer for this?
Does this integrate with our PMS?
We already offer late check-in. Why watch the flight?
Other uses
Hold the room on facts.
A key, a form field, one subscription per arrival. The desk gets a sentence; the guest gets a room.
A free key in a minute, no card. On a paid plan? Request a key