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

WhatsApp Business API для постпродажного взаимодействия

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

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

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

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

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

Просмотреть предложение
  • {{1}}
    имя клиента
  • {{2}}
    название продукта из предыдущей покупки
  • {{3}}
    детали предложения для повторной покупки (повторный заказ, сопутствующий товар, следующая услуга)
  • “Просмотреть предложение”
    кнопка — исправлено в шаблоне Meta
WhatsApp Business API for post-purchase follow-up offer

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

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

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

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

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

    Платформа для электронной торговли или CRM запускает постпродажный триггер, когда заказ становится подходящим.

    POST /sendTemplate

  2. Фиксировать событие

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

    phone: "+…"

  3. Персонализированное предложение

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

    POST /sendTemplate

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

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

    delivered

  5. Отслежено состояние

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

    status: "read"

WhatsApp Business API for post-purchase follow-up offer

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

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

  1. Ключ API для 1MSG · Как получить ключ API
  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_PRODUCTNAME="___"         # {{2}} product name
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_PRODUCTNAME=$TEST_PRODUCTNAME" \
            "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 name → ${TEST_PRODUCTNAME}
# {{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_PRODUCTNAME}" },
        { "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

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

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

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

  • id

    Сопоставляет обратный вызов с idзначением, возвращенным вызовом send

  • timestamp

    Unix-секунды в виде строки

If you would rather not receive callbacks, poll GET {base}/{channel}/hookInfo?messageId=<id> instead. In practice delivery often completes within seconds — but the API contract does not guarantee it, so never block a flow waiting on it.

Частые ошибки

СтатусОтветПричина
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, когда CRM делит базу на сегменты аудитории и назначает условия предложений для каждого.
Маркетинговые кампании
WhatsApp Business API для рассылки контента для вовлечения клиентов
Сценарий отправляет персонализированный шаблон WhatsApp при публикации образовательного или развлекательного контента для контактов, давших согласие.
Маркетинговые кампании
WhatsApp Business API для сезонной рассылки кампании
Сценарий отправляет персонализированный маркетинговый шаблон WhatsApp, когда начинается сезонная кампания по календарю.
Маркетинговые кампании
WhatsApp Business API для рассылки каталогов товаров и услуг
Сценарий отправляет персонализированный маркетинговый шаблон WhatsApp контактам, давшим согласие, когда бизнес публикует или обновляет весь каталог.
Маркетинговые кампании
WhatsApp Business API для рассылки новым клиентам
Сценарий отправляет персонализированный шаблон WhatsApp, когда в каталоге появляются новые товары или коллекция.
Маркетинговые кампании
WhatsApp Business API для рассылки промо-баннеров
Сценарий отправляет персонализированный шаблон WhatsApp, когда отдел маркетинга запускает визуальную кампанию.

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