Рецепт: уведомления и шаблоны WhatsApp с Вашего сайта
Обновлено: 11 ноября 2026 · 10 мин чтения
Этот рецепт помогает отправлять клиенту сообщения WhatsApp с Вашего сайта, из мобильного приложения или CRM: коды подтверждения, заказы, доставки, напоминания. Каждое сообщение записывается в диалог клиента в Clomni: когда клиент отвечает, оператор видит, что ему отправляли раньше.
Шаги
-
1
Что Вы получите
- Уведомление WhatsApp одним запросом из Вашей системы. Clomni сам находит или создаёт контакт и диалог.
- Бесплатный текст, пока открыто 24-часовое окно, и одобренный шаблон, когда оно закрыто. Clomni сам проверяет окно.
- Статус сообщения
sent,delivered,read,failed, в том числе через вебхук. - Уведомления не забивают список «Открытые» у операторов: по умолчанию диалог остаётся закрытым и открывается, когда клиент отвечает.
-
2
Два вида WhatsApp
- WhatsApp Business API (Cloud): подключается через аккаунт Meta. Есть 24-часовое окно, вне окна уходит только одобренный шаблон, и Meta берёт за него плату. Endpoint
/v1/whatsapp/*работают только с этим видом. - WhatsApp QR: WhatsApp на телефоне привязывается по QR-коду. Окна и шаблонов нет, но номер, который много отправляет, могут заблокировать.
/v1/whatsapp/messagesс номера QR не отправляет. В QR можно только отвечать в открытом диалоге (шаг 6).
- WhatsApp Business API (Cloud): подключается через аккаунт Meta. Есть 24-часовое окно, вне окна уходит только одобренный шаблон, и Meta берёт за него плату. Endpoint
-
3
Нужные scope
messages:send.template(высокий риск): отправка шаблонов и их список.messages:send(высокий риск): отправка текста. Еслиtextотправляется вместе сfallback_template, нужны оба scope.channels:read(низкий риск): список номеров WhatsApp и ихchannel_id.messages:read(средний риск): проверка окна и статуса сообщения, вебхукиmessage.*.
В форме review укажите примерный объём в день, кто создаёт сообщения (человек, система, AI) и как Вы получаете согласие на маркетинговые сообщения: Review: проверка scope и причины отказа.
WhatsApp API, который работает с ключом API профиля (Начало работы с WhatsApp API: ключ API, account_id и channel_id), это отдельный продукт: там путь
/v1/accounts/{account_id}/whatsapp/.... С токеном разработчика в пути нет ID workspace:/v1/whatsapp/.... Массовая отправка (bulk_messages) есть только в том API. -
4
1. Найдите канал
curl "https://api.clomni.ai/v1/whatsapp/channels" \ -H "Authorization: Bearer clomni_pat_xxx"
У каждого номера в ответе есть
channel_idи полеsendable.sendable: falseэто номер QR, этот API с него не отправляет. -
5
2. Выберите шаблон
curl "https://api.clomni.ai/v1/whatsapp/templates?channel_id=5" \ -H "Authorization: Bearer clomni_pat_xxx"
Возвращаются только шаблоны, одобренные Meta (
APPROVED).example_parametersэто готовая заготовка параметров, которые ждёт шаблон: скопируйте её и подставьте свои данные. API шаблоны не создаёт: создайте шаблон в Meta, затем синхронизируйте шаблоны в настройках канала WhatsApp в панели.synced_atпоказывает, когда список получен в последний раз. -
6
3. Разберитесь с 24-часовым окном
Окно открывает клиент: 24 часа после того, как он Вам написал, уходит любой текст. Отправленный Вами шаблон окно не открывает, его открывает ответ клиента или нажатие кнопки быстрого ответа в шаблоне. Если Вы отправляете несколько уведомлений, добавьте кнопку быстрого ответа в первый шаблон. Проверить заранее:
curl "https://api.clomni.ai/v1/whatsapp/messages/window?channel_id=5&phone_number=%2B994501234567" \ -H "Authorization: Bearer clomni_pat_xxx"
open: falseиlast_inbound_at: nullозначают, что этот номер Вам ни разу не писал: первое сообщение должно быть шаблоном. -
7
4. Отправьте
Код подтверждения (шаблон):
curl -X POST "https://api.clomni.ai/v1/whatsapp/messages" \ -H "Authorization: Bearer clomni_pat_xxx" \ -H "Content-Type: application/json" \ -d '{"channel_id": 5, "phone_number": "+994501234567", "template": {"name": "verification_code", "language": "az", "parameters": {"body": {"1": "483920"}}}, "contact": {"name": "Leyla Hasanova", "identifier": "crm-10422"}, "source_reference": "otp-10422-1794120000"}'Уведомление о доставке (текст, если окно открыто, шаблон, если закрыто):
curl -X POST "https://api.clomni.ai/v1/whatsapp/messages" \ -H "Authorization: Bearer clomni_pat_xxx" \ -H "Content-Type: application/json" \ -d '{"channel_id": 5, "phone_number": "+994501234567", "text": "Посылка AZ-10422 передана курьеру.", "fallback_template": {"name": "cargo_status", "language": "az", "parameters": {"body": {"1": "AZ-10422", "2": "у курьера"}}}}'- Поле
sent_asв ответе говорит, что ушло:session(текст) илиtemplate. Если окно закрыто иfallback_templateнет, ничего не уходит и возвращается 422: платное сообщение не уйдёт без Вашего ведома. source_referenceэто Ваш уникальный ключ. В течение 24 часов запрос с тем же ключом не создаёт новое сообщение, а возвращает первое: клиент не получит два кода, Meta не получит оплату дважды.conversation_statusпо умолчаниюresolved: диалог не попадает в список операторов. Передайтеopen, если оператор должен увидеть его сразу.- Номер должен быть в международном формате, от 8 до 15 цифр. Пробелы, дефисы и
+удаляются.0501234567ошибочен, потому что в нём нет кода страны. - Параметры шаблона: для тела
{"1": "..."}или имена, заданные в Meta, для заголовкаmedia_urlиmedia_type(image,video,document), для кнопокurlилиcopy_code.
- Поле
-
8
5. Следите за статусом
status: "sent"означает, что Meta приняла сообщение, а не что оно дошло. Чтобы прочитать последнее состояние:curl "https://api.clomni.ai/v1/whatsapp/messages/918234" \ -H "Authorization: Bearer clomni_pat_xxx"
Статусы:
sent,delivered,read,failed(причина в полеexternal_error). Вместо запроса по каждому сообщению подпишитесь на вебхукmessage.updated. Чтобы получать ответ клиента, добавьтеmessage.created. См. Вебхуки приложения и события: настройка, темы, проверка подписи. -
9
6. Ответ в открытом диалоге (Cloud и QR)
Чтобы написать внутри диалога, используйте
POST /v1/conversations/{conversation_id}/messages, где{conversation_id}это номер из панели. Этот путь работает и в Cloud, и в QR. В Cloud при закрытом окне передайтеtemplate_params, для этого нуженmessages:send.template. Отправка здесь идёт в фоне: если сообщение не уйдёт, позже оно станетfailed, причина будет вcontent_attributes.external_error. Для автоматических уведомлений путь из шага 4 проще. -
10
Частые ошибки
/v1/whatsapp/messagesвызывается для номера QR, и приходит 422 «This API requires a WhatsApp Cloud API inbox». Проверяйтеsendable.- Неверное имя шаблона или код языка, либо шаблон не синхронизирован в панели: 422 «No approved template named».
- Число параметров не совпадает с шаблоном, и Meta отклоняет сообщение: статус становится
failed. Сверяйтесь сexample_parameters. - Отправка повторяется без
source_reference, и клиент получает два кода. sentчитается как «доставлено». Доставку показываетdelivered.- В QR приходит 463 или
recipient_restricted, и сообщение автоматически повторяется. Не повторяйте: WhatsApp считает каждую попытку отдельно и продлевает ограничение. - Первое сообщение отправляется контакту со скрытым номером (
identifierзаканчивается на@lid). Клиент должен сначала написать сам или поделиться номером. - Маркетинг уходит без согласия. Жалобы снижают качество номера и его дневной лимит.
Все endpoint сообщений: Scope и endpoint: диалоги и сообщения.