💬 Командный WhatsApp-Инбокс на новой ПлатформеЕщё
1msg official logo

WhatsApp Business API для рассылки персональных рекомендаций товаров

Сценарий отправляет персонализированный шаблон WhatsApp, когда рекомендательный движок подбирает несколько товаров для контакта.

Обзор сценария

Сценарий отправляет персонализированный шаблон WhatsApp для маркетинга, когда рекомендательная система или мерчендайзер подготавливает подборку нескольких товаров для контакта. Сообщение включает имя клиента, контекст просмотра или покупки, на основании которого сделан выбор, и короткую заметку о подборке. Статическая кнопка URL открывает страницу с персональными рекомендациями одним нажатием.

Пример шаблона

Здравствуйте, {{1}}! На основании {{2}}мы подготовили для вас персональную подборку.{{3}} Нажмите кнопку ниже, чтобы открыть ваши рекомендации.

Просмотреть выбор
  • {{1}}
    имя клиента
  • {{2}}
    контекст просмотра или покупки, который повлиял на выбор продуктов
  • {{3}}
    примечание к подобранной коллекции (например, количество товаров, тема или изменения мерчандайзера)
  • “Просмотреть выбор”
    кнопка — исправлена в шаблоне Meta
WhatsApp Business API for personal product recommendations broadcast

Когда использовать это

Используйте этот сценарий, когда у вас уже есть контакты в WhatsApp с согласием, а система рекомендаций или мерчендайзер может составить короткий список из нескольких товаров для каждого человека — на основе истории просмотров, прошлых заказов или ручного редактирования — без отправки всего каталога или одной общей акции. Он подходит для интернет-магазинов, предлагающих персонализированные подборки, брендов с товарами для пополнения, рекомендующих дополнительные продукты, и агентств, подключающих CRM или рекомендательные триггеры в рассылки WhatsApp для клиентских брендов.

Рекомендации вместо перегруженного каталога
Сообщение открывает страницу с персональной подборкой, где для этого контакта выбраны несколько товаров, чтобы он увидел подходящий краткий список вместо полного ассортимента или случайного товара.
Рекомендации на основе реальных поведенческих сигналов
Три переменные в теле содержат имя клиента, контекст просмотра или покупки, а также заметку о выборе, поэтому рассылка воспринимается как персонализированная мерчендайзинг, а не массовая рассылка.
Отправка сообщений за пределами 24-часового окна в рамках правил
Утвержденный шаблон для MARKETING отправляет ссылку для выбора в WhatsApp, даже если беседа еще не открыта, поэтому рекомендации доходят до контактов, которые дали согласие, без необходимости ждать их первого сообщения.
Меньше ручной работы на контакт
Рекомендательная система или CRM заполняет контекстные поля, и шаблон отправляется по этому триггеру — ни один сотрудник не перестраивает списки и не вводит вручную заметки для каждого клиента.
Отслеживание доставки кампаний для сегментов аудитории
Результаты доставки фиксируются для аналитики рекомендательной кампании, чтобы маркетинг мог измерить охват до отслеживания кликов и конверсий на странице персонального подбора.

Как это работает

  1. Действия клиента

    Рекомендательная система или CRM отмечает контакт как подходящий для персонализированного подбора товаров.

    user action

  2. Отслеживание события

    Система определяет номер телефона и поля контекста просмотра или покупки.

    phone: "+…"

  3. Собрать и отправить

    Шаблон персонализированных рекомендаций создается с тремя переменными в теле и статической кнопкой URL.

    POST /sendTemplate

  4. Доставлено

    Контакт, давший согласие, получает сообщение в WhatsApp с ссылкой на выбранные материалы.

    delivered

  5. Отслеживаемый статус

    Результаты доставки записываются для отслеживания эффективности рекомендательной кампании.

    status: "read"

WhatsApp Business API for personal product recommendations broadcast

Техническая реализация

Предварительные условия

  1. 1MSG API ключ · Как получить API Key
  2. Аккаунт WhatsApp Business · Как подключить WABA
  3. Шаблон WhatsApp · Как одобрить шаблон WABA
  4. Согласие клиента · Как управлять согласием клиентов

Примеры кода

#!/usr/bin/env bash
set -euo pipefail

# === Configuration (replace "___" placeholders) ===

API_BASE_URL="https://api.1msg.io"        # production 1MSG API base URL
CHANNEL_ID="___"                           # channel ID from 1MSG dashboard
API_TOKEN="___"                            # channel JWT token (Bearer)

TEMPLATE_NAME="___"                        # approved template name
TEMPLATE_NAMESPACE="___"                   # template namespace (required — send fails without it)
TEMPLATE_LANGUAGE="___"                    # template language code, e.g. "en"



# === Test data ===
TEST_PHONE="___"                 # client phone in international format
TEST_CUSTOMERNAME="___"         # {{1}} customer name
TEST_PRODUCTCONTEXT="___"         # {{2}} product context
TEST_ADDITIONALINFO="___"         # {{3}} additional info

PHONE_NORM="$(printf '%s' "$TEST_PHONE" | tr -cd '0-9')"

for pair in "CHANNEL_ID=$CHANNEL_ID" "API_TOKEN=$API_TOKEN" \
            "TEMPLATE_NAME=$TEMPLATE_NAME" "TEMPLATE_NAMESPACE=$TEMPLATE_NAMESPACE" \
            "TEMPLATE_LANGUAGE=$TEMPLATE_LANGUAGE" "TEST_PHONE=$TEST_PHONE" \
            "TEST_CUSTOMERNAME=$TEST_CUSTOMERNAME" \
            "TEST_PRODUCTCONTEXT=$TEST_PRODUCTCONTEXT" \
            "TEST_ADDITIONALINFO=$TEST_ADDITIONALINFO"; do
    val="${pair#*=}"
    if [ -z "$val" ] || [ "$val" = "___" ]; then
        echo "Missing configuration value: ${pair%%=*}" >&2
        exit 1
    fi
done

if [ -z "$PHONE_NORM" ]; then
    echo "Error: phone number has no digits after normalization" >&2
    exit 1
fi

URL="${API_BASE_URL%/}/${CHANNEL_ID}/sendTemplate"

# params carries body ONLY. Button text is fixed in the Meta template — no button param.

# {{1}} customer name → ${TEST_CUSTOMERNAME}
# {{2}} product context → ${TEST_PRODUCTCONTEXT}
# {{3}} additional info → ${TEST_ADDITIONALINFO}
read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "template": "${TEMPLATE_NAME}",
  "namespace": "${TEMPLATE_NAMESPACE}",
  "language": { "policy": "deterministic", "code": "${TEMPLATE_LANGUAGE}" },
  "params": [
    {
      "type": "body",
      "parameters": [
        { "type": "text", "text": "${TEST_CUSTOMERNAME}" },
        { "type": "text", "text": "${TEST_PRODUCTCONTEXT}" },
        { "type": "text", "text": "${TEST_ADDITIONALINFO}" }
      ]
    }

  ]
}
JSON

RESPONSE="$(curl -s -w '\n%{http_code}' -X POST "$URL" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${API_TOKEN}" \
    -d "$PAYLOAD")"

HTTP_CODE="$(printf '%s' "$RESPONSE" | tail -n1)"
BODY="$(printf '%s' "$RESPONSE" | sed '$d')"

case "$BODY" in
    *'"sent":true'*) ok=1 ;;
    *) ok=0 ;;
esac

if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ] && [ "$ok" -eq 1 ]; then
    echo "Message sent to client."
    echo "API response: $BODY"
else
    echo "Send failed. HTTP status: $HTTP_CODE" >&2
    echo "$BODY" >&2
    exit 1
fi

Статус ответа и доставки

HTTP 2xx и JSON "sent": trueозначают, что 1MSG приняла сообщение для отправки — не что оно уже доставлено на телефон клиента. Сохраните idполе (выглядит как wamid.…) для сопоставления уведомлений о доставке.

200 OKОтвет
{
  "sent": true,
  "id": "wamid.HBgLMzgwNjM5...",
  "message": "Message accepted for delivery"
}
  • sent

    Принято для отправки — еще не на телефоне клиента

  • id

    Сохраните это: обратные вызовы доставки и hookInfo привязаны к этому ключу

Доставка приходит позже, отдельным callback. Зарегистрируйте вебхук (POST …/webhook), и 1MSG отправит обновления статуса на ваш HTTPS endpoint в основных hooks[] данных.

200 OKВебхук статуса доставки — данные, которые вы получаете
{
  "hooks": [
    {
      "id": "gBGGeSaGViBfAgnlzOSHEwK9O6F",
      "type": "message",
      "status": "sent",
      "timestamp": "1654864094",
      "recipient_id": "556123122026"
    }
  ]
}
  • status

    sent, delivered, read — или статус ошибки, если это возможно

  • id

    Соотносит колбэк с id, который возвращает вызов send

  • timestamp

    Строка с Unix-временем в секундах

Если вы предпочитаете не использовать обратные вызовы, вместо этого опрашивайте API. На практике доставка часто завершается за несколько секунд, но GET {base}/{channel}/hookInfo?messageId=<id>API контракт этого не гарантирует, поэтому никогда не блокируйте выполнение, ожидая этого

Распространенные ошибки

СтатусОтветПричина
200Message was not sent: template is not definednamespace, template or language missing from the request body.
200template name (…) does not exist in <language>The template is approved in a different language than the one requested.
200Message was not sent: provide chatId, phone, bsuid, or usernameNo recipient the channel could resolve.
403access deniedThe token is wrong, or belongs to a different channel than the URL.
429too many requests. please try laterThe channel is over its send rate.

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Да, для отправки холодных сообщений в WhatsApp нужен одобренный Meta шаблон.

Связанные

Маркетинговые кампании
WhatsApp Business API для поствизитного маркетинга сообщений
Сценарий отправляет персонализированный маркетинговый шаблон WhatsApp вскоре после визита, поездки в шоурум, консультации или телефонного разговора.
Маркетинговые кампании
WhatsApp Business API для анонсирования запуска продукта
Сценарий отправляет персонализированный маркетинговый шаблон в WhatsApp при запуске единственного указанного продукта, услуги, тарифа или функции.
Маркетинговые кампании
WhatsApp Business API для напоминания о крайнем сроке предложения
Сценарий отправляет персонализированный шаблон WhatsApp в рамках второго касания по акции, которая уже идет и скоро закончится.
Маркетинговые кампании
WhatsApp Business API для персональных предложений
Сценарий отправляет персонализированный шаблон маркетинга в WhatsApp, когда CRM делит базу на сегменты аудитории и назначает условия предложений для каждого.
Маркетинговые кампании
WhatsApp Business API для рассылки контента для вовлечения клиентов
Сценарий отправляет персонализированный шаблон WhatsApp при публикации образовательного или развлекательного контента для контактов, давших согласие.
Маркетинговые кампании
WhatsApp Business API для постпродажного взаимодействия
Сценарий отправляет персонализированный шаблон WhatsApp после покупки при наличии предложения — пополнение или сопутствующий товар.
Маркетинговые кампании
WhatsApp Business API для сезонной рассылки кампании
Сценарий отправляет персонализированный маркетинговый шаблон WhatsApp, когда начинается сезонная кампания по календарю.
Маркетинговые кампании
WhatsApp Business API для рассылки каталогов товаров и услуг
Сценарий отправляет персонализированный маркетинговый шаблон WhatsApp контактам, давшим согласие, когда бизнес публикует или обновляет весь каталог.

Интегрируйте WhatsApp за часы
без проблем с инфраструктурой