Scenario · Website with bookings · Hotel and restaurant

A hotel that takes bookings
even when reception is closed.

A property with great reviews that gets bookings almost only by phone and through booking portals, paying a commission on every room. A website that takes direct bookings for rooms and tables, 24 hours a day.

Project typeWebsite with bookings
SectorHotel and restaurant
Typical timing6–8 weeks
●Scenario
website · hotel & restaurant
Umbria · since 1987
12
Rooms
★ 4.9
Google
400+
Labels
Book now

Website scenario — hotel with a gourmet restaurant

An Umbrian gem
invisible online.

The scenario: a boutique hotel in the Umbrian countryside with a long history. A dozen rooms, a gourmet restaurant, a well-kept wine cellar. A reputation built on word of mouth, with guests who come back every year. Yet the website is stuck a few years back: a badly configured Elementor template, 4 MB photos never optimised, no online booking.

A paradoxical but common situation: a place with great Google reviews and no working "Book" button. Bookings come only by phone or email, and reception manages the whole calendar by hand. On peak-season weekends the rooms still fill up — but the restaurant loses tables every night, because people passing through can't find a way to book ahead.

The goal: a website that keeps working when the phone is busy.

"We manage bookings in a paper diary. My daughter says it's absurd. She's right."

— Something I often hear at family-run places
Scenario
Boutique hotel & gourmet restaurant (example)
Area
Umbria, Italy
Industry
Hospitality · Fine dining
Typical duration
6–8 weeks
Typical starting point
Dated Elementor template, no booking, bookings by phone only
Services
WordPress Custom theme Hotel booking Restaurant res. ACF menu Local SEO Performance

Requirements for a professional restaurant website

What was
really needed.

Six areas of work that come out of talks with the owners, a review of the existing site and watching the real booking flow — phone calls, emails and WhatsApp included.

24/7 online hotel booking

Real-time room booking with an availability calendar, room-type choice, automatic quote and email confirmation. It has to work at 2 a.m. too, when reception is asleep.

Restaurant table booking

A separate system for the restaurant: choice of date, time and number of guests, with service management (lunch/dinner), maximum seats per service and special requests (allergies, occasions, high chair). Automatic confirmation and SMS reminder.

Self-managed digital menu

The chef changes the menu often, following the seasons. It needs a WordPress interface to update dishes, prices, ingredients and allergens without touching code — even from a tablet in the kitchen.

Professional photo gallery

Dishes, rooms, garden, cellar: hundreds of high-resolution photos that must load fast without losing quality. The owners upload new photos every month and shouldn't depend on anyone to do it.

Local SEO to reach tourists

Every year lots of tourists search for "gourmet restaurant Umbria", "spa hotel Perugia", "where to eat in Umbria". An old site often doesn't even show up for the property's own name. That needs fixing at the root.

Mobile-first for tourists on the move

Most "restaurant near me" and "hotel Umbria" searches come from smartphones. An old site is usually unusable on a phone: tiny text, buttons hard to tap, a contact form broken on iOS. Top priority.

Technical challenges of a restaurant site with bookings

Where the real
problems hide.

Hospitality and restaurants look easy to handle with WordPress. In reality they hide operational complexity that only shows up once you dig into the details. These are the five most critical challenges.

01

Two synchronized booking systems

Hotel and restaurant have completely different booking logic: rooms with check-in/check-out, the restaurant with services and maximum covers per hour. Two separate but coordinated systems were needed, with a single dashboard for the receptionist.

02

A dynamic menu that doesn't slow the chef down

The menu changes every week. The chef has no technical skills and no time. ACF Pro with repeater fields seemed the obvious solution — but the WordPress interface UX had to be simplified to the point that it felt like an Excel sheet, not a CMS.

03

Performance with high-resolution food photos

Photos of gourmet dishes and luxury rooms: you can't compress them aggressively without the difference showing. Finding the balance between perceived quality and loading speed on mobile connections is a problem of continuous optimization.

04

Schema.org for hospitality and restaurants

Google looks for specific structured markup for hotels (LodgingBusiness) and restaurants (Restaurant, Menu, MenuSection, MenuItem) to show rich snippets. Implementing them correctly with all the required fields (priceRange, servesCuisine, hasMenu) takes attention to detail.

05

Seasonality and real-time availability

Many places only open for part of the year. Rooms can be blocked for maintenance. The restaurant closes one day a week. Availability changes in real time on peak weekends. The system has to handle all of this without technical help.

Development process for a restaurant website

How I
organise the work.

Six to eight weeks in four phases. The priority is to have online booking live before peak season. Each phase ends with a live demo for the owners — no surprises at launch.

Week 1
Discovery & Audit

Review of the existing site, the real booking flow (observed on site) and direct competitors (boutique hotels in Umbria and Tuscany), content map and information architecture.

Delivered: audit report · sitemap · defined booking flow
Weeks 2–3
Design & Wireframe

A custom WordPress theme with a consistent identity (e.g. a warm dark palette, an elegant serif, a gold accent). A complete Figma wireframe shared with the owners and the chef. The room and table booking flow is signed off before a single line of code.

Delivered: design system · Figma wireframe · booking prototype
Weeks 4–6
WordPress development + booking integration

Full build: custom theme, ACF Pro for menu and rooms, a booking engine with channel manager (e.g. Beds24, synced with Booking.com and Airbnb), custom table booking with PHP and the WP REST API. Optimised WebP images. Restaurant and LodgingBusiness structured data.

Delivered: working site · live booking · CMS ready
Week 7
Testing, training & go-live

Full testing of every booking flow (rooms, tables, cancellations, email/SMS notifications). CMS training for reception and the chef. Content migration, 301 redirects, Google Business profile update, controlled go-live.

Delivered: live site · trained staff · updated Google profile

Technical solution for online bookings and menu

How I solve
each problem.

// 01 · Hotel booking

Beds24: channel manager and booking engine in one

For the rooms I use a booking engine such as Beds24, for three reasons: it syncs in real time with Booking.com, Airbnb and Expedia (no double bookings), its widget can be fully restyled, and the monthly cost is sustainable even for a small property.

The widget is fully customised to match the site — colours, fonts, borders. Booking comes down to three steps: pick dates → choose a room → confirm and pay. Goal: a booking completed in under 3 minutes, checked with tests on real users.

The same system handles confirmation emails, pre-arrival reminders and post-stay review requests — all automatic, zero manual work for reception.

hotel · /rooms
BOOKING ENGINE · STEP 1 OF 3
CHECK-IN
15 Jul
CHECK-OUT
18 Jul
Panoramic Suite
Hill view · 2 guests · 28 m²
€185
/night
Breakfast included
Free cancellation
SELECT ROOM
Deluxe Garden Room
Garden view · 2 guests
Not available
// 02 · Digital menu with ACF Pro

Menu updated in 5 minutes, no code

The menu is built on Advanced Custom Fields Pro with repeatable fields: each section (starters, pasta, mains, desserts) is a group with dish name, description, price, allergen icons and a vegetarian/vegan flag.

The WordPress interface gets stripped down to the essentials: unneeded boxes hidden, clear labels, instructions next to each field. Goal: the chef updates the menu in under 5 minutes from the kitchen tablet, without ever seeing code.

// ACF field group: restaurant-menu { "key": "group_menu", "fields": [ { "label": "Menu section", "type": "repeater", "sub_fields": [ { "label": "Dish name", "type": "text" }, { "label": "Description", "type": "textarea" }, { "label": "Price (€)", "type": "number" }, { "label": "Allergens", "type": "checkbox", "choices": { "gluten": "Gluten", "lactose": "Lactose", "nuts": "Nuts", "fish": "Fish" } }, { "label": "Vegetarian", "type": "true_false" } ] } ] }
// 03 · Local SEO & Schema.org

Rich snippets, Google Business and structured markup

A complete local SEO stack. LodgingBusiness structured data for the hotel and Restaurant for the restaurant, with every field Google expects: hasMenu, servesCuisine, priceRange, openingHoursSpecification, precise coordinates.

Google Business profile updated with photos, seasonal hours, a menu linked to the site and a direct link to table booking. Goal: appearing in the Local Pack for searches like "gourmet restaurant Umbria" or "restaurant near me" in the area, with stars and hours highlighted.

What to expect: for niche local searches (e.g. "gourmet hotel Umbria") top positions are reachable within a few months, and local organic traffic can double in the first year.

google.com · example search
EXAMPLE · LOCAL PACK
MAP · 3 local results
1
Hotel & Restaurant (example)
★★★★★ 4.8 · Gourmet restaurant
Open · Closes at 10:30 PM
hotel website /restaurant
hotel website › restaurant
Gourmet restaurant in Umbria with reinvented local cuisine. Seasonal menu, carefully chosen wines...
📅 Book a table
🍽 Menu
🏨 Rooms

Restaurant website tech stack

Technologies chosen, not imposed.

WordPress as the base — the right choice for a place that has to manage its own content. Every plugin has a clear reason: nothing superfluous, no dependency that causes trouble a year later.

WordPress
PHP 8.3 + custom child theme
ACF Pro (dynamic menu)
Beds24 (hotel booking)
WP REST API (restaurant res.)
Smush Pro (image optimiz.)
Schema.org Restaurant + Hotel
Rank Math SEO Pro
WebP Express (auto conversion)
WP Rocket (cache + CDN)
Mailchimp (newsletter)
Figma (design system)

No page builders (Elementor, Divi), by choice: they bloat the page and hurt performance. The theme uses native WordPress templates and custom CSS. Lighthouse goal: 90+ on mobile, 95+ on desktop — excellent for a site full of food photos.

Example goals — site with bookings

What to expect
in the first season.

Example figures, not a client's results: realistic goals for a scenario like this, to be measured by comparing the season after launch with the previous one (Google Analytics 4, Search Console, booking-engine reports and table bookings).

×2
ONLINE BOOKINGS
rooms booked through the site
+100%
ORGANIC TRAFFIC
goal for the first year
−25%
RESTAURANT NO-SHOWS
goal with SMS reminders
Top 3
GOOGLE LOCAL PACK
goal for the main search
95+
LIGHTHOUSE DESKTOP
Performance · technical goal
0h
MANUAL WORK
automated booking

"Saturday night: a full restaurant and three rooms booked — all through the site, while I was asleep." That's the scenario to aim for: a website that takes bookings when reception is closed.

— The project's concrete goal

Lessons for a restaurant website

What I bring
to every project like this.

These are the points I always keep in mind in hospitality projects.

→

Booking isn't a plugin, it's a business flow. Before choosing the technical tool, you need to understand exactly how the property's real booking process works — with all its exceptions, seasonality and unwritten rules. Only then do you choose the software.

→

Training is part of the delivery, not an extra. With non-technical hospitality clients, even the simplest CMS is useless without a dedicated training session. That's why I always include it in the quote.

→

Local SEO beats generic SEO for accommodation. A boutique hotel doesn't compete with Booking.com on generic keywords. It competes on hyperlocal searches ("spa hotel Umbrian hills", "where to stay near Spello") where a well-optimized website can beat the portals with a tenth of the effort.

→

No-shows drop with automation, not rules. Many places would like to ask a deposit for every booking. An automatic SMS reminder 24 hours before creates less friction and gets almost the same result, without bookings dropping.

→

WordPress with a custom theme beats Elementor on speed in food and hospitality. Photos are already the bottleneck: adding 2 MB of page-builder JavaScript is unforgivable. A lean theme with ACF gives the same flexibility at a tenth of the weight.

// In short
Typical problem
No online booking, reservations by phone only
Approach
Custom WordPress + Beds24 + ACF menu + local SEO
Goals
More bookings from the site · Local Pack · fewer no-shows
Platform
WordPress · PHP 8 · booking engine
After launch
In-house — menu and rooms updated by staff
24/7 booking Local SEO Fewer no-shows WP custom

Have a similar project in mind?

Tell me about it: we start from goals and priorities, and the first call is free.