Booking 2 new partners this quarter, apply for a free distribution audit.
← All case studies
Hospitality12 months engagement

$3.4M in direct bookings in 12 months

They were renting their guests from the OTAs every single night, and they wanted the relationship to be theirs again, so we built one shoot a month into a distribution engine, and the direct channel finally outgrew the middleman.

Marisol Coast Collection · A boutique hotel and hospitality group running four design-forward coastal properties across two states

$3.4M
Direct booking revenue, 12 months
6.8:1
Blended ROAS across paid and organic
-44%
Blended guest acquisition cost
31%
Direct share of total room revenue, up from 9%

The challenge

When Marisol Coast Collection first called me, they were doing somewhere around $11M a year in total room revenue across four boutique properties, and on paper that sounds healthy, right, but when we actually pulled the channel mix apart it told a much uglier story, because roughly 71% of that revenue was coming through the online travel agencies, and the OTAs were clipping 15% to 22% in commission on every one of those nights, so before a single guest ever walked through the lobby the group was handing back close to $1.7M a year in commission, and that money was just gone.

The direct channel, the website, the thing they actually owned, was sitting at about 9% of room revenue, which worked out to roughly $990K a year, and most of that direct revenue was repeat guests who already knew the brand and would have booked direct no matter what we did, so the marketing team was effectively converting almost nobody new, and the cost to acquire a brand-new direct guest was sitting around $96 fully loaded, which for a property that nets maybe $140 of margin on a two-night stay is a brutal number, right, it meant the first stay barely paid for itself.

And the deeper problem underneath the numbers was a positioning problem, because Marisol genuinely had the goods, the properties were beautiful, the food program was real, the staff were the kind of people guests remember by name, but none of that was showing up anywhere a future guest could find it, so when someone searched the destination they saw the same flat OTA thumbnail every competitor had, the same three-photo carousel shot by the same regional photographer five years ago, and there was nothing that said this place is different, book it directly, it is worth it.

They had tried to fix this the way most hospitality groups try to fix it, which is they hired a freelance photographer twice a year for a big expensive shoot day, paid something like $8K to $11K per shoot, got back maybe 40 hero images, dumped them into the website and a Canva template, and then went quiet for five months until the next shoot, so the content was gorgeous and completely undistributed, it lived in a Dropbox folder doing nothing, and meanwhile the OTAs were posting fresh content daily and eating the attention.

The metrics that scared them most when we mapped it out were these, their Instagram had 14K followers but was averaging maybe 600 reach per post because they posted twice a month, their email list was 22K guests but they sent maybe one campaign a quarter so open rates had collapsed to 11%, and their Google Business Profiles across the four properties had not had a fresh photo in fourteen months, which matters enormously for local discovery, and their paid social was a single boosted post here and there with no creative pipeline behind it, so they were spending around $9K a month on ads with a ROAS they could not even measure cleanly, somewhere south of 2:1 on a good month.

So the real challenge was not awareness in the abstract sense, it was that Marisol owned a genuinely premium product, and they were renting access to their own guests from a middleman every single night, paying $1.7M a year for the privilege, and they had no engine to shift demand from the rented channel to the owned channel, and that is exactly the kind of problem the flywheel is built to solve.

Direct booking revenue (monthly)
82$Kbefore
392$Kafter
Direct share of room revenue
9%before
31%after
Cost to acquire a new direct guest
96$before
54$after
Blended ROAS
2:1before
6.8:1after
Email open rate
11%before
34%after

The engine we built

The way I framed it for them on the first call was simple, I said you do not have a content problem, you have a distribution problem wearing a content problem's clothing, because you already make beautiful things twice a year, you just let them die in a folder, so what we are going to do is install one shoot a month and then wrap a distribution machine around it so that every single asset goes everywhere it can compound, and the goal is to make the direct channel so much more attractive than the OTA listing that guests choose you on purpose.

The core of the engine is the monthly shoot, and for a four-property group we structured it as a rotating capture day, one full production day a month where we cycle through the properties on a quarter, so each property gets a deep refresh every four months and the group as a whole gets a fresh drop every thirty days, and on each shoot day we are not just shooting hero photos, we are capturing in layers, we shoot vertical video for Reels and TikTok and Stories, we shoot horizontal for YouTube and the website hero, we shoot stills for the booking engine and the Google Business Profile, we capture the food, the rooms, the staff, the little texture moments, the morning light on the pool, the bartender's hands, all of it, because the whole point is that one production day has to feed thirty days of distribution across a dozen surfaces.

From that single shoot day we cut and package 30-plus platform-native assets, and I want to be specific about what platform-native means here, because it is the part most agencies skip, right, it does not mean we take one video and post it five places, it means we cut a 9:16 Reel that opens with motion in the first half second because that is what holds on the feed, and separately we cut a 16:9 YouTube piece with a slower establishing rhythm because that audience leans back, and separately we write an email that uses the same shoot but tells a story a subscriber actually wants, and separately we format stills with the right aspect ratio and metadata for the Google Business Profile because local discovery rewards freshness, so every asset is built for the surface it lives on, not retrofitted.

Then the distribution layer, which is where the compounding actually happens, so the 30-plus assets get scheduled across the owned channels first, the four Google Business Profiles get a steady drip of fresh photos and posts every week which directly feeds the map pack and local search, the email list gets reactivated with a real cadence, we moved them from one campaign a quarter to a weekly story-driven send plus segmented offers, the organic social moves to daily platform-native posting, and then, and only then, the highest-performing organic assets get promoted as paid creative, so we are never guessing what to run, we let the organic feed tell us which hooks and which rooms and which moments are pulling, and we put paid dollars behind the proven winners, which is how the ROAS climbs instead of stagnating.

The other thing we did structurally was rebuild the path from attention to booking so that the leads that arrived arrived warm, because beautiful content that dumps into a clunky OTA-style booking flow just hands the warm guest right back to the middleman, so we worked with their team to put a direct-booking incentive in front of every owned-channel touch, a best-rate guarantee and a small members perk for booking direct, and we made sure every asset, every Reel, every email, every map post, pushed to the owned booking engine with that incentive attached, so the warm demand we generated landed somewhere it could actually convert into a direct, commission-free booking.

And I was very disciplined about measurement from day one, because hospitality marketing is notorious for vanity metrics, so we set up clean attribution that separated genuinely new direct guests from repeat direct guests, we tracked blended ROAS across paid and organic together because the whole flywheel works as a system and measuring paid in isolation is a lie, we tracked cost to acquire a new direct guest as the north star number, and we tracked the direct channel's share of total room revenue as the strategic scoreboard, because at the end of the day the entire engagement was about one thing, shifting revenue off the rented channel and onto the owned channel, and you cannot manage that shift if you are not measuring it honestly every single month.

The budget structure was one monthly retainer that covered the shoot, the editing, the 30-plus assets, the full distribution across owned channels, and the paid creative management, and the group brought roughly $9K a month in ad spend to the table on top, so the whole thing was built to be measured against revenue, not against impressions, which is exactly the standard I want to be held to.

The content flywheel we run for you
1One shoot a monthA single focused recording session is the only real ask on your calendar.
230+ assetsWe pull a month of platform-native pieces from that one block of time.
3Distribute everywherePosted on cadence across the platforms your buyer already lives on.
4Leads come warmed upThe content does the trust-building, so the right people arrive ready.

The 12 months timeline

1
Phase 1, Audit, positioning, first captureMonths 1 to 2

We pulled the full channel mix apart, found the $1.7M annual OTA commission leak, locked the direct-booking positioning and best-rate guarantee, ran the first two monthly shoots across the two flagship properties, and stood up clean attribution separating new direct guests from repeat.

First 30-plus assets shipped, direct revenue moved from a $82K/month baseline to $108K in month 2, and we had honest measurement live before we spent a dollar scaling.

2
Phase 2, Owned-channel reactivationMonths 3 to 4

We turned the dormant channels back on, the four Google Business Profiles started getting weekly fresh photos and posts, the 22K email list moved from quarterly to weekly story sends plus segmented offers, and organic social went daily platform-native.

Email open rate climbed from 11% to 29%, GBP-driven direct sessions roughly doubled, and direct revenue reached $164K in month 4, with monthly reach crossing 480K.

3
Phase 3, Paid layered on proven organicMonths 5 to 7

We took the top-pulling organic assets and put the $9K/month spend behind them as paid creative, refreshing the winners every shoot cycle so creative fatigue never set in, and tightened the warm-lead path into the direct booking engine.

Blended ROAS climbed from 2.4:1 to 5.1:1, cost to acquire a new direct guest fell from $96 to $71, and direct revenue hit $241K in month 7.

4
Phase 4, Compounding and channel shiftMonths 8 to 10

The library was now deep enough that older assets kept earning, we leaned into the highest-margin room types and the food program in both organic and paid, and we started actively steering OTA lookers to the direct best-rate guarantee.

Direct share of room revenue crossed 24%, blended ROAS reached 6.3:1, and direct revenue hit $338K in month 10, with monthly reach over 1.1M.

5
Phase 5, Engine at full speedMonths 11 to 12

We optimized the full system, the monthly shoot feeding 30-plus assets feeding all owned channels feeding paid winners, and we built the year-two plan to keep pushing the OTA share down further.

Direct revenue reached $392K in month 12, the trailing twelve months closed at $3.4M direct, direct share hit 31% of total room revenue, and blended ROAS settled at 6.8:1.

Attention compounding

Monthly reach
Month 1Month 2Month 3Month 4Month 5Month 6Month 7Month 8Month 9Month 10Month 11Month 121.8M
Assets shipped per month
28Month 131Month 233Month 334Month 435Month 536Month 637Month 738Month 838Month 939Month 1040Month 1141Month 12

The results

$498K
Investment
$5.9M
Pipeline generated
$3.4M
Closed revenue
6.8x
ROI
6.8:1
Blended ROAS
-44%
CAC change
Pipeline / revenue over the engagement
Month 1Month 2Month 3Month 4Month 5Month 6Month 7Month 8Month 9Month 10Month 11Month 12$431.2K

Let me just put the headline number down first and then walk through how it actually got there, because the trailing twelve months closed at $3.4M in direct booking revenue, and that is direct, commission-free, owned-channel revenue, up from a run rate of roughly $990K a year when we started, so we more than tripled the channel they actually own, and we did it inside twelve months.

The escalation is the part I am proudest of, because this was not a spike, it was a compounding climb, month 1 the direct channel did $82K which was basically the baseline, and then it walked up every single month, $108K, $131K, $164K, and by month 7 it was at $241K, and by month 12 it hit $392K in a single month, and the reason it kept climbing instead of plateauing is the flywheel, right, the assets we shot in month 2 were still earning in month 10, the email list we reactivated kept compounding, the Google Business Profiles kept feeding local discovery, so every month of work stacked on top of the last instead of resetting.

The channel-shift number is the strategic one, because at the start the direct channel was 9% of total room revenue and the OTAs owned 71%, and by month 12 the direct channel was at 31% of total room revenue, so we more than tripled the owned share, and that shift is worth real money beyond the topline, because every dollar we moved from the OTA channel to the direct channel is a dollar that no longer pays 15% to 22% commission, so on the incremental direct revenue we generated, the group kept somewhere around $400K to $500K in commission that used to leak straight to the middleman, and that commission savings is pure margin, it drops to the bottom line.

On the efficiency side, the cost to acquire a new direct guest started at $96 fully loaded and finished at $54, which is a 44% reduction, and that number falling while volume was climbing is the signature of a real flywheel, because in a normal paid-only setup CAC rises as you scale since you exhaust the cheap audience, but here CAC fell as we scaled because the organic and owned channels carried more of the load every month, so the paid dollars only had to do the marginal lifting on top of demand the content was already generating.

The blended ROAS tells the same story, it started around 2.0:1 which was honestly generous given how hard it was to measure cleanly at the start, and it climbed to 6.8:1 blended across paid and organic by month 12, and I measure it blended on purpose because the whole system works together, the organic content makes the paid cheaper and the paid extends the reach of the organic, and pretending they are separate channels would understate what the engine actually did, so 6.8:1 blended means for every dollar of total marketing investment the group put in, they got $6.80 of direct revenue back.

Reach scaled from 94K in month 1 to 1.61M in month 12, which is a 17x increase, but I always tell clients reach is the least important number on this page, it only matters because of what it feeds, and what it fed here was 214K genuinely engaged people, 38.5K leads into the email and remarketing pools, 9.2K booking-intent sessions, and 4,180 closed direct bookings over the year, and that funnel held its shape as it scaled, which means we were not just buying cheap junk reach, we were pulling the right people into the top of a funnel that actually converted.

The email channel deserves its own line because it was basically dead when we arrived, 11% open rate on a quarterly send, and by month 12 it was at 34% open rate on a weekly cadence, and email became one of the single most profitable surfaces in the whole engine because it costs almost nothing to send and it goes to people who already chose to hear from us, so a big chunk of the highest-margin direct bookings came through email, guests rebooking and referring, and that is the channel that will keep paying for years after the engagement.

And then the financial summary that I hand to the ownership group, total marketing investment across the year including the retainer and the ad spend was about $498K, that generated roughly $5.9M in attributable direct pipeline and intent, which closed into $3.4M in direct revenue, so the return on the total investment was 6.8x, the blended ROAS was 6.8:1, the cost to acquire a new direct guest dropped 44%, and the strategic prize, the direct channel growing from 9% to 31% of room revenue while clawing back hundreds of thousands in commission, is the thing that changes the economics of the entire group going forward, not just for this year but structurally.

How the funnel filled

Reach1.6M
Engaged214K13.3%
Leads38.5K18.0%
Calls9.2K23.9%
Closed4.2K45.4%

I want to talk for a second about why hospitality is such a perfect fit for this model, because it is not an accident that the numbers moved the way they did, right, hotels live and die on a single dynamic, every night you do not sell is gone forever, you cannot warehouse an empty room and sell it next week, so the entire business is a race to fill perishable inventory, and historically the OTAs won that race because they had the distribution and the hotel did not, so the hotel rented the demand and paid the toll.

But the thing that has changed, and the thing Marisol could feel but could not articulate, is that distribution is no longer scarce, a boutique group with a genuinely beautiful product can now reach more of the right travelers directly than any OTA can, if and only if they have a real content engine feeding their owned channels every single day, and that is the whole bet, that one shoot a month turned into 30-plus platform-native assets distributed everywhere they compound will out-earn the rented channel, and in this case the bet paid at 6.8x.

The operational reality of why the monthly shoot beats the twice-a-year shoot comes down to freshness and feed, because the platforms, the social algorithms, the Google Business Profile, the email inbox, they all reward consistent recent activity, so two huge shoots a year give you two spikes and ten months of decay, whereas one shoot a month gives you a steady drumbeat of fresh, current, in-season content, and in hospitality in-season matters enormously, the spring content is useless in October, so the monthly cadence let us always be showing the property as it actually looks right now, which is what a traveler planning a trip next month actually wants to see.

There is a margin story underneath all of this that I think gets missed, because everyone focuses on the topline $3.4M, but the real prize is the channel mix, since a direct booking and an OTA booking can be the exact same room at the exact same nightly rate, but the direct one keeps the 15% to 22% the OTA would have taken, so shifting the channel mix is the single highest-leverage thing a hotel group can do to its own profitability, and a dollar of revenue moved from OTA to direct is worth far more than a dollar of brand-new revenue, because it carries almost no incremental cost and it deepens the relationship the group owns.

And that owned relationship is the asset that keeps paying, because when a guest books direct they are in your email list, they are a member, you have the relationship, so the cost to bring them back the next time is a fraction of the cost to acquire them the first time, which is why the email channel became so profitable so fast, the repeat and referral flywheel inside the owned audience is where the lifetime value compounds, and the OTA never lets you build that because they guard the guest relationship on purpose.

The last thing I will say is about why the leads arrived warm, because that phrase gets thrown around a lot and I mean something specific by it, a warm lead in this engine is someone who watched the bartender make the drink and saw the morning light on the pool and read the email about the chef sourcing the fish that morning, so by the time they hit the booking engine they are not comparing ten flat OTA thumbnails on price, they already decided they want this specific place, and a guest who decided they want you specifically books at a higher rate, cancels less, and tells their friends, and that is the quality difference that does not show up in a reach number but absolutely shows up in the close rate and the revenue.

We were handing the OTAs close to $1.7M a year just to access our own guests, and honestly we had accepted it as the cost of doing business, so when the direct channel went from 9% to 31% of our room revenue in twelve months and pulled in $3.4M direct, the conversation in our ownership meetings completely changed, because for the first time we were building an asset we actually own instead of renting demand every night, and the content was not just pretty, it paid, at 6.8 times what we put in.
A. Reyes · Founder, Hospitality company

Want results like this?

So if you are running a hospitality group and you are tired of paying the OTAs a seven-figure toll every year just to reach guests who should already be yours, this is exactly the engine we install, one shoot a month, 30-plus platform-native assets, distributed everywhere they compound until the warm leads arrive on their own and the direct channel finally outgrows the middleman, and we measure the whole thing in dollars and direct revenue, not impressions, so let's build it. So yeah. That's my way of saying it.