When Tommaso called us at 2:10 PM on a Thursday, he had been live with a Wix design draft for eleven days but the publish flow had been stuck behind a billing dispute. The soft opening was the following evening. His existing supporter list of 600 was sitting on a Mailchimp campaign that he could not send because there was no live URL to point it at.
The brief
A clean, single-scroll restaurant marketing site with menu pages, an embedded Resy booking widget, contact, and a footer with the address and opening hours marked up in LocalBusiness schema. No e-commerce, no blog, no team page. He wanted the booking widget above the fold on mobile, the menu accessible in two taps, and the schema correct so Google would surface the listing to "italian SE1" searches before the second weekend.
What was already in the box
A photo of the venue from the day of fit-out, a logo file the brand designer had emailed at 11 AM the same morning, a menu in a Google Doc, and the address and trading hours on the back of a Stripe invoice. No copy beyond a paragraph Tommaso had written for the loan application. No brand fonts, no palette, no photography beyond the fit-out shot. Most of the visual identity had to be drawn from the logo file (an orange-and-navy serif lockup) and the menu language.
What we built between 2:30 and 4:00
A single-route Next.js site on a fresh samedaywebsitelaunch.com sub-domain that handed over to the client's napolikitchen.london after launch. The hero panel held the venue name, the hours line, and the booking widget. Below the fold: an "about" block, the menu pulled in as a clean two-column layout (antipasti / mains / pizza / desserts), an Instagram embed Tommaso could update himself, the contact block with the address and a Google Map embed, and a small reservations FAQ. The Resy embed was loaded behind the consent banner so it did not block Core Web Vitals on first paint.
The schema layer
LocalBusiness schema with the Restaurant sub-type, full PostalAddress, GeoCoordinates accurate to four decimal places, OpeningHoursSpecification covering all seven days with the Sunday roast variation, Menu schema linking to the menu page, and an AcceptsReservations boolean set to true. The schema validated cleanly on the rich-results test and Google indexed the page inside 48 hours.
The launch sequence
DNS swap at 3:45 PM, cache purge at 3:48, smoke test of the booking flow at 3:52, Search Console URL inspection at 3:55, launch email out at 4:01. Tommaso pushed the Mailchimp campaign at 4:15. The first booking landed at 5:30 PM. By close of trade on the Friday, the diary held 142 covers across the soft-opening weekend — against a target of 60. The Resy widget had not blinked.
The first month
Bookings ran at 187% of Tommaso's month-one forecast. The local-pack ranking for "italian restaurant SE1" moved from off-the-map to position three inside the first three weeks; by month two the restaurant was the second-highest result behind a national chain. The site itself needed no edits in month one and three small ones in month two (additional opening days, two photo swaps, a new dessert added to the menu) — all handled inside the 30-day post-launch support window at no extra charge.
What we did not build
No reservations system custom-built — Resy was already paid for and worked. No e-commerce — the brand was not selling product yet. No blog — no content cadence to support one. No team page — three of the four staff were yet to be hired at launch. Every page or feature we did not build was a feature the site did not need to maintain, did not pay subscription fees on, and did not slow the page down. Saying no to the wrong work is part of how the same-day SLA holds.
Twelve months in
The site is unchanged structurally; the menu and opening hours have been edited by Tommaso through the CMS approximately monthly. Local-pack ranking is stable in position one for "italian SE1" and position two for "italian bermondsey". The Resy integration has handled 4,200+ bookings without intervention. Tommaso has not paid for a website renewal subscription, has not paid an agency a monthly retainer, and has not needed to call us for a support ticket since week three. The total cost of the website over twelve months: the original same-day fee, plus £180 of year-two hosting. That is the case for same-day in a nutshell.
What we would do differently with hindsight
Two things, looking back at the launch sequence. First, the Resy widget loads behind the cookie consent banner — which is the right behaviour for PECR compliance, but it means a first-time visitor sees a "request reservation" button rather than the live availability grid until consent is granted. Conversion rate on cold paid traffic would have benefited from a fallback "request via SMS" path that did not require third-party JavaScript. We have since added that pattern to the booking flow for new restaurant clients, but Napoli did not get the benefit of it until the eight-month edit cycle. Second, we shipped the menu as a static page that Tommaso updates manually through the CMS. With hindsight, a structured Menu JSON-LD entity tied to a typed object in the CMS would have given the page the structured data Google now rewards for restaurant pages — we have since rebuilt that pattern for newer launches. Both changes are small and we will fold them into Napoli's site at the year-two refresh.
What this case is and is not evidence for
A small-format independent restaurant with a strong owner-brand and a pre-launch mailing list does not need the same site architecture as a multi-site casual-dining group, a delivery-led ghost kitchen, or a fine-dining destination restaurant. Napoli Kitchen is evidence that a clean single-scroll site plus solid LocalBusiness schema plus a working booking widget can carry an independent restaurant into the local pack and keep it there. It is not evidence that the same template works for the £150-cover tasting menu in Mayfair or for the 12-location chain. Different sites for different shapes of business; we have the chain pattern and the destination pattern in other launches.
If you have a similar business
If you are opening or relaunching an independent neighbourhood restaurant in the UK, the same-day build pattern Napoli used is roughly: a single-scroll marketing site (£499 Launch tier), an existing booking platform (Resy, ResDiary, OpenTable or SevenRooms) handling the actual reservations logic, hosting on a UK-region edge so latency stays low on a Friday-night phone, LocalBusiness schema with the Restaurant sub-type and full geo-coordinates, an Instagram embed for the owner-managed visual layer, and one CMS-editable menu page. Total launch cost: £499. Total year-one cost including hosting and the booking platform: roughly £750-£1,200 depending on which booking platform you pick. Year two onward: £180 hosting plus whatever the booking platform charges. The maths beats every subscription-website alternative we have audited.
The pre-launch versus post-launch comparison
For an independent hospitality operator the most useful benchmark is the trading week immediately before launch versus the trading week immediately after. Napoli's pre-launch week (the seven days leading up to soft opening) booked 23 covers via direct phone and Instagram DM. The post-launch first trading week booked 142 covers, of which 121 came through the new site's booking widget and the remaining 21 still came in by phone. The booking-channel mix at month three has stabilised at roughly 78% website, 14% phone, 6% walk-in, 2% Instagram DM. The site has effectively become the primary front door of the restaurant; the phone is now the secondary channel for special requests, party bookings and customers who genuinely prefer to call.
What the Google Business Profile contributed
Worth a separate paragraph because it is often under-appreciated. The new website was indexed by Google inside 48 hours, but the Google Business Profile contributions to the local-pack ranking lift were equally important. Tommaso's GBP was claimed but minimally filled before launch. Inside the first month we added: opening hours including the Sunday roast hours, the menu link, primary category (Italian Restaurant), secondary categories (Pizza Restaurant, Wine Bar), 18 photos covering interior, exterior, food and the kitchen, three GBP posts per week covering daily specials and events, and the Q&A section answered ahead of customer questions arriving. The GBP contributions are not visible on the website but they are the largest single signal driving the local-pack ranking position.
The Resy widget choice, with hindsight
Resy was the existing booking platform when we arrived; we did not advocate switching it. Twelve months on, the choice has aged well — Resy's table-management UX is among the strongest in the small-restaurant category and the API integration was painless. The annual platform cost (around £85 per month at Napoli's booking volume) sits comfortably inside the operating budget and the team has not had a single Resy-side incident in the trading period. For new restaurant clients without a booking platform, we now default to recommending Resy or ResDiary based on the kitchen size and the table-rotation cadence; SevenRooms is the better fit for higher-end operations that need the CRM features. The choice is more important than the website choice for the operational picture.