4 SOSNY. Mountain guesthouse website

Website with a custom booking module, a 360° virtual tour and Telegram notifications for a guesthouse in the Polish mountains: rent an apartment or the whole house

Corporate website4sosny.plFigmaTelegram Bot APIWordPressACF
Client
4 SOSNY, Miłków, Poland
Field
Countryside getaway, house rental
Stack
Figma · WordPress · ACF · Telegram Bot API
Timeline
3 weeks from kickoff to launch

The task - sell directly, without aggregator fees

4 SOSNY is a private vacation house at the foot of the Karkonosze mountains: 160 sq m, a view of Śnieżka through panoramic windows, a sauna, a jacuzzi, electric bikes. The house is split into two equal halves, so guests can rent the whole place or take just one side - it works for a big group of friends and for a single family alike.

The owners didn’t want to depend on booking aggregators and their fees. They needed a site of their own - one that presents the house and the area, takes booking requests by itself, keeps track of quotas and available slots, and instantly notifies the owners about every new enquiry so it can be handled right away.

We delivered the project in 3 weeks: designed everything in Figma, built a custom WordPress theme, wrote our own booking module with an availability calendar and hooked up Telegram notifications so the owners can manage requests right from their phones.

Sell directly

Their own booking channel with no fees: a guest picks dates on the site and sends a request straight to the owners.

Show the atmosphere

Photos introduce the house from the very first screen: a slider highlights the best features, and the gallery covers every room, the sauna, the gym and the rest. We sell comfort, experiences and a truly gorgeous location.

Show real availability

The house is rented whole or by half, so the calendar has three states: free, half-booked and booked. A formula and a system of slot checks make sure the same night is never sold twice.

React to leads instantly

Requests land in the owners’ Telegram, where the bot has action buttons. Confirming a booking takes 15 seconds, no laptop needed.

4 SOSNY home page: the house against the Karkonosze mountains

Design: dark pine and cream

The design was created in Figma from scratch. The palette came straight from the landscape - the deep green of a pine forest and a warm cream, like the light in the windows of the house in the evening. Large typography, plenty of air and borderless photos: the site feels light, shows off the best of the property and sets the mood before you even arrive 🙂

The home page is built from the essential sections and answers pretty much every question a guest might have. There are prices, the surroundings with distances to trails and ski lifts, a gallery, a blog with tips from the hosts, an FAQ and a map with directions. Each section is a separate configurable block in the admin panel: the content can be rearranged without a developer.

Shooting the house and a 360° virtual tour

Everything you see on the site is our work from start to finish. We came to the property and shot the house ourselves: the interiors, the sauna and wellness area, the bedrooms, the view of Śnieżka and aerial drone footage. No stock photos, nothing borrowed - just the real house in good light.

A special point of pride is the 360° virtual tour. We shot six panoramas of the key rooms and assembled them into an interactive walkthrough: guests spin the view in any direction, as if standing in the middle of the room, and jump between rooms from a list. The panoramas rotate right in the browser and work just as well on a phone. A tour like this answers half of the questions before booking - people see the house with their own eyes and arrive already feeling at home.

We've embedded one panorama from the tour right here - take it for a spin.

The 360° virtual tour: a room panorama and the list of six rooms
Drag to look around
A live panorama from the tour - the wellness area with the jacuzzi and a mountain view. Drag with your mouse or finger; on a phone there's a gyroscope button: turn it on and simply move the phone around - the view follows your hand, and it looks fantastic.
The gallery section "the house from above": our drone footage

Two rental formats in one house

The house is split into two equal halves, so it can be rented in different ways: an apartment for a party of up to 4 guests, or the whole house - up to 8 people, four bedrooms, two kitchens and two bathrooms. We put this choice front and centre: two cards with price and details on the home page, and a format switcher in the booking form that changes both the available dates and the total price.

Choosing a rental format: an apartment for up to 4 guests or the whole house for up to 8

A light and simple booking module

Off-the-shelf booking plugins for WordPress mean subscriptions, extra screens and someone else’s logic. A single house with two halves needed simple, honest mechanics, so we wrote the module ourselves.

  • Requests are stored in the admin panel as their own entity - with the statuses “New”, “In progress”, “Confirmed” and “Cancelled”, a new-request counter in the menu, and filters by name, email, phone and check-in dates.
  • A request is captured immediately through a hook that intercepts the form after validation but before any email goes out, and writes a record to the database - even if the mail server fails, no enquiry gets lost.
  • Booking the whole house blocks both halves, while booking one half marks the day as partially occupied. The calendar on the site pulls availability via AJAX and shows confirmed bookings only.
  • The system watches the number of guests and adjusts the booking to match. One half sleeps up to 2 adults and 2 children; if a request comes in for, say, 3 adults and 2 children, it automatically becomes a whole-house booking - the price recalculates on the fly, and the guest sees it right on the page.
Booking page with the availability calendar

How guests make a booking

  1. While picking dates, guests immediately see each date’s status and availability, and the minimum stay is checked on the spot.
  2. Next the guest chooses the format - one half or the whole house - and says how many adults and children are coming. If the group is bigger than a half can sleep, the booking adjusts itself to the right format.
  3. The price is calculated instantly with a formula - the number of nights × the rate, plus options like staying with a pet.
  4. After submission the request is validated once more on the server and saved to the booking module’s mini-CRM with the status “New”. The guest and the administrator get transactional confirmation emails, and the administrator also receives an instant chat-bot notification.
A booking step: party size and the price calculated on the fly

Requests come straight to Telegram

The owners are usually on site with their guests, not at a laptop. So every new request instantly arrives in their Telegram group - a neat message in Polish with all the details: dates, format, party size, contacts and the total.

Right under the message there are three buttons: “Confirm”, “In progress”, “Cancel”. A tap goes to the site’s secret-protected REST webhook, the request status changes in WordPress, the calendar recalculates, and the guest optionally gets a status-update email. A booking gets confirmed in a couple of taps from a phone, and the site immediately stops selling those dates.

The bot token and chat ID are configured on the module’s page, and the webhook secret is generated automatically. The same toggle can also mirror quick questions from the contact form into the group.

Telegram notification settings in the admin panel

A friendly, intuitive admin panel

The settings hold everything that changes day to day: the rental mode (whole house or halves), per-night prices for each format, the house rules text shown next to the form, and the calendar colors. Availability and occupancy are shown in the calendar just as clearly as on the site itself.

SEO and attention to detail

  • Pages are marked up to schema.org standards - LodgingBusiness with all the property’s attributes, and FAQPage - to compete for rich snippets in Google.
  • A strict heading hierarchy and meaningful alt texts on every image - the semantics are clean and clear to search engines.
  • We removed links that pointed to themselves and proofread the whole structure against our internal SEO checklist.
  • We met the GDPR requirements: a cookie banner with an honest choice, and the Google map loads only after consent - until then, not a single external request leaves the page.
  • We tuned the speed following PageSpeed Insights recommendations until the scores reached the green zone: images are converted to WebP on upload, lazy load is in place, and unused code is gone.

Every page in the PageSpeed green zone

98Performance
100Accessibility
100Best Practices
100SEO

Measured in PageSpeed Insights (mobile), July 2026. Every page of the site scores like this (with a small variance in performance), including the home page.

CI/CD on ordinary shared hosting

The site lives on ordinary shared hosting - inexpensive for the client and zero administration. But we set up the development process like on “grown-up” infrastructure: a local Docker environment mirrors production exactly, and every push to main triggers GitHub Actions with an incremental rsync deploy over SSH - only the changed theme files, verified by checksums, travel to the server. Uploaded photos and the WordPress core are never touched by the deploy at all.

Any change appears on the live site automatically, in about a minute. In the site’s first ten days we shipped some fifty updates - including the GDPR banner and the Telegram notifications - without a single moment of downtime.

The project in numbers

3weeks from kick-off to launch
6360° panoramas we shot
2rental formats in one house
0in booking-service subscriptions

The photography, panoramas and booking module are our work.

Want results like these?

Let’s talk

Tell us about your project — we’ll reply within one business day.

What do you need?
Budget

Thank you!

Your request is in. We’ll get back to you within one business day.