Skip to content
Case study · 3of 05
All work

Vila & SPA Stević

Villa & spaSrebrno jezero, Serbia

Dates chosen once follow the guest to Booking.com, WhatsApp or a logged inquiry the owner answers with one reply.

Status

Live · vilastevic.com

Services

  • Website · Booking & orders · Lead pipeline & CRM

Year

2026

Results

Not measured yet.

Vila & SPA Stević website, home page with the villa entrance
01Before

The problem

The old WordPress site still served template demo pages, room pages whose addresses didn't match their content, and copy full of medical claims. Availability lives in a paper planner, and prices live only on Booking.com. The brief: no booking engine, no payments, just get the guest to Booking.com or to the owner.

02Build

What we built

    1. An 8-page static site that replaces an old WordPress install.
    2. A check-dates panel: two-month calendar, adults, children and each child's age.
    3. Dates and guests carried in the URL through every page. No cookies.
    4. Every see-the-price button rebuilt as a Booking.com link with the guest's dates, guests and children's ages.
    5. WhatsApp messages prefilled with the unit, dates and guests. Viber and a call one tap away.
    6. Inquiry and gift-voucher forms that write to a Google Sheet first, with status novo.
    7. An owner email with the guest as Reply-To, so one reply answers the inquiry.
    8. A 301 map for every old WordPress URL, and 410 Gone for dead template pages.
    03Flow

    How it works

    The flow end to end, as the system is built to run. Sheet and status names are the client's own.

    08 steps · 1 sheet

      1. Guest opens any page
      2. Dates and guests, once
      3. Carried in every link
      4. Booking.com · WhatsApp · Inquiry
      5. Checks and honeypot
      6. Sheet row · novo
      7. Owner email, reply-to guest
      8. Booked on Booking.com or by phone
      04Engineering

      Under the hood

      The details a developer checks first. Most of them exist so an inquiry is never lost or sent twice.

        1. Sheet first, email second. A mail failure is logged, and the inquiry is kept.
        2. Three outcomes, not two: sent, rejected or unconfirmed. An unconfirmed inquiry is never asked to be sent again.
        3. Double-submit guard, a 20-second timeout and a prefilled email when the network is down.
        4. Honeypot checked on both sides, a formula-injection guard and escaped HTML in every email.
        5. Phone numbers stored as text, so the leading zero survives.
        6. Old URLs mapped by their real page titles: 14 room pages to 4 room types, 43 testimonial pages to About.
        7. One-hop redirect to https and www, written around the host's SSL header so it can't loop.

        Stack

        What it runs on.

        • HTML · CSS · Vanilla JS · Google Apps Script · Google Sheets · MailApp · Booking.com deep links · WhatsApp links · Apache .htaccess
        05QA

        Build QA

        From our own test runs before launch. These are build numbers, not business results.

          • 27 of 27 functional checks pass.
          • No horizontal overflow on 9 pages, tested from 360 to 1920 px.
          • Contrast failures: 158 at the start, 0 in content after the redesign.
          • Three visual QA rounds found 22, 18 and 13 defects. All fixed.
          • Four form failures found and fixed, including one that reported success when nothing was sent.
          06Scope

          What we didn't build, on purpose

          Scope is a decision. Every line here was decided, not forgotten.

            • No booking engine and no online payment. The client ruled out both.
            • No availability display. There is no digital calendar to read from, so any availability would be invented.
            • No nightly prices on the site. Booking.com shows the real price for the chosen dates.
            • No spa scheduling on the site. It stays a conversation with the owner.
            • No reCAPTCHA. A honeypot checked on both sides, and no puzzle for the guest.
            07Screens

            The build

            Captured from our local pre-launch build. Phone numbers, email addresses, prices and photos of people from the client's site are blurred wherever they appear.

            →Next step

            Let's map your system.