Travel/Booking recovery

Bring the traveler back before they book elsewhere.

Signals tells your booking flow and CRM where a traveler stopped, how long ago, and which route and dates they had picked, so the hold, the restored trip or the reminder reaches them while the trip is still open.

More completed bookings

Complete more bookings by reaching the traveler before they book elsewhere.

Completed bookings move when the follow-up reaches a traveler while the trip is still open in their mind. Signals gives your booking flow and CRM the step this traveler stopped at, how long they have been there, how many times they went back a step, and the route and dates of the fare they picked. Your booking flow and CRM decide what to hold, what to restore and when to send.

Hold the fare while the traveler is still on the payment step

A traveler picked a fare from Boston to Lisbon, filled in two passengers and has been on the payment step for four minutes. They may be in another tab pricing the same route, or looking for a card. The fare expiry runs on its own clock, and the message about it usually reaches the traveler after the fare has gone, when they come back to the tab. A line above the payment form saying the fare is held for a few more minutes, for as long as your fare rules allow, answers the question before they leave the tab to settle it.

What Signals knows
current_step
The step of the booking flow they are on now
seconds_on_step
Seconds since they reached it
selected_route_session
The route of the fare they picked this visit
What your booking flow and CRM do

Holds the fare and says so above the payment form once a traveler has been on the payment step for several minutes without finishing, for the time your fare rules allow, and does nothing for the traveler who has just arrived on the step.

booking.tsx · 12 lines
// In the code that renders the payment step
const traveler = await signals.getServiceAttributes({
  name: "trip_booking_idle",
  attribute_key: "domain_sessionid",
  identifier: sessionId,
});
// { current_step: "payment", seconds_on_step: 243.0, selected_route_session: "BOS-LIS" }

if (traveler.current_step === "payment" && traveler.seconds_on_step >= 240) {
  const hold = booking.holdFare({ route: traveler.selected_route_session, minutes: fareRules.holdMinutes });
  booking.notice(`This fare is held for you for another ${hold.minutes} minutes.`);
}

Try it on your own site.

Add the SDK, define one thing you want to know about a visitor, and watch it update while you click around. The free tier runs on the real engine: no card, no sales call.