Скилл WhatsApp API для ИИ агентаЕщё
1msg official logo

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

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

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

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

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

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

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

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

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

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

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

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

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

    POST /sendTemplate

  2. Захватить событие

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

    phone: "+…"

  3. Персонализированный маркетинг после посещения

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

    POST /sendTemplate

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

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

    delivered

  5. Результат доставки зафиксирован

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

    POST /sendTemplate

WhatsApp Business API for post-visit marketing message

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

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

  1. Ключ API 1MSG · Как получить API ключ
  2. Бизнес-аккаунт WhatsApp · Как подключить 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_COMPANYORSPECIALISTNAME="___"         # {{2}} company or specialist name
TEST_SERVICE="___"         # {{3}} service name
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_COMPANYORSPECIALISTNAME=$TEST_COMPANYORSPECIALISTNAME" \
            "TEST_SERVICE=$TEST_SERVICE" \
            "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}} company or specialist name → ${TEST_COMPANYORSPECIALISTNAME}
# {{3}} service name → ${TEST_SERVICE}
# {{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_COMPANYORSPECIALISTNAME}" },
        { "type": "text", "text": "${TEST_SERVICE}" },
        { "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 и 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 в рамках второго касания по акции, которая уже идет и скоро закончится.
Маркетинговые кампании
WhatsApp Business API для персональных предложений
Сценарий отправляет персонализированный шаблон маркетинга в WhatsApp, когда CRM делит базу на сегменты аудитории и назначает условия предложений для каждого.
Маркетинговые кампании
WhatsApp Business API для рассылки контента для вовлечения клиентов
Сценарий отправляет персонализированный шаблон WhatsApp при публикации образовательного или развлекательного контента для контактов, давших согласие.
Маркетинговые кампании
WhatsApp Business API для постпродажного взаимодействия
Сценарий отправляет персонализированный шаблон WhatsApp после покупки при наличии предложения — пополнение или сопутствующий товар.
Маркетинговые кампании
WhatsApp Business API для сезонной рассылки кампании
Сценарий отправляет персонализированный маркетинговый шаблон WhatsApp, когда начинается сезонная кампания по календарю.
Маркетинговые кампании
WhatsApp Business API для рассылки каталогов товаров и услуг
Сценарий отправляет персонализированный маркетинговый шаблон WhatsApp контактам, давшим согласие, когда бизнес публикует или обновляет весь каталог.

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