Case study

n8n automation · workflow engineering

A salon's whole front desk, living inside one Telegram chat.

No app to install, no website to visit. Clients book, staff run their day, and the owner runs the business — all through buttons in a chat they already have open.

Smart Orders Bot
client view
✅ Ваш запис підтверджено! 📅 Дата: 24.08.2026 🕒 Час: 15:00 💅 Послуга: Манікюр 💰 Вартість: 350₴ 📍 Район: Центр Очікуємо на вас 💖
Ласкаво просимо до Smart Orders Bot 🚀 Оберіть дію:

actual product interface, unedited

Why it exists

A messenger, not a management system

The owner didn't want her clients learning a new app, and she didn't want to learn one either. Everyone she serves already lives in Telegram. So the entire business — bookings, staff schedules, cancellations, payments — had to work as a conversation, not a dashboard.

What it does

One bot, run by three different kinds of people

One bot, three roles

Owner, staff, and clients each see their own menu — same bot, different capabilities, no confusion about who can do what.

Full appointment lifecycle

Request, confirm, reschedule, cancel, complete, get paid — every state transition is modeled, not improvised.

Admin panel, no dashboard

Settings, schedules, pricing, and reports live inside Telegram too — the owner never leaves the chat she's already in.

Reminders that fire themselves

A scheduled workflow nudges clients before their visit — no one has to remember to send it.

Money, tracked

Payment method, price, and totals per staff member roll up into real business analytics, not a notebook.

A chat that behaves like an app

Every screen cleans up after itself — old menus and stale cards disappear, so the conversation never turns into scroll-back archaeology.

Role views

Same welcome message, three completely different menus

The bot greets everyone the same way — what follows depends entirely on who's asking. Nothing here is a mockup; these are the real menus.

actual product interface, unedited

Under the hood

Fourteen workflows, one call graph

Every Telegram update enters through a single trigger, gets routed by responsibility, and fans out into focused, single-purpose workflows that call each other — never duplicate each other's logic.

core · telegram trigger dispatch · public dispatch · booking dispatch · admin public info prices · contacts services · calendar bookings lifecycle admin · stats · crm owner + staff tools payments · crm called directly from core reminders independent · scheduled
feature workflow
independent trigger

Field notes

The bug that only showed up in production

race condition · found live, fixed live

A single button press occasionally arrived twice from Telegram, milliseconds apart. Nothing was wrong in isolation — but re-running the same query in a workflow engine that doesn't guarantee run-once execution by default quietly duplicated and reordered a client's list of appointments. The fix wasn't a patch, it was a deliberate idempotency layer: every incoming update gets a fingerprint, checked against a table before anything else runs, so a duplicate delivery is dropped before it can touch a single record.

Built with

n8n PostgreSQL Telegram Bot API

Need something like this?

If your business already lives in a chat, it can run from one too.

Booking flows, staff coordination, payment tracking, admin tools — built as workflows, not a subscription to yet another SaaS dashboard.