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

WhatsApp Business API для уведомления нового менеджера по лидам

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

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

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

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

🔔 Новый лид: {{1}}

Контакт: {{2}}

Источник: {{3}}

Свяжитесь с клиентом при первой возможности, пока интерес не остыл.

Открыть в CRM
  • {{1}}
    имя лида или короткая метка (например, Алексей К., B2B-запрос)
  • {{2}}
    лид-контакт (телефон, email или объединённый контакт)
  • {{3}}
    источник лида (например, форма на сайте, реклама в Instagram, рекомендация от партнёра)
  • “Открыть в CRM”
    кнопка — закреплено в шаблоне Meta
WhatsApp Business API for new lead manager notification

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

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

Быстрый отклик на горячие лиды
CRM или интеграция для захвата лидов отправляет событие «новый лид», и утверждённый шаблон поступает на телефон менеджера с именем лида, контактом и источником как три переменные в теле — прежде чем интерес остынет в папке «Входящие».
Оповещения, которые сначала идут на мобильный
Сообщение приходит в WhatsApp на телефон менеджера вместо электронной почты, поэтому представитель видит лид, не открывая панель управления; только утверждённый шаблон может начать разговор, если чат не открыт.
Одно касание в запись CRM
Статическая кнопка URL в шаблоне Meta открывает запись лида в CRM, чтобы менеджеру не пришлось искать новую запись после прочтения уведомления — через API отправляются только три переменные в теле.
Учёт доставки для аналитики маршрутизации
Результат отправки фиксируется в журнале после доставки, чтобы CRM или маршрутизация могли отслеживать, дошло ли уведомление до назначенного менеджера.

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

  1. Отследить событие

    CRM или интеграция захвата лидов генерирует событие «новый лид».

    phone: "+…"

  2. Решает вопрос с телефоном менеджера

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

    phone: "+…"

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

    Внутренний шаблон уведомления состоит из трёх переменных в теле и кнопки с постоянным URL.

    POST /sendTemplate

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

    Менеджер получает сообщение WhatsApp на свой телефон.

    delivered

  5. Статус отслеживается

    Результат доставки зафиксирован; менеджер открывает CRM через кнопку, чтобы продолжить работу.

    status: "read"

WhatsApp Business API for new lead manager notification

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

Предпосылки

  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 ===
MANAGER_PHONE="___"                 # manager phone in international format
TEST_LEADNAME="___"         # {{1}} lead name
TEST_LEADCONTACT="___"         # {{2}} lead contact
TEST_LEADSOURCE="___"         # {{3}} lead source

PHONE_NORM="$(printf '%s' "$MANAGER_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" "MANAGER_PHONE=$MANAGER_PHONE" \
            "TEST_LEADNAME=$TEST_LEADNAME" \
            "TEST_LEADCONTACT=$TEST_LEADCONTACT" \
            "TEST_LEADSOURCE=$TEST_LEADSOURCE"; 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}} lead name → ${TEST_LEADNAME}
# {{2}} lead contact → ${TEST_LEADCONTACT}
# {{3}} lead source → ${TEST_LEADSOURCE}
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_LEADNAME}" },
        { "type": "text", "text": "${TEST_LEADCONTACT}" },
        { "type": "text", "text": "${TEST_LEADSOURCE}" }
      ]
    }

  ]
}
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 manager."
    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[] payload.

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

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

  • id

    Соотносит обратный вызов с idответом вызова send

  • 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 для каталога товаров — интерактивный список
Этот сценарий отправляет интерактивный список с помощью sendList в течение 24-часового окна сеанса.
Вовлечение и конверсия лидов
WhatsApp Business API для консультаций перед покупкой
Сценарий отправляет клиенту персонализированный шаблон сообщения WhatsApp с приглашением на консультацию перед покупкой.
Вовлечение и конверсия лидов
WhatsApp Business API для квалификации лидов с ключевыми вопросами
Этот кейс отправляет новому лиду одобренный шаблон WhatsApp с персонализированным приветствием: подставляются имя лида и продукт, а также быстрый ответ «Начать»
Вовлечение и конверсия лидов
WhatsApp Business API для повторного обращения к лиду без ответа
Сценарий отправляет лиду персонализированный шаблон WhatsApp, если он не ответил на предыдущее продажное сообщение в ожидаемое время.
Вовлечение и конверсия лидов
WhatsApp Business API для передачи лида в отдел продаж
Сценарий отправляет клиенту персонализированный шаблон WhatsApp, когда квалифицированный лид передаётся в отдел продаж.
Вовлечение и конверсия лидов
WhatsApp Business API для первого контакта с новым лидом
Сценарий отправляет лиду персонализированный шаблон WhatsApp как первое касание в продажах.
Вовлечение и конверсия лидов
WhatsApp Business API для отправки коммерческих предложений
Сценарий отправляет потенциальному клиенту персонализированный шаблон WhatsApp, когда готово коммерческое предложение.

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