I want to tell you about the booking channel almost every independent hotelier I meet is sitting on top of and ignoring: the people who live twenty minutes away.
Not the family flying in from three states over. Not the convention block. The person who drives past your porte-cochere on their commute, has never once considered staying with you, and would absolutely book a Tuesday night if you gave them a reason. That’s the staycation guest, and a few years back I got mildly obsessed with turning them into off-peak revenue. This post is the playbook I wish someone had handed me before I wasted a month spraying ads at the entire metro.
Fair warning up front: I’m going to get into the weeds. Radius rings, offer construction, the exact creative angles that converted, and the ones that flopped. If you want a one-paragraph “run a local promo” tip, this isn’t it.
Why locals are the most underrated demand you have
Here’s the math that made me a believer. A local guest costs you almost nothing to reach. No flights to compete with, no OTA standing between you and them, no “best price guarantee” arms race. They already know your city. Half the time they already know your restaurant or your rooftop bar. You’re not selling a destination, you’re selling a night off from their own house.
And critically, locals book direct more than anyone. They found you because they live here, not because they sorted Booking.com by price. That matters, because the OTAs take roughly 15-25% of every reservation they touch. When a local books straight through your site because they saw your geo-fenced ad and clicked your number, that’s margin you keep. I dig into the full cost of that channel mix in the book-direct math post, but the short version: every local you convert direct is one of the healthiest reservations on your books.
The independent hotelier’s biggest blind spot is treating “guests” as people who travel TO the city. Your softest weeknights get filled fastest by people who already live IN it.
This won’t make you OTA-free, and I’d be lying if I said any campaign does. What it does is shift your mix. More direct, off-peak revenue from locals means you lean on the OTAs a little less for the nights that actually hurt to leave empty.
Step one: stop targeting the whole metro
The first staycation campaign I ever ran, I targeted the entire designated market area. Twenty-something miles in every direction, one rate, one ad. It was a polite disappointment. The cost per booking was ugly and I couldn’t tell what was working.
The fix was treating geography like a real variable. I now run two radius rings, and they behave like totally different audiences:
- The inner ring (roughly 10-15 miles). These are true locals. They can decide at 4pm to stay tonight. They respond to convenience and amenity (“the pool, the spa, no dishes, no drive home”). This ring is where impulse and amenity-led offers shine.
- The outer ring (roughly 25-40 miles). This is the mini-escape crowd. Far enough that an overnight feels like a genuine getaway, close enough that they’ll drive instead of fly. They respond to “weekend reset” and “treat yourselves” framing more than convenience.
Why two rings instead of one big blob? Because the message that lands on a 12-mile neighbor falls flat on a 35-mile weekender, and vice versa. Splitting them lets you write to each and, more importantly, see which ring actually books so you can move budget there.
Here’s how I think about the structure:
| Ring | Approx. radius | Who they are | Lead angle | Best nights to push |
|---|---|---|---|---|
| Inner | 10-15 mi | True locals, impulse | Amenity + convenience | Tue-Thu, shoulder season |
| Outer | 25-40 mi | Mini-escape couples/families | Weekend reset, treat | Thu-Sat, slow weekends |
| Exclude | Your own zip cluster | Existing guests, staff, you | — | — |
That exclusion row matters more than people expect. Geo-fence OUT your immediate block so you’re not burning impressions on your own neighborhood foot traffic, your staff, and the office park that’s never going to book a room.
Step two: build a resident rate that fills holes instead of digging them
The fear I hear constantly: “If I give locals a discount, I’m just training my own market to pay less.” Valid. A sloppy resident rate absolutely cannibalizes full-price demand. A disciplined one doesn’t, because you fence it to nights you were going to lose anyway.
My rules for a resident rate:
- Weeknights and shoulder season only. Never your peak Saturdays, never your festival weekend. The resident rate exists to convert empty Tuesdays, full stop.
- Require a believable local proof. A local ID or a utility bill at check-in, or a code distributed through a partner. Light friction, not a checkpoint. The fence just has to be real enough that it doesn’t leak.
- Keep it off the OTAs entirely. This is a direct-only rate. If it shows up on Booking.com you’ve defeated the entire point and handed away the commission you were trying to protect. Your direct booking engine is the only place it lives, which is exactly why your book-direct conversion path has to be clean and fast.
- Frame the value, don’t just slash the number. “Locals stay from $X” reads cheap. “Resident rate: your night off, [your town] price” reads like a perk. Same number, different psychology.
A resident rate isn’t a discount you advertise to your whole city. It’s a quiet key you hand to people who live close enough to use it on a night you’d otherwise eat.
Step three: lead with the amenity, not the room
Nobody local is dreaming about your standard king room. They have a perfectly good bed at home. What gets a local to drive over and pay you is the thing they don’t have at home.
So the offer should lead with the amenity, not the room category. The room is the delivery mechanism. The amenity is the reason. A few angles that have pulled well for properties I’ve worked with:
- The pool/cabana day-into-night. “Check in at noon, live at the pool, sleep ten feet from it.” Sells itself in summer markets.
- The spa reset. Bundle a treatment with the room and a late checkout. Couples and self-care solo travelers eat this up midweek.
- Dinner-and-stay. If you have a real restaurant or bar, package a credit. The local already wanted the dinner; you’re just adding “and don’t drive home.”
- The parents’ night off. Brutally effective. “One night. Room service. Nobody asks you for a snack.” If your market skews young-family, this converts.
- The remote-work refuge. A quiet room, fast wifi, a real desk, late checkout, lunch credit. A surprising number of locals will pay to NOT work from their kitchen table.
Notice these are all experiences, not discounts. That’s the whole game. You’re not the cheap option, you’re the easy escape that happens to be ten minutes away. If you want to go deeper on packaging experiences and partnerships, that’s the heart of what I cover in content and reputation work, because the story around the offer matters as much as the offer.
Step four: wire it so the campaign actually feeds search, not just ads
Here’s where most staycation pushes leave money on the table. They build a paid campaign and call it done. But a local who sees your pool cabana ad doesn’t always book on the spot, they Google you. They search “[your hotel] staycation,” “hotel with pool day pass near me,” “spa hotel [your town].” If you don’t show up cleanly for those, your own ad just sent business to whoever does.
So I treat the staycation campaign as half paid, half organic:
- A real landing page for the offer, not a buried PDF. Crawlable, fast, with the resident rate, the amenity story, and a booking widget that defaults to weeknights.
- Local search visibility so you own the “staycation near me” and “[amenity] hotel [town]” queries. Your Google Business Profile is doing a lot of heavy lifting here, and most independents under-use it. My full take is in the GBP playbook, and it’s exactly the kind of work in local SEO and GBP.
- AI answer coverage, because more locals than you’d think now ask an assistant “fun staycation ideas in [city]” or “hotel with a spa near me.” If your property and offer aren’t legible to those engines, you’re invisible in that conversation. AEO as a search behavior is real volume now (around 27,100 monthly US searches for “aeo” itself), and getting recommended inside AI answers is its own discipline, which is why I built out AI visibility / AEO/GEO as a service. If you’re not sure where you stand, this post on whether your hotel is invisible to ChatGPT is the gut check.
When the paid ads and the organic visibility point at the same landing page and the same offer, the campaign compounds. The ad creates demand, search captures the people who didn’t click immediately, and both feed your direct booking engine instead of an OTA.
What I’d actually launch first (if I were you, this month)
If you’re sitting on soft weeknights right now, here’s the minimum viable version I’d stand up:
- Pick ONE amenity-led angle that fits your property. Pool, spa, dinner, parents’ night, whatever’s strongest.
- Build one clean landing page with a resident rate fenced to Tue-Thu and shoulder season.
- Set up the two geo rings, exclude your own block, and split a small budget between them.
- Make sure your GBP, your landing page, and your booking widget all tell the same story and load fast.
- Run it two weeks, look at which ring books, kill the loser, double the winner.
Keep your claims honest while you do it. I can’t promise you a sold-out Tuesday, and anyone who guarantees you a number is selling you a fairy tale. What I can tell you is that locals are the cheapest audience you’ll ever reach, they book direct at unusually high rates, and they come back, which stacks the odds in your favor in a way almost nothing else off-peak does. The goal isn’t to escape the OTAs, it’s to need them a little less on the nights that hurt most.
If you want a hand mapping your rings, building the offer, and wiring it into search so it keeps paying after the ad budget stops, that’s exactly the kind of off-peak, direct-booking work I do. Book a call and let’s look at your softest nights together, or start with the book-direct CRO service if your booking path is where the leak is.