If you have ever watched a guest screenshot your Expedia listing and ask why the pool looks nothing like the pool they are standing next to, this post is for you. I have seen it more times than I can count: a property finishes a six-figure renovation, updates the website, and then forgets that a 2019 photo of the old pool deck is still riding along on three OTA listings and the GBP. The guest booked the old pool. The new pool is gorgeous. Nobody is happy.
Almost every time, the root cause is not laziness or bad intent. It is that nobody on the team could confidently answer one question: which file is the current one? When the answer is unclear, people grab whatever is on the desktop, whatever is in the email thread, or whatever the photographer sent two years ago. Stale assets are a filing problem dressed up as a marketing problem.
So let me share the naming and version-control scheme I set up for hotels. It is unglamorous. It is also the single cheapest insurance policy you will ever buy against an embarrassing listing.
Why this is a distribution problem, not a photography problem
You can hire the best architectural photographer in Florida and still end up with the wrong image on Booking.com. The photos are not the issue. The issue is what happens after the shoot, when forty raw files become four hundred crops, exports, and resizes scattered across Dropbox, a Google Drive, somebody’s phone, the PMS, and the channel manager.
Every place your hotel shows up pulls images from a different bucket:
- Your website and its CMS media library
- Your Google Business Profile (covered in depth in my GBP playbook)
- Each OTA extranet (Expedia, Booking, and friends)
- Your metasearch and ad creative
- The growing pile of AI assistants that scrape and describe your property
When those buckets drift apart, your brand looks inconsistent, and inconsistency quietly costs you. A guest comparing your direct site to your OTA listing and seeing two different pools has every reason to distrust the cheaper-looking option. That is exactly the kind of friction that pushes a booking back toward the OTA, which is the opposite of what we want when we are trying to win back more direct bookings.
The wrong photo on an OTA is rarely a creative failure. It is a version-control failure. Fix the filing system and 90 percent of stale-asset disasters disappear on their own.
The naming convention, piece by piece
Here is the pattern I use. It is deliberately flat, lowercase, and hyphenated, because that survives being uploaded to every system on earth without getting mangled.
property-space-descriptor-year-version.ext
A few real-shaped examples:
grandbayhotel-pool-evening-2026-v2.jpg
grandbayhotel-suite-king-balcony-2026-v1.jpg
grandbayhotel-lobby-checkin-2025-v3.jpg
grandbayhotel-rooftopbar-sunset-2026-v1.jpg
Let me break down each slot, because every one of them is earning its keep.
1. Property
A short, consistent property slug. If you run one hotel, this feels redundant, but the second you share files with a photographer, an agency like mine, or a sister property, that prefix stops two pool-evening files from colliding. Pick one slug and never change it.
2. Space
The physical area: pool, lobby, suite-king, rooftopbar, spa, gym, restaurant. Be specific enough that someone who has never visited can guess what they will see. room is useless. suite-king-cornerview is gold.
3. Descriptor
The thing that makes this shot different from the other twelve shots of the same space: evening, sunset, detail, aerial, winter, holiday, wide. This is also where light, honest image SEO sneaks in, because these descriptors are exactly the words a human would search.
4. Year
The four-digit year of the shoot or the major edit. This one slot does more work than any other. The instant you see 2021 in a filename, you know to be suspicious. It turns “is this current?” from a guess into a glance.
5. Version
v1, v2, v3. You increment this only on a real, approved change: a recrop, a color regrade, a reshoot of the same angle. The current version is the highest number that lives in the master folder. Everything below it gets retired (more on that in a second).
| Slot | Example | What it answers |
|---|---|---|
| property | grandbayhotel | Whose asset is this? |
| space | pool | Where in the hotel? |
| descriptor | evening | Which shot of that space? |
| year | 2026 | How old is it? |
| version | v2 | Is it the latest approved cut? |
The folder structure that makes the names work
A naming convention without a folder rule is half a system. People will still hoard duplicates. So I pair the names with one hard rule:
There is exactly one master folder, and it only ever contains current, approved, ready-to-distribute files.
I structure it like this:
/hotel-photos
/00-master-current <- the ONLY folder anyone distributes from
/01-archive <- every retired version, never deleted
/02-raw-and-working <- photographer raws, edits in progress
/03-incoming <- new files awaiting review
The workflow is simple enough to explain to a part-time front-desk hire:
- New photos land in
03-incoming. - Someone with authority reviews and approves them.
- The approved file gets the proper name and moves to
00-master-current. - The file it replaces moves to
01-archive. It is never deleted, but it is no longer in the room where distribution happens.
That fourth step is the whole game. The reason a 2019 pool photo ends up on Expedia is that the 2019 file and the 2026 file were sitting in the same folder, and the person uploading grabbed the wrong one. If retired versions physically leave the master folder, that mistake becomes almost impossible to make.
The master folder is a clean room. If a file is in there, it is safe to send anywhere. If it is not in there, it does not get distributed. No exceptions, no “just this once” off the desktop.
A tiny change log beats your memory every time
I keep a plain text or spreadsheet log next to the master folder. Nothing fancy. Five columns:
| Date | File | Change | Approved by | Pushed to |
|---|---|---|---|---|
| 2026-05-02 | grandbayhotel-pool-evening-2026-v2.jpg | Reshoot after deck remodel | GM | Site, GBP, Expedia, Booking |
| 2026-05-02 | grandbayhotel-pool-evening-2025-v1.jpg | Retired to archive | GM | Removed from all channels |
That last column, Pushed to, is the unsung hero. It is your checklist of every place an image lives. When you swap the pool photo, you do not have to remember where the old one was hiding. The log tells you: site, GBP, Expedia, Booking. You go remove and replace the old one in each, and you tick them off.
This is also the moment most stale-asset problems are actually born, because people update the website and stop. The website is the easy one. The OTA extranets and metasearch feeds are where old photos quietly survive for years. If you want the bigger picture on why OTA listings drift out of sync with your own site, I get into it in how OTAs steal search and in my piece on why your hotel ranks below the OTAs for your own name.
Why this also helps your SEO and your AI visibility
I am an SEO before anything else, so I would be lying if I pretended this was purely an organizational nicety. Clean, descriptive, dated file names give you small but real wins:
- Image SEO on your own site. A file named
boutique-hotel-rooftop-bar-orlando-2026.jpgcarries a little more context for Google thanIMG_4471.jpg. It is not magic, and it will never outrank a thin or guaranteed anything, but combined with good alt text it nudges your image results in the right direction. This is part of the on-page work I do under hotel SEO. - Consistency signals trust. Search engines and the AI assistants now describing your hotel reward a property that looks coherent across the web. When your pool looks like your pool everywhere, you are easier to recommend confidently. That is the heart of AI visibility work.
- Faster turnaround on every campaign. When a writer, a designer, or an AI tool needs “the current lobby shot,” they find it in three seconds instead of pinging four people. Speed compounds.
There is a real and growing search behavior here, too. The volume around AI-driven discovery (aeo at 27,100 monthly US searches, generative engine optimization at 5,400) tells you buyers and operators are increasingly thinking about how machines read their content. Photos are content. The machines read them, and they read the chaos when your library is a mess.
Rolling this out without a giant project
You do not need to re-catalog ten years of photos this week. Here is the realistic on-ramp I give hotels:
- Create the four folders today. Five minutes. Make the master folder the law.
- Name correctly going forward. Every new shoot uses the convention. Do not boil the ocean retroactively.
- Backfill only what is live. Identify the photos currently on your site, GBP, and OTA listings. Rename and version just those, and log where each one lives. That is your true exposure, and it is a much smaller pile than your whole archive.
- Audit the OTA extranets once a quarter. This is the step that prevents the Expedia surprise. Compare what is live on each channel against your master folder.
If even that feels like a lot, this is genuinely the kind of unglamorous backend work my team handles as part of content and reputation management, alongside the broader book-direct math of why direct guests are worth defending.
The payoff
A naming and versioning system will not get you a number-one ranking, and it is not a growth hack. What it does is quieter and more durable: it makes sure the best version of your hotel is the version every guest sees, on every surface, all the time. It closes the gap between the property you actually run and the property the internet thinks you run.
That gap is where direct bookings leak out and OTA dependence creeps in. Closing it is one of the highest-leverage, lowest-cost things you can do this quarter, and you can start with four empty folders.
If you would rather hand the whole mess to someone who does this for boutique hotels every day, that is exactly what I do. Book a call and we will audit where your stale assets are hiding and get your photo distribution under control, or take a look at how I approach conversion-focused direct booking so the clean library actually turns into reservations.