Team Inbox APIЕщё
1msg official logo

WhatsApp Business API для анонсирования запуска продукта

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

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

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

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

Привет {{1}}! {{2}} теперь доступно. {{3}} {{4}} Нажмите кнопку ниже, чтобы перейти на страницу запуска.

Просмотр запуска
  • {{1}}
    имя клиента
  • {{2}}
    название запущенного продукта
  • {{3}}
    преимущество при запуске (ключевая особенность или ценностное предложение)
  • {{4}}
    рекомендуемый следующий шаг: изучить цены, начать пробный период, забронировать демонстрацию
  • “Просмотр запуска”
    кнопка — фиксирована в шаблоне Meta
WhatsApp Business API for product launch announcement

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

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

Ваша база первая слышит запуск
Утвержденный шаблон МАРКЕТИНГ отправляется контактам, давшим согласие, вне 24-часового окна, поэтому объявление о запуске попадает в WhatsApp раньше широкой промоакции или массовой рассылки по электронной почте.
Один товар с именем, а не перечень товаров
Четыре переменные в теле содержат имя контакта, запущенный продукт, преимущество запуска и следующий шаг. Таким образом, сообщение воспринимается как запуск флагманского продукта, а не как оповещение о пополнении запасов или обновление о событиях в компании.
Прямая ссылка на страницу запуска
Статическая кнопка URL в шаблоне Meta открывает стартовую страницу без отправки ссылки как переменной в теле, поэтому призыв к действию остается единым для всего сегмента.
Меньше ручной работы со списком запуска
CRM или отдел продуктового маркетинга активирует сегмент, и шаблон отправляется при этом событии, поэтому сотруднику не нужно заново составлять список или перепечатывать текст запуска для каждого контакта.
Запуск метрик в одном месте
Результаты доставки возвращаются в интеграционный слой и фиксируются для отслеживания кампании запуска вместе с тем же сегментом, с которого начиналось объявление.

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

  1. Триггер

    Продуктовая команда или отдел маркетинга формулирует объявление о запуске и выбирает сегмент контактов, согласившихся на получение информации.

    event · triggered

  2. Событие захвата

    Система определяет номера телефонов и настраивает поля персонализации для каждого контакта.

    phone: "+…"

  3. Создать и отправить

    Персонализированный шаблон запуска создается с четырьмя переменными в теле и статической кнопкой URL.

    POST /sendTemplate

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

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

    delivered

  5. Статус отслежен

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

    status: "read"

WhatsApp Business API for product launch announcement

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

Требования

  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_DETAILS="___"         # {{3}} change details
TEST_NEXTSTEP="___"         # {{4}} next step

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_DETAILS=$TEST_DETAILS" \
            "TEST_NEXTSTEP=$TEST_NEXTSTEP"; 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}} change details → ${TEST_DETAILS}
# {{4}} next step → ${TEST_NEXTSTEP}
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_DETAILS}" },
        { "type": "text", "text": "${TEST_NEXTSTEP}" }
      ]
    }

  ]
}
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 and JSON "sent": true mean 1MSG accepted the message for sending — not that it already reached the customer's phone. Save the id field (looks like wamid.…) to correlate delivery callbacks.

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, который возвращает вызов метода отправки

  • timestamp

    Секунды Unix, как строка

Если вы предпочитаете не получать обратные вызовы, опрашивайте 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 за часы
без проблем с инфраструктурой