Перейти к содержанию
Innovialabs

Как построить воронку продаж в Telegram-боте

Практика3 мин

Коротко

Разбейте путь клиента на этапы от /start до повторной покупки, метьте источник глубокой ссылкой, сегментируйте вопросами-кнопками, возвращайте отвалившихся короткими напоминаниями и записывайте каждый этап как событие, чтобы считать конверсию.

Короткий ответ

Воронка в боте — это цепочка этапов, где на каждом шаге бот предлагает одно понятное действие:

  1. вход по глубокой ссылке с меткой источника;
  2. первая польза — подборка, расчёт, подарок;
  3. квалификация — два-три вопроса кнопками;
  4. предложение под сегмент;
  5. заявка или оплата;
  6. дожимающие сообщения для тех, кто остановился;
  7. повторная покупка и рекомендации.

Каждый этап записывается как событие в базу — так вы видите, где люди уходят.

Карта воронки

ЭтапЧто делает ботСобытие
Входпринимает /start с меткойstart
Пользаотдаёт обещанный материалlead_magnet
Квалификациязадаёт вопросы кнопкамиqualified
Предложениепоказывает товар или тарифoffer_viewed
Оплатавыставляет счёт или передаёт менеджеруcheckout, paid
Повторнапоминает, даёт бонусrepeat

Глубокие ссылки: откуда пришёл человек

Ссылка вида https://t.me/your_bot?start=ig_reels_oct открывает бота, и при нажатии «Старт» он получает команду /start ig_reels_oct. Параметр — до 64 символов из латиницы, цифр, _ и -. Делайте отдельную ссылку для каждого канала: сторис, блогер, сайт, листовка.

from aiogram.filters import CommandStart, CommandObject

@router.message(CommandStart(deep_link=True))
async def start_with_source(message: Message, command: CommandObject):
    source = command.args  # например "ig_reels_oct"
    await save_first_source(message.from_user.id, source)  # только если ещё не сохранён
    await track(message.from_user.id, "start", source)
    await message.answer("Привет! Подберём вариант за минуту?", reply_markup=start_kb)

Сохраняйте первый источник отдельно — иначе повторный переход по другой ссылке перезапишет происхождение клиента. С сайта метку можно передать в той же ссылке, сократив UTM до короткого кода.

Сегментация

Спросите только то, что меняет предложение: что интересует, для кого, какой объём или бюджет, город доставки. Каждый вопрос — кнопки, а не свободный ввод. Ответы храните как теги пользователя: по ним бот выбирает предложение, а вы — аудиторию для рассылки.

Дожимающие сообщения

Если человек остановился на этапе, через заданное время бот напоминает о себе с одним действием: «Оформить», «Задать вопрос менеджеру», «Не сейчас». Правила:

  • писать можно только тем, кто запускал бота и не заблокировал его; ответ с ошибкой 403 означает блокировку — отмечайте пользователя неактивным;
  • одно-два напоминания на этап, потом пауза;
  • в каждом напоминании — кнопка «Не присылать напоминания»;
  • задачи храните в базе и запускайте планировщиком, а не таймером в памяти — после перезапуска они не пропадут;
  • соблюдайте лимиты Telegram на скорость отправки и при ответе 429 ждите время из retry_after.

Оплата и повторная покупка

Оплату можно принять прямо в боте через Telegram Payments с платёжным провайдером, цифровые товары — через Telegram Stars, либо дать ссылку на оплату на сайте. После покупки воронка не заканчивается:

  • подтвердите заказ и присылайте статусы;
  • через время попросите оценку;
  • напомните о повторной покупке, когда товар обычно заканчивается;
  • дайте реферальную ссылку вида ?start=ref_12345, чтобы видеть, кто кого привёл.

Учёт конверсии

Достаточно одной таблицы событий:

CREATE TABLE funnel_events (
  id         BIGSERIAL PRIMARY KEY,
  user_id    BIGINT NOT NULL,
  event      TEXT NOT NULL,
  source     TEXT,
  created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

SELECT source, event, COUNT(DISTINCT user_id) AS users
FROM funnel_events
GROUP BY source, event
ORDER BY source, event;

Деление числа пользователей соседних этапов даёт конверсию шага, а разбивка по source показывает, какой канал приводит покупателей, а не просто подписчиков.

Частые ошибки

  • продажа в первом сообщении — без пользы и вопросов человек уходит;
  • одна ссылка на все каналы — невозможно понять, что работает;
  • напоминания без отписки — растёт число блокировок;
  • нет передачи менеджеру — сложный вопрос упирается в меню.

Частые вопросы

Столько, сколько нужно для решения о покупке. Если этап не меняет предложение и не приближает к оплате, его можно убрать.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.