Всё, что мы собираем в этой статье, уже есть в виде готового сценария — установите его и настройте под себя.
Открыть шаблон«Где мой заказ?» — самый частый вопрос в чате магазина и почти единственный, на который чат-виджеты не умеют отвечать. Виджет собирает почту и обещает, что с клиентом свяжутся. Клиент ждёт. Иногда пишет в поддержку жалобу на поддержку.
Дело не в качестве AI. Сколько ни обучай модель на страницах сайта, этого ответа она не найдёт: он не на сайте, он в вашей системе заказов. Чтобы ответить, чат должен уметь сделать запрос, прочитать ответ и решить, что сказать дальше.
Здесь мы соберём именно это: виджет на сайте, который спрашивает номер заказа, обращается к вашему API и отвечает реальным статусом со ссылкой на отслеживание. Около двадцати минут, без кода. Готовый шаблон — в конце, и со второго шага мы начинаем прямо с него.
Что получится
Посетитель открывает чат и нажимает «Отследить заказ». Бот спрашивает номер. Отправляет номер в API магазина, достаёт из ответа статус и отвечает одним из трёх способов: отправлен — со ссылкой на отслеживание; собирается — с ожидаемой датой; не найден — и тогда просит проверить номер, а не упирается в тупик. На любом шаге можно попросить человека и попасть во входящие вашей команды.
Понадобится адрес, который по номеру заказа возвращает заказ. Если у вашей платформы есть API заказов, он у вас уже есть.

Шаг 1. Добавьте бота для сайта
В своём приложении добавьте бота и выберите «Веб-чат». Токен получать не нужно, модерацию ждать не нужно — в отличие от телеграм-бота, он существует сразу после создания. Название можно пока не придумывать.

Шаг 2. Установите шаблон «Помощь с заказом»
Откройте Помощь с заказом и установите его в приложение. Он даёт всё, что одинаково у любого магазина: меню помощи по заказу, вопрос с номером заказа, маршруты для обмена и возврата и передачу диалога человеку.
Чего в нём намеренно нет — самого запроса статуса: шаблон фиксирует обращение и уведомляет команду, потому что не может знать, как устроен ваш API заказов. Это и есть шаг, который мы сейчас добавим, — единственная часть, которую нужно настроить под себя.
После установки откройте сценарий отслеживания заказа. В нём есть блок с вопросом, который сохраняет ответ посетителя в переменную — по умолчанию {{order_number}}.
Шаг 3. Добавьте «Внешний запрос»
В блоке, который идёт после сохранения номера, добавьте действие и выберите «Внешний запрос» — «Отправить HTTP-запрос во внешний API».
Метод — GET, адрес — ваш эндпоинт заказов, с переменной на месте номера:
https://api.yourstore.ru/v1/orders/{{order_number}}
Переменную {{order_number}} вставляйте из списка переменных, а не набирайте руками: вставленная переменная становится чипом, который сценарий умеет подставить, а набранный текст так и останется текстом.
Если API требует ключ, откройте вкладку «Заголовки» и добавьте его — например, заголовок Authorization со значением вашего токена.

Шаг 4. Достаньте ответ из ответа
Это тот шаг, который превращает запрос в разговор.
Откройте вкладку «Тест» и выполните запрос один раз с настоящим номером заказа. Вы увидите реальный ответ своего API. Затем откройте вкладку «Ответ» — там появится блок с полями из последнего тестового ответа, так что поля можно выбрать из настоящих данных, а не угадывать структуру.
Сопоставление работает через JMESPath — для большинства API это просто путь до поля. Добавьте два сопоставления кнопкой «Добавить сопоставление ответа»:
| JMESPath | Переменная |
|---|---|
status | order_status |
tracking.url | tracking_url |
Левую колонку поправьте под свой ответ: если API возвращает {"order": {"state": "shipped"}}, путь будет order.state. Дальше {{order_status}} и {{tracking_url}} содержат живые данные из магазина.

Шаг 5. Разветвите по ответу
После запроса добавьте условие. Условие задаёт один вопрос «да или нет» и имеет два выхода, поэтому на каждый статус ставится своё условие. Магазину обычно хватает двух условий и трёх ответов:
- «Отправлен?» —
{{order_status}}равноshipped. «Да» ведёт к сообщению с отслеживанием, «нет» — ко второму условию. - «Ещё собирается?» —
{{order_status}}равноprocessing. «Да» ведёт к сообщению «ещё собираем», «нет» — к ветке «не найден».

Для отправленного заказа напишите сообщение с переменными-чипами:
Заказ {{order_number}} уже в пути. Отследить можно здесь: {{tracking_url}}
Добавьте две кнопки: «Отследить» — ссылка на {{tracking_url}} — и «Позвать человека».
Для сборки скажите то, что есть на самом деле, и оставьте тот же запасной выход:
Заказ {{order_number}} собирается. Обычно отправка занимает один рабочий день — как только отправим, придёт письмо.
Ветка «не найден» важнее, чем кажется. Не заканчивайте на ней разговор:
Не нахожу заказ с таким номером. Обычно он есть в письме с подтверждением и состоит из 10 цифр. Попробуем ещё раз?
Кнопку «Попробовать снова» верните на блок с вопросом из шага 2. Эта петля и отличает чат, который помогает, от чата, который сдаётся.
Шаг 6. Проверьте так, как проверит незнакомый человек
Откройте панель тестирования и пройдите сценарий как посетитель: нажмите кнопку меню, введите настоящий номер заказа, убедитесь, что в ответе реальный статус. Потом введите несуществующий номер и проверьте, что попадаете в петлю повтора, а не в тупик.

Дальше поставьте виджет на сайт. Один скрипт перед закрывающим тегом </body> даёт кнопку чата на каждой странице; в руководстве по установке разобраны также встроенный блок и отдельная страница, если чат нужен в конкретном месте.
Сколько это стоит в работе
Полезно понимать заранее. FlowCastle считает обращения — одно событие автоматизации каждый раз, когда посетитель пишет или нажимает кнопку, — и всё, что бот делает в ответ, не считается: запрос к API, условие и все три сообщения бесплатны. Первое сообщение каждого человека тоже бесплатно, контакты не ограничены. На бесплатном тарифе 2 000 событий в месяц — примерно 250 диалогов.
AI в этом сценарии не участвует вообще, так что отдельные AI-кредиты он не расходует. В этом и смысл: проверка заказа не должна стоить токенов и не должна уметь выдумать статус.
Куда это развивать дальше
Те же три блока — спросить, запросить, разветвить — закрывают почти всё, чего от чата на сайте ждут и чего он обычно не умеет. Поменяйте адрес — и получится проверка подписки, проверка записи, выбор слота доставки или перевыпуск ключа. Если ответ нужно обработать, есть шаг с собственным кодом, а AI-ассистент напишет его по описанию словами.
Чего этот сценарий не делает: не принимает оплату. Оплата работает в Telegram, а не в виджете на сайте, поэтому возврат или повторный заказ ведите в вашу обычную оплату.
Начать проще всего так: установите Помощь с заказом и добавьте «Внешний запрос» из шага 3 — это и есть вся сборка.
Вопросы и ответы
Может ли чат на сайте действительно проверять статус заказа?
Да, если умеет обращаться к вашей системе заказов. Чат спрашивает номер, отправляет его в API заказов действием «Внешний запрос», достаёт статус из ответа и ветвится по нему. Чего он не может — ответить по содержимому сайта: статуса на сайте нет, поэтому обученная на страницах модель его не узнает.
Нужно ли писать код?
Нет. Запрос — это одно действие «Внешний запрос»: адрес с номером заказа в виде переменной, при необходимости заголовок Authorization и два сопоставления, которые кладут статус и ссылку на отслеживание в переменные. Шаг с собственным кодом есть для нестандартных ответов, но обычному API заказов он не нужен.
Что делать, если номер заказа неверный?
Верните эту ветку к вопросу, а не заканчивайте разговор. Подскажите, где найти номер и как он выглядит, и дайте кнопку «Попробовать снова». Тупик на опечатке — самая частая причина, по которой человек бросает чат и пишет на почту.
Входит ли запрос к API в шаблон?
Нет, и намеренно: шаблон не может знать, как устроен ваш API заказов. «Помощь с заказом» даёт меню, вопрос с номером заказа, маршруты обмена и возврата и передачу человеку, а само обращение фиксирует для команды. Живой запрос статуса — это шаг 3 из статьи и единственная часть, которую настраивают под себя.
Может ли человек подхватить диалог?
Да. Любая ветка может передать разговор команде, и она отвечает из чата поддержки — тех же входящих, где лежат диалоги из Telegram. Посетитель остаётся в том же окне.
