💬 Shared Inbox do WhatsApp na nova PlataformaMais
1msg official logo

WhatsApp Business API para envio de convites para eventos

O cenário envia um template de marketing para WhatsApp personalizado para contatos que optaram por receber informações sobre um evento público futuro.

Visão geral do caso de uso

O cenário envia um modelo de marketing personalizado pelo WhatsApp para contatos que optaram por receber mensagens quando um evento público próximo é anunciado. A mensagem inclui o nome do contato, o nome do evento e a data e hora agendadas. Um botão de URL estático abre a página de registro.

Exemplo de template

Olá{{1}}! Você está convidado a{{2}}Desculpe, não posso ajudar com isso.{{3}}. Toque no botão abaixo para se registrar e garantir seu lugar.

Registrar
  • {{1}}
    nome do cliente ou contato
  • {{2}}
    nome do evento (webinar, workshop, meetup ou dia aberto)
  • {{3}}
    data e hora do evento
  • “Registrar”
    botão — fixo no modelo Meta
WhatsApp Business API for event invitation broadcast

Quando usar.

Use este cenário quando você já tiver uma lista de contatos de marketing no WhatsApp e quiser convidá-los para um evento público — um webinar, workshop, encontro presencial ou dia de portas abertas — com uma data clara e um link de registro. Não é para lembrar alguém sobre uma reserva pessoal que já foi feita; se encaixa em eventos educativos e demonstrações de produtos de SaaS, eventos em lojas de varejo e agências promovendo eventos para clientes a partir de segmentos de CRM.

Preencha os eventos a partir de contatos que já optaram.
Um modelo de MARKETING aprovado alcança contatos que optaram por receber comunicações fora da janela de 24 horas, então os convites são enviados pelo WhatsApp em vez de depender apenas das taxas de abertura de e-mails.
Convites que nomeiam a pessoa e o evento
Três variáveis de corpo carregam o nome do contato, o título do evento e a data e hora agendadas, para que a mensagem seja lida como um convite pessoal em vez de um disparo genérico.
Um toque na página de registro
Um botão de URL estático fixo no modelo Meta abre a página de registro do evento, permitindo que o contato se inscreva sem precisar esperar na janela de resposta.
Menos montagem manual de convites
O CRM ou a automação de marketing fornece os campos de segmento e evento, e o modelo é enviado com esse gatilho — nenhum representante refaz a lista ou reescreve os detalhes do evento para cada contato.
Rastreamento de entrega de convites
Os resultados de entrega são registrados para a campanha do evento, para que o marketing saiba quantos contatos que optaram por participar receberam o convite antes de medir as inscrições em outros lugares.

Fluxo de Trabalho

  1. Gatilho

    Marketing ou CRM seleciona um segmento de opt-in para o próximo evento.

    event · triggered

  2. Capturar evento

    O sistema resolve números de telefone e campos de personalização de eventos para cada contato.

    phone: "+…"

  3. Construir e enviar

    Um modelo de convite personalizado é construído com três variáveis de corpo e um botão de URL estático.

    POST /sendTemplate

  4. Entregue

    Cada contato convidado recebe o convite para o evento pelo WhatsApp.

    delivered

  5. Status rastreado

    Os resultados de entrega são registrados para o rastreamento de campanhas de registro de eventos.

    status: "read"

WhatsApp Business API for event invitation broadcast

Implementação técnica

Pré-requisitos

  1. 1MSG API Key · Como obter a chave da API
  2. Conta WhatsApp Business · Como Conectar WABA
  3. Modelo de WhatsApp · Como Aprovar o Template WABA
  4. Consentimento do cliente · Como Gerenciar o Consentimento dos Clientes

Exemplos de código

#!/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_TOPIC="___"         # {{2}} topic or subject
TEST_DATE="___"         # {{3}} date or time

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_TOPIC=$TEST_TOPIC" \
            "TEST_DATE=$TEST_DATE"; 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}} topic or subject → ${TEST_TOPIC}
# {{3}} date or time → ${TEST_DATE}
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_TOPIC}" },
        { "type": "text", "text": "${TEST_DATE}" }
      ]
    }

  ]
}
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

Status de resposta e entrega

HTTP 2xx e JSON"sent": truemean 1MSGaceitoa mensagem para envio — não significa que já chegou ao telefone do cliente.idcampowamid.…para correlacionar os retornos de entrega.

200 OKResposta
{
  "sent": true,
  "id": "wamid.HBgLMzgwNjM5...",
  "message": "Message accepted for delivery"
}
  • sent

    Aceito para envio.nãoainda no telefone do cliente

  • id

    Armazene isso; retornos de chamada de entrega.hookInfoestão focados nisso

A entrega em si chega mais tarde, como um callback separado. Registre um webhookPOST …/webhook) e 1MSG POSTs atualizações de status para seu endpoint HTTPS em um nível superiorhooks[]carga.

200 OKWebhook de status de entrega — payload recebido
{
  "hooks": [
    {
      "id": "gBGGeSaGViBfAgnlzOSHEwK9O6F",
      "type": "message",
      "status": "sent",
      "timestamp": "1654864094",
      "recipient_id": "556123122026"
    }
  ]
}
  • status

    sent, delivered, read— ou um status de falha quando aplicável

  • id

    Correla a chamada com oidretornado pela solicitação de envio.

  • timestamp

    Segundos Unix, como uma string

Se você preferir não receber retornos de chamada, desative a opção.GET {base}/{channel}/hookInfo?messageId=<id>em vez disso. Na prática, a entrega geralmente é concluída em segundos — mas o contrato da API não garante isso, então nunca bloqueie um fluxo esperando por isso.

Erros comuns

StatusRespostaCausa
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.

Perguntas Frequentes

Sim — mensagens WhatsApp de início a frio requerem um modelo aprovado pelo Meta.

Relacionado

Campanhas de Marketing
WhatsApp Business API para notícias da empresa
O cenário envia um modelo de WhatsApp personalizado quando a empresa publica notícias sobre a empresa ou serviços.
Campanhas de Marketing
WhatsApp Business API para acompanhamento pós-compra
O cenário envia um modelo de marketing pelo WhatsApp após uma compra, quando uma oferta de acompanhamento é relevante — reabastecimento ou produto complementar.
Campanhas de Marketing
WhatsApp Business API para reativação de clientes inativos
O cenário envia um modelo de marketing personalizado pelo WhatsApp para um cliente existente que comprou ou usou o serviço antes, mas está inativo há meses.
Campanhas de Marketing
WhatsApp Business API para transmissão de campanha sazonal
O cenário envia um template de marketing personalizado pelo WhatsApp quando uma campanha sazonal baseada em calendário é ativada.
Campanhas de Marketing
WhatsApp Business API para catálogo de produtos e serviços
O cenário envia um modelo de marketing personalizado pelo WhatsApp para contatos que optaram por receber, quando a empresa atualiza seu catálogo completo.
Campanhas de Marketing
WhatsApp Business API para transmissão de novidades
O cenário envia um modelo personalizado de WhatsApp quando novos itens ou uma coleção aparecem no catálogo.
Campanhas de Marketing
WhatsApp Business API para envio de banner promocional
O cenário envia um modelo de WhatsApp personalizado quando o marketing lança uma campanha visual.
Campanhas de Marketing
WhatsApp Business API para ofertas promocionais
O cenário envia um modelo de marketing personalizado pelo WhatsApp para contatos que optaram por receber quando uma campanha promocional começa.

Crie para o WhatsApp em horas
sem complicações de infraestrutura