casesneva-beauty-telegram

rudiscuss your taskmenuclose

An example of a solution: beauty salon, Koh Samui, Thailand · 

A website that opens without a browser

The price list lives on the website and the customer lives in a messenger, and every switch between them loses someone. A 22-page salon website is placed inside a Telegram channel: sections, prices, and answers to questions are browsed right where people book.

The channel’s pinned menu: the salon’s cover, a description, and booking buttons

The task

A beauty salon on the island of Koh Samui: hair, hair removal, aesthetic treatments, device-based treatments, body contouring. Visits are by appointment, and the customers are Russian speakers: some live on the island, some have come for three weeks. They book through messengers: they message, ask about a treatment, and agree on a time.

The salon has a website, and everything is on it: a description of every treatment, what it is for, preparation, the full price list. But the way to it is long. A person reads the channel, sees a treatment, wants to know the price, and leaves for the browser. Not everyone comes back: the page takes time to load, the price list is in tiny print as you scroll, and the conversation is left behind in another app.

That is the gap: the price is in one place and booking is in another. Every switch between them costs some of the inquiries, and that loss cannot be seen in reports: the person simply did not come back.

This is an example of a solution, not commissioned work: it shows what can be done with any service website. There were no deadlines, and there are no numbers on inquiries either: the channel is small, and as of September 17, 2026, there is nothing to count.

What it delivered

A person who asked about a price no longer leaves the channel for the browser: the whole price list sits inside, and a link to a service can be forwarded to anyone. The receptionist answers with a single link instead of typing prices by hand.

What is in the channel now

The menu is pinned at the top: any conversation about price starts from it.

What the channel menu consists of
What it isHow many
Main menu, pinned in the channel1
Areas: hair, hair removal, aesthetic treatments, device-based treatments, body5
Service articles: description, full price list, questions16
Total screens in the channel22

The website had exactly as many pages at the time: a home page, five sections, and sixteen services. Nothing was lost and nothing was added: the same map is put together inside Telegram.

The main menu opens with a “prices by area” table: five rows with a price range from low to high, so a person sees the scale of the amounts right away. Below it are all the services as a list: the name as a link, with a “from” price next to it.

A table of prices for five areas and a list of all services with links
The first thing you see after the salon’s description: the price range for each area, and under it, all the services. Tapping a name opens an article with the full price list.
The “Hair” area screen: a cover, a “Main menu” link, a description, and the list of services in the section
An area screen. At the top is a cover in the salon’s design, and under it a link back to the main menu: there is nowhere to get lost in the channel.

What I did

I moved the website’s map, not its text

The temptation was simple: post the treatment descriptions one after another. Many channels do that, and it is impossible to read: the feed grows, yesterday’s post scrolls up and away, and the price of a specific service cannot be found in it.

So the foundation is a map, not a feed. The main menu is the entrance, the five areas are the second level, the sixteen articles are the third, and each one is linked to the rest. In effect it is the same website, except the pages are called messages.

I condensed the price list for a narrow screen

The salon’s price list lives line by line: short hair on one line, long and thick hair on a separate one, followed by a note. On a wide screen that is readable; on a phone it is not.

In the channel table, the options are merged into one row, “5500 / 6500 ฿”: short on the left, long on the right. The note went in italics, in parentheses, under the name. In the “Lightening” section, this gave six rows instead of eleven, and not a single price was lost along the way.

The price list table in a service article: two price columns and notes in italics
The price list in a service article. A double price is two lines of the salon’s price list merged into one: hair length decides whether you pay less or more.

I set the “from” price by treatment, not by price list line

The cheapest line in the price list and the cheapest treatment are different things. Electrolysis has a rate of 35 baht per minute, skin care treatments have a 500 baht extra charge on top of the main program, and hair care has a separate consultation. Put those in the menu as “from” prices, and a person will come in with an expectation the salon cannot meet.

So “from” in the menu is the minimum price of the treatment itself. Supplies, extra charges, and per-minute rates stayed inside the articles, where it is clear what they are for. Because of this, for four services out of sixteen, the number in the menu differs from the cheapest line in the price list, and it differs on purpose.

I hid the common questions in collapsed lines

Seven questions the receptionist answers every day: where the salon is, how to book, what language the staff speak, what treatments are offered, whether you can come in without an appointment, whether you can reschedule, whether a deposit is required. Each is a collapsed line that expands with a tap.

That way they do not take up the screen for those who came for a price, yet they are always at hand for those who came with a question.

An expanded question about rescheduling a booking and the “How to book” block with buttons
A question expands right in the post. Just below the answers are the booking block and the same buttons as at the start of the menu.

I brought booking within reach from anywhere in the menu

Booking buttons sit both at the start of the menu and at the end: WhatsApp is highlighted in green as the main option, with Telegram, Instagram, and a link to the website next to it. A person who has read to the end should not have to scroll back to the top.

Comments on posts are left turned on: a question can be asked right under the menu, without going into a private chat.

Who this is for

Those with a website and a channel

The most common case. The website stays as it is, and its content is duplicated inside the channel. Nothing needs to be redone: what is already written gets used.

Those with no website

A channel menu works on its own too: a catalog, prices, answers to questions, and a booking button. It is no replacement for a website, but it is much better than a price list posted as an image in a pinned message.

Those with products, not services

The same setup: catalog sections, product cards with the price and what is in each product, an order button. Only what fills the screens differs.

What it does not replace

A website. Search engines and AI assistants read it, while Telegram is closed to them: nobody will find a channel menu in search. This is a second entrance for those already in the messenger, not a replacement for the first.

What is not here yet

What I would tell a client before work starts.

The menu was put together by hand. That means the prices in the channel are a second copy of the price list, and sooner or later a second copy drifts away from the first. That is exactly what happened: the menu came out on September 2, 2026, and on September 10 a cosmetics storefront appeared on the website. It is not in the channel menu.

Hence the next step, and it takes code: the menu should be built from the same files the website is built from and updated with one command. Then a price edit on the website reaches the channel by itself, and a mismatch becomes impossible. That is how the slides in the salons’ Instagram profiles already work; they are in a related case study.

The second thing missing here is numbers. The channel is small, the menu came out on September 2, 2026, and any percentages from a base that size would be made up. There is nothing to show in this case study, so I show nothing.

Everything described above was checked against the channel itself and the website’s data: the menu’s makeup and links through the Telegram Bot API, and the prices by a line-by-line comparison with the 192 lines of the price list in the website’s repository as of September 17, 2026.

Want your price list to open right where people message you?

Message me

What this gives the business

An answer to “how much does it cost” in one tap

The receptionist sends a link to the service article instead of copying prices into the chat by hand: there is nowhere to make a typing mistake.

A price list you can forward

A link to a service can be forwarded to anyone: to a friend, to the island’s chat, in reply to a question. It opens right in Telegram. Nobody goes anywhere else.

The channel stops being just a feed

The pinned menu works as a shop window: even if no posts have gone out for a month, a new subscriber sees the whole salon.

Edits without a developer

Changing a price or text in the finished menu means editing a message in the channel. As long as the menu is put together by hand, that is the only way; once there is a build from the website’s data, only the website will need editing.

How it works technically

The format is Rich Messages in the Telegram Bot API (10.1–10.2, summer 2026): one message is assembled from blocks, not from marked-up text. It uses heading at three levels, paragraph, table with column alignment, list with links, details for collapsible questions, divider, a photo block for the cover, and buttons with the success and primary styles. The limit for one message is 32,768 characters, so a whole website page fits in one post.

Publishing is done by the channel’s admin bot: every post is signed by it, and the main menu is pinned. The bot has no commands: it processes nothing, it only publishes and edits. Discussions go through a group linked to the channel.

A limitation of the format: the t.me web version does not show such posts; in place of the content, it offers to open the post in the app. For a channel that is read in Telegram, this does not matter, but a link to such a menu cannot be given out as a link to a web page.

The content is taken from the th.neva.beauty website: the same sections and services as in its data (content.yml) and the same prices as in the price list (prices.json). There is no build of the menu from these files yet, and that is the next task.

Who did the work

It’s just me behind jw-dev.pro, not a studio or an agency. That means you talk directly to the person doing the work: no manager, no brief relayed through third parties, and no passing the project to another contractor partway through.

My time zone is UTC+7, the same as Bangkok and Hanoi. I build websites, Telegram bots, and automation: a task rarely ends with a page, and it usually has to be connected to what you already have running.

As time goes on, the task sounds like “build a website” less and less often. One person needs a price to be changed in one place, not on twenty pages. Another needs the channel to run without them. A third needs the whole price list to sit inside Telegram, where their customers already go every day. That’s why the list of what I do is open-ended: if your task isn’t on it, that doesn’t necessarily mean it can’t be solved.

I write case studies so that they can be checked: what was there, what was done, and how it was measured. If there is analytics data, I give the numbers and the period they cover; if it is too early to measure, I say so. You won’t find “increased sales” here: that is a promise, not a result.

Need something similar?

Whether it’s a website, a bot, or something that is now done by hand, tell me what’s going on, and I’ll tell you whether it can be solved or not.

This kind of work is the service “Menu and price list in a Telegram channel.”

I have your request

I’ll read it myself and reply where you told me to.

Send another one

What you need you can pick several

In your own words: what you have now and what you want to get. If you have a website or a bot, paste the link.

Your request will come to me on Telegram, and I’ll reply myself.

If it’s easier, contact me directly: on Telegram, on WhatsApp, or by email.

Not sure what’s wrong with your website? Check it for free on Telegram: @jw_site_check_bot.

Who owns everything afterward and what happens if I disappear: answers on the home page.