Tutorials

How to Get Repeat Guests to Book Direct (Vacation Rental)

Repeat guests already stayed. This is the sequence that brings them back direct — timed to the last stay, the channel, and the nights that are actually open.

Petar Ojdrovic

Yada

·

11 min read

You already have the stay in your PMS. The guest already knows the house. The open question is whether their next trip comes back through Airbnb or Vrbo, or through a path you own. This page is the sequence that asks them to book direct: timing, who to skip, what each message is for, and what has to be true before you say their dates from last year are open.

If you are still building a guest list from scratch, start with how to activate your guest list for direct bookings. This article assumes the list exists and the PMS already holds the stay.

The second stay should not go back through the OTA

A first booking is discovery. A second booking is a guest who already found you, already stayed, and already has a relationship. When that second stay goes back through an OTA, you pay commission on a guest the platform did not have to find again. That is a different job from acquiring a new traveler. For the fee and channel-mix comparison, see direct booking vs OTA. This page does not rebuild that argument.

Boundary for this playbook: it starts after a completed stay. It is not how to capture an email during the stay, not how to fill a soft week that matches nobody's last stay, and not how to recover an inquiry that never booked. Past-guest winback is the ask that uses stay history you already store.

How do I get repeat guests to book direct for a vacation rental? Start from guests who already stayed and have a consented email or phone, not from an OTA thread. Do not put a direct-booking link or a "skip the fees" line in Airbnb, Vrbo, or Booking.com messages. After checkout, thank them on a channel you own. The later ask is timed to their last stay, or to open nights that match that stay, and it goes to the direct booking path. Skip guests you would not host again, guests with only an OTA alias, and guests who already have a future booking. A discount is one reason, not the sequence.

What the sequence is allowed to know

Before any winback send, the PMS row has to be usable. The minimum is last stay dates, property, party if you store it, booking channel, and a real email or phone versus an OTA alias. Consent to market is separate from a stay message. You also need a direct booking path that can take the reservation. Without that path, the ask has nowhere to land.

An OTA alias is not a list you own. If the only address on the reservation is a platform relay, that guest is not in this sequence. The sequence is only as good as the record. If the row is an alias, or the guest never opted in, they stay out. For how last stay and channel live as one profile once the PMS is connected, see the guest data platform.

Do not turn this section into a WiFi-hardware guide or a website build. The method has to stand if you run it by hand on a small list. The data check comes before the timing chart.

What not to say on an OTA thread

The ask to book direct next time does not go in Airbnb, Vrbo, or Booking.com messaging. Not during the stay. Not after. That includes a direct URL, a "skip the fees" line, and a discount code. Review requests and stay logistics can stay on the platform thread. The direct ask waits for a channel the guest opted into, after checkout.

Operational rule for this sequence: the OTA thread is not a winback channel. Why the relationship is rented in the first place is covered in the OTA escape plan. This page only sets where the ask is allowed to go.

Who to write, and who to skip

Skip rules are filters the sequence enforces, not a mood.

Skip guests with a bad stay signal you already trust: damage, rule breaks, neighbor issues, hostile complaints. You do not invite them back on a nicer channel.

Skip anyone with no consented, usable contact. An OTA relay address is not a winback recipient.

Do not send the "book direct instead" ask to a guest whose last stay was already direct, in the same words. Their job is a return stay on the channel they already used, plus loyalty if you run that program. Different message job, not a conversion lecture.

Skip guests who already have a future reservation on the books. Skip guests inside an active OTA stay. The sequence starts after checkout, on owned channels only.

Everyone left is a guest you would host again, with a contact you can use, and no overlapping reservation. That is who the timeline is for.

The sequence: when to ask

Anchor every step to the stay, not to "whenever the list feels cold." The ranges below are operational ranges operators already use, not product defaults. Pick one rule and keep it consistent.

After checkout, on the owned channel only: thank-you. Job is to close the stay and name that a direct path exists. Not the booking ask. If you also send a review request, do not stack a review ask, a discount code, and a "book your next trip" plea in the same note. This message owns the goodbye and the pointer to direct.

Then a quiet gap. Do not fill it with a newsletter. Practice varies — about two weeks, about a month, or not until the guest is thinking about travel again. The rule for this playbook: the first commercial ask waits until the stay is a memory, not the same week as checkout, unless the guest already asked about coming back.

Anniversary of the last stay: send in the planning window before that week, not on the checkout anniversary itself. Job is first look at the same week, only if those nights are open. That is the booking anniversary email.

Lapsed: no return by the time a second season or a long gap has passed. Industry practice sits in ranges around 10–14 months, about a year, or 12–18 months. Treat those as operational ranges, not a proven day count. Job is a re-introduction, not "your dates are open" unless the dates match and are open.

Open dates that match a past stay: this can fire when the calendar opens those nights, even if the anniversary date has not arrived, and it does not fire for a random hole. For holes that do not match a past stay, use fill empty nights.

Channel job in one pass: email carries the story and the link. SMS, RCS, or WhatsApp is for a short, time-bound ask when the matching nights are open and the guest already opted into that channel. This page assumes opt-in. It is not a compliance article.

Recent stay

Who: checked out, consented contact, no future booking, not skipped.

Job of the thank-you: be specific to the property they just left, and point at the direct path without asking them to pick dates. Subject-style job label: "recent stay: close the stay, name the direct path."

What not to do: sell a code in the same breath as the goodbye, or put any of this on the OTA thread. Vacation rental email marketing for this segment is a thank-you with a path, not a pitch.

What is the difference between a post-stay thank-you and a lapsed-guest winback? The thank-you is the first owned-channel note after checkout. Its job is to close the stay and name the direct path, not to close a new reservation. A lapsed winback is for a guest who did not return after the anniversary window. Its job is to reopen the relationship on the direct channel, with a real reason, and without pretending their old dates were held unless the calendar says those nights are open.

Anniversary

Who: stayed about a year ago, same property or same destination pattern still in the PMS, matching nights open, no booking since.

Job: give them the same week before it is gone, as a returning guest, with the direct link. Subject-style job label: "anniversary: same week, still open, direct path." This is the only place the "your dates from last year are open" line is allowed, and only after the open-date check.

What not to do: send this as a seasonal blast to the whole list on a Tuesday that suits the operator. A booking anniversary email is tied to that guest's last stay. A seasonal blast is not the same job.

When should I send a booking anniversary email to a past vacation rental guest? Send it in the planning window before the same week they stayed last year, not on the day of checkout and not as a blast to the whole list. It is only an anniversary email if it is tied to that guest's last stay. The "your dates from last year are open" line is allowed only when those nights are actually open in the PMS. If they are booked, the message does not claim they are open.

Lapsed guest winback

Who: last stay past the anniversary window, no return, still a guest you would host.

Job: remind them the place is still theirs to book direct, and lead with what changed only if something actually changed. Subject-style job label: "lapsed: reopen the relationship, real reason, direct path."

What not to do: pretend you held their old dates, or use a heavier discount than the anniversary ask without a reason tied to a soft period. If the matching nights are open, say so. If they are not, the job is a conversation, not a false availability claim. Turning past guests into repeat bookings at this stage is a re-introduction, not a fake hold.

Open dates that match a past stay

What has to be true: the guest stayed those dates, or a close pattern the PMS can show. Those nights are open now. The guest has no overlapping reservation. The message names the dates and the property. It does not go to the whole past-guest list because a weekend opened up.

What not to do: say "your dates from last year are open" when the calendar has not been checked, when only one of the nights is open, or when the guest's last stay was a different property you no longer have. Unmatched gaps belong on fill empty nights, not in this ask.

Win back past guests when the inventory match is real. The open-date send is allowed because the match is true, not because the list is quiet.

Message jobs, not templates

Email templates to book direct next time fail when they do not know last stay, channel, and availability. A pasted body that asserts "your week is open again" without a PMS check is the host asserting, not the system confirming. This page stays on jobs.

Segment

Trigger

Channel

Job

Must include

Must not say

Recent stay

After checkout

Owned email

Close the stay; name the direct path

Property they just left; path to book direct

Discount stack with goodbye; OTA-thread ask

Anniversary

Planning window before last year's week

Email primary

First look at the same week as a returning guest

Matching nights confirmed open; direct link

Seasonal blast language; unchecked open dates

Lapsed

After anniversary window, no return

Email primary

Reopen the relationship on the direct channel

Still welcome; a real reason; direct path

False hold on old dates; heavier discount with no soft-period reason

Open-date match

Matching nights open in the calendar

Email, or short SMS / RCS / WhatsApp if opted in

Name the dates and property while the match is true

Exact dates; property; direct path

Whole-list blast for a random open weekend; partial-week claims

Post-stay thank you then rebook is two jobs, not one note. The thank-you owns the close. The later ask owns the commercial rebook. Keep them apart.

The reason to book direct: perk, points, or a smaller rate

The direct ask needs a reason that is not "please don't use Airbnb." Pick one job per segment. Do not stack all three.

A direct rate or code sized so the stay still nets more than the same stay on the OTA. Do not invent a percent. The guest sees a reason; you do not give away more than the commission you are avoiding. Modest "book direct and save" framing is enough when the math works.

A perk the OTA path does not include: late checkout, early check-in, a stay credit, something you already use in the business. Job is to make direct feel better, not cheaper only.

Loyalty points for booking direct, if you run that program. Job is a standing reason, not a one-time coupon. See loyalty for how points attach to the direct path. Do not treat points as a substitute for the open-date check.

When a code belongs: lapsed guests, or a truly soft matched week. When a perk or points belong: recent stay, and anniversary guests you want back at rate. Discount-first trains the anniversary segment to wait for a deeper code.

How to tell the sequence is working

Look at outcomes that map to the jobs, without fake benchmarks.

Repeat stays that come back direct versus back through the OTA. Which segment sent the booking: recent, anniversary, lapsed, or open-date match. Guests skipped because of channel, alias, or a bad stay. Those counts tell you whether the filter and the timing are doing their work.

Do not publish open rates, conversion rates, or "industry" lift as proof of this sequence. This page does not invent them.

One line on what this is not: inquiry recovery. A guest who asked and went quiet is inquiry abandonment recovery. Do not mix those results into past-guest winback.

Where this sits if the PMS is already connected

The method above stands if you run it by hand. Once the PMS is connected, Yada is the AI guest relationship platform that unifies guest data from the PMS and can run guest messaging on email, SMS, RCS, and WhatsApp, with signals on open dates and win-back windows, and loyalty for booking direct. Ranking pages leave last stay, channel, and open dates as homework. Those three are what the sequence has to know before the ask goes out.

For lifecycle messaging, see journeys. For campaigns and signals, see marketing. For the guest profile that holds the stay and the channel, see the guest data platform. This page is the operator sequence. The product pages are where that sequence runs once the match is already true.

See your next direct-booking opportunity

In a 20-minute demo, we’ll map the campaigns and guest segments that can help your portfolio bring past guests back.

See your next direct-booking opportunity

In a 20-minute demo, we’ll map the campaigns and guest segments that can help your portfolio bring past guests back.

See your next direct-booking opportunity

In a 20-minute demo, we’ll map the campaigns and guest segments that can help your portfolio bring past guests back.