6-значный код приходит в Telegram или Max за миллисекунды. Ноль рублей за отправку, атомарная верификация, защита от race condition и перебора — встроены.
· TTL 5 минут, до 5 попыток, 1 активный код на пользователя
Почему SMS больше не работает
При 10 000 регистраций в месяц — 40-70 тысяч рублей только на SMS. Растёт с аудиторией линейно, давит на unit-экономику.
Операторы фильтруют маркетинговый траффик, коды пропадают в роуминге, задержки 30-60 секунд. Пользователь уходит не зарегистрировавшись.
SMS перехватывается социальной инженерией и подменой SIM. Telegram и Max защищены двухфакторкой самого мессенджера.
Что внутри
SQL-запрос с FOR UPDATE и CTE проверяет код + инкрементит попытки в одной транзакции. Race condition невозможен.
Переменные {{code}}, {{minutes}}, HTML-форматирование, мультиязычность. Бренд сообщения — ваш, не Zapnoty.
Максимум 5 попыток ввода, один активный код на подписчика, TTL 5 минут. При исчерпании — автоматическое аннулирование.
300 запросов в минуту на проект, встроенный sliding window через Redis. Не нужно городить Redis-счётчики у себя.
subscriber_id = 00000000-... — тестовый OTP без реального пользователя. Удобно для автотестов и CI.
delivery.success / delivery.failed с причиной. Логируйте OTP-потоки на своей стороне без отдельного трекинга.
Как это работает
Передайте subscriber_id. Zapnoty сгенерирует 6-значный код, сохранит SHA-256 хеш в БД, отправит в мессенджер по шаблону.
Код приходит в Telegram или Max за миллисекунды. Формат HTML — <code>482916</code> — копируется одним тапом.
Передаёте subscriber_id + code. Zapnoty атомарно сравнит хеши, увеличит счётчик попыток, вернёт verified: true/false.
FAQ
Рекомендуем связку — при регистрации дайте выбор Telegram или Max. Кто не использует мессенджеры — откатывайтесь на SMS через свой шлюз. Zapnoty не исключает SMS, а снижает его долю до 10-15%.
Да. Верификация — атомарный CTE с FOR UPDATE: проверка кода и инкремент попыток выполняются в одной транзакции. Два одновременных запроса с разными кодами корректно обрабатываются.
Сейчас — 6 цифр, это стандарт для OTP. Если нужна другая длина (4 или 8) — напишите в поддержку, добавим настройку.
Подписка автоматически деактивируется. Вы получите delivery.failed webhook — можно показать пользователю «разблокируйте @zapnotybot и попробуйте снова».
Нет. В БД только SHA-256 хеш. Сам код существует только в памяти на момент отправки и в чате пользователя.
1 кредит за OTP-код. На тарифе «Базовый» (700 кредитов за 590 ₽/мес) это ≈ 0.84 ₽ за код — в 5-7 раз дешевле SMS. На больших тарифах — до 0.14 ₽.
Без привязки карты. 100 кредитов в месяц бесплатно — этого хватит, чтобы попробовать все возможности.
Решения и кейсы
Частые сценарии, в которых Zapnoty заменяет связку из 3-4 отдельных сервисов.
В 10 раз дешевле SMS, доходчивее email
OTP, статусы заказов, брошенные корзины, промо
Формы с уведомлением сразу в Telegram, без забытых ящиков
Drip-уроки, напоминания, Q&A и вход через бот
Поддержка в Telegram/Max без тяжёлого чат-виджета