Что это такое
Шаблоны WhatsApp — это предварительно одобренные структуры сообщений, используемые для начала или продолжения диалогов за пределами окна обслуживания клиентов. Шаблон идентифицируется по WABA, имени и языку. Используйте это руководство для управления жизненным циклом API и поддержания стабильности рабочих шаблонов между командами, версиями и локалями.Перед началом работы
- Подключите WABA, которой будет принадлежать шаблон.
- Выберите категорию шаблона, поддерживаемый язык, имя и компоненты.
- Подготовьте репрезентативные примеры переменных и медиафайлов, необходимые для проверки.
- Соблюдайте правила Meta для аутентификационного, сервисного (utility) и маркетингового контента.
- Настройте конечную точку Webhook, способную принимать события
whatsapp.template.reviewed.
Как это работает
- Создайте шаблон в WABA.
- Сохраните его имя, язык, категорию и текущий
status. - Дождитесь одобрения, если требуется проверка.
- Получайте данные шаблона или список шаблонов для отслеживания изменений статуса.
- Отправляйте только те шаблоны, которые подходят для целевого сценария использования и находятся в статусе, допускающем отправку.
- Редактируйте или удаляйте шаблон при изменении его контента или жизненного цикла.
Запрос
POST /whatsapp/templates
Ответ
PENDING не означает, что шаблон уже можно отправлять.
Определение стабильного идентификатора ресурса
Рассматривайте каждую комбинацию WABA, имени шаблона и языка как единый ресурс. Ведите реестр ресурсов с указанием владельцаwabaId, постоянного имени, точного кода локали, назначения, владельца, контракта переменных, текущего статуса API, состояния развертывания и версии для замены.
Используйте предсказуемые имена, например <domain>_<purpose>_v<major>:
auth_login_otp_v1orders_pickup_ready_v2growth_summer_offer_v3
Выбор категории перед написанием контента
Выбирайте категорию исходя из причины, по которой клиент получает сообщение.
Если шаблон объединяет транзакционную информацию с рекламой, оформите его как маркетинговый или разделите цели на отдельные шаблоны.
Фиксация контракта переменных
Определите переменные как контракт API до того, как копирайтеры или переводчики приступят к работе. Для каждой переменной зафиксируйте ее позицию, смысловое значение, формат, источник, репрезентативный пример и поведение по умолчанию (fallback). Например,Order {{0}} is ready at {{1}}. может использовать следующий контракт:
Сохраняйте значение каждой позиции неизменным в разных версиях и локалях. Создайте новую версию, если вам необходимо изменить порядок или назначение переменных.
Перед отправкой:
- Предоставьте безопасный репрезентативный образец для каждой переменной в тексте сообщения (body) или текстовом заголовке.
- Проверьте URL-адреса, форматы и размеры файлов медиазаголовков.
- Используйте не более одной переменной в текстовом заголовке и укажите ее образец.
- Убедитесь, что переменные в кнопках-ссылках (URL) используются только там, где это разрешено API, и приложите полный образец URL.
- Никогда не используйте учетные данные, одноразовые коды, персональные данные или приватные медиафайлы в примерах для проверки.
Организация локалей в рамках одного релиза
Повторно используйте одно и то же версионированное имя для всех локалей в одном релизе, но управляйте каждой паройname и language как отдельным ресурсом. Сохраняйте согласованность значений переменных и действий кнопок, даже если порядок слов меняется.
Утверждайте и выпускайте каждую локаль независимо. Никогда не перенаправляйте пользователя на другой язык только потому, что эта локаль уже одобрена. Используйте точный, чувствительный к регистру код локали в запросах на создание, получение, редактирование, удаление и отправку.
Ограничение отправки по статусу шаблона
Используйте получение данных или Webhook-уведомленияwhatsapp.template.reviewed для обработки одобрения, отклонения, приостановки, отключения, архивации и других изменений жизненного цикла. Сохраняйте точное имя и язык, используемые в запросах сообщений.
Храните API-status отдельно от состояния развертывания. Направляйте рабочие отправки только на тот шаблон, чей текущий статус — APPROVED, а состояние развертывания — активное.
Успешный ответ на создание или редактирование не дает разрешения на отправку в рабочей среде.
Синхронизация состояния
Используйте Webhook для оперативных обновлений, а API получения или списков — для сверки данных:- Проверяйте подпись каждого события
whatsapp.template.reviewed. - Дедуплицируйте доставку по
idсобытия. - Идентифицируйте ресурс по
wabaId,nameиlanguage. - Сохраняйте как событие обновления, так и текущий
status. - Немедленно прекращайте маршрутизацию, если текущий статус отличается от
APPROVED. - Запрашивайте шаблон, если событие пропущено, задержано или конфликтует с более новым состоянием реестра.
- Выполняйте регулярную постраничную сверку списков для выявления расхождений.
Особенности редактирования и удаления
- Редактируйте только шаблоны в статусе, поддерживаемом эндпоинтом.
- Включайте полный желаемый набор компонентов в запрос на редактирование.
- Удаление по имени удаляет все языковые версии с этим именем.
- Удаление по имени и языку удаляет только указанную локализацию шаблона.
- Архивированные шаблоны могут по-прежнему отображаться в результатах списков и запросов.
Релиз, откат и вывод версий из эксплуатации
Для существенных изменений предпочтительнее создавать параллельную версию:- Создайте новое имя с версией для каждой необходимой локали. Оставьте текущую одобренную версию без изменений.
- Дождитесь, пока каждая целевая локаль получит статус
APPROVED, затем проверьте ее переменные, медиафайлы, кнопки, категорию и отображаемый контент. - Направьте контролируемую часть подходящих отправок на новую версию и отслеживайте доставку, качество, ответы и обновления статуса.
- Переводите оставшийся трафик только после того, как новая версия будет соответствовать вашим критериям развертывания.
Ограничения и устранение неполадок
- Запрос на отправку завершается с ошибкой, если шаблон не одобрен или его компоненты не соответствуют параметрам сообщения.
- Шаблоны аутентификации используют строго ограниченные предустановленные структуры.
- Категория и контент шаблона должны соответствовать политикам Meta.
- Ознакомьтесь с подробностями отклонения перед повторным созданием того же контента.
- Используйте новое имя, если удаленный или существенно измененный шаблон нельзя безопасно восстановить.
Чек-лист перед запуском
- Имя, назначение, владелец, категория и версия зафиксированы.
- Каждая переменная имеет одно значение, формат, безопасный пример и правило резервного значения.
- Медиафайлы и кнопки проходят проверку формата, целевых ссылок и примеров.
- Каждая требуемая локаль независимо переведена в статус
APPROVED. - Маршрут отправки отклоняет любой статус, кроме
APPROVED. - Обработка Webhook проверена, идемпотентна и синхронизирована с получением данных через API.
- Процесс развертывания позволяет восстановить предыдущую одобренную версию.
- Очереди, кампании, конфигурации, тесты и регламенты используют нужную версию.
Поддерживаемые языки
Выберите точный код языка и региональной локали для шаблона.
Примеры создания шаблонов
Адаптируйте шаблоны аутентификации, маркетинга, служебных уведомлений, коммерции, Flow и звонков.
API создания шаблонов
Ознакомьтесь с полной схемой компонентов.
Webhook проверки шаблонов
Обрабатывайте изменения статуса проверки и жизненного цикла.

