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

WhatsApp Business API para aviso de oferta limitada

O cenário envia um modelo de marketing personalizado pelo WhatsApp como o segundo contato de uma promoção que já está em andamento e prestes a encerrar.

Visão geral do caso de uso

O cenário envia um template de marketing personalizado pelo WhatsApp como o segundo contato de uma promoção que já está em andamento e prestes a encerrar. A mensagem inclui o nome do cliente, a oferta que já foi mencionada, a data limite de encerramento e uma linha de urgência de última chance. Um botão de URL estático abre a mesma página de oferta da primeira transmissão.

Exemplo de modelo

Olá{{1}}! Uma rápida lembrança: a oferta em{{2}}termina{{3}}. {{4}}Toque no botão abaixo para reivindicá-lo antes que o tempo acabe.

Reivindique antes do prazo
  • {{1}}
    nome do cliente
  • {{2}}
    promoção ou produto sobre o qual o contato já foi informado na primeira transmissão
  • {{3}}
    prazo de fechamento da oferta (data ou hora)
  • {{4}}
    última chance, urgência (ex: horas restantes, lembrete final)
  • “Reivindique antes do prazo”
    botão — fixo no template Meta
WhatsApp Business API for limited-time offer deadline reminder

Quando usá-lo

Use este cenário quando uma promoção por tempo limitado já estiver ativa, os contatos receberam o primeiro anúncio e o prazo final está se aproximando, mas muitos ainda não converteram — não quando você está lançando a oferta pela primeira vez. Ele se adequa a empurrões de última hora para vendas relâmpago, janelas de atualização de SaaS prestes a expirar e agências que estão fazendo um segundo contato com não respondentes de uma transmissão promocional anterior. Não é para abordagens frias, lançamentos sazonais genéricos ou lembretes de pagamento ou ação de utilidades não relacionadas a um prazo de marketing.

Converter contatos que já viram a oferta
O lembrete é direcionado a não-convertidos da primeira transmissão, então o envio vai para pessoas que já conhecem a promoção em vez de reabrir um impulso de marketing frio.
Enquadramento de prazos que cria urgência
Quatro variáveis do corpo carregam o nome do contato, a oferta da qual foram informados, o prazo de fechamento e uma linha de última chance, para que a mensagem seja lida como um acompanhamento sensível ao tempo, em vez de um anúncio repetido.
Um toque para voltar à mesma página de oferta.
Um botão de URL estático fixo no modelo Meta reabre a página de promoção, permitindo que o contato aja antes que a janela feche, sem esperar dentro do período de resposta de 24 horas.
Menos acompanhamento manual de última chance
O CRM sinaliza os não-convertidos à medida que o prazo se aproxima e o template é enviado com esse gatilho — nenhum representante refaz a lista ou digita a cópia de urgência para cada contato.
Rastreamento de conversões na última hora
Os resultados das entregas são registrados para o grupo de lembrete, para que o marketing possa comparar os envios de última chance com as conversões antes que a promoção se feche.

Fluxo de Trabalho

  1. Desencadear

    O CRM ou a automação de marketing sinaliza os não-convertidos da primeira transmissão promocional à medida que o prazo se aproxima.

    event · triggered

  2. Capturar evento

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

    phone: "+…"

  3. Construa e envie

    Um template de lembrete de prazo personalizado é construído com quatro variáveis de corpo e um botão de URL estático.

    POST /sendTemplate

  4. Entregue

    Cada contato alvo recebe a mensagem de lembrete de última chance pelo WhatsApp.

    delivered

  5. Status monitorado

    Os resultados de entrega são registrados para o rastreamento de conversão de campanhas da última hora.

    status: "read"

WhatsApp Business API for limited-time offer deadline reminder

Implementação técnica

Pré-requisitos

  1. 1MSG Chave da API · Como obter a chave da API
  2. Conta WhatsApp Business · Como Conectar WABA
  3. Modelo de WhatsApp · Como Aprovar o Modelo 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_PRODUCTORSERVICENAME="___"         # {{2}} product or service name
TEST_DATE="___"         # {{3}} date or time
TEST_ADDITIONALINFO="___"         # {{4}} 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_PRODUCTORSERVICENAME=$TEST_PRODUCTORSERVICENAME" \
            "TEST_DATE=$TEST_DATE" \
            "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 or service name → ${TEST_PRODUCTORSERVICENAME}
# {{3}} date or time → ${TEST_DATE}
# {{4}} 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_PRODUCTORSERVICENAME}" },
        { "type": "text", "text": "${TEST_DATE}" },
        { "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

Status de resposta e entrega

HTTP 2xx e JSON"sent": true1MSGaceitoa mensagem para envio — não que já tenha chegado ao telefone do cliente.idcampowamid.…) para correlacionar chamadas de retorno 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 entrega.hookInfosão focados nisso

A entrega em si chega mais tarde, como um retorno separado. Registre um webhook (POST …/webhook) e 1MSG envia atualizações de status para o 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

    Correlaciona o callback com oidretornado pela chamada de envio

  • timestamp

    Segundos Unix, como uma string

Se você preferir não receber retornos, participe da enquete.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 de WhatsApp de inicialização a frio exigem um modelo aprovado pela Meta.

Relacionado

Campanhas de Marketing
WhatsApp Business API para mensagem de marketing pós-visita
O cenário envia um modelo de marketing personalizado via WhatsApp logo após uma visita presencial, passeio pelo showroom, consulta ou contato telefônico.
Campanhas de Marketing
WhatsApp Business API para anúncio de lançamento de produto
O cenário envia um modelo de marketing personalizado pelo WhatsApp quando um único produto, linha de serviço, tarifa ou recurso é lançado.
Campanhas de Marketing
WhatsApp Business API para recomendações por broadcast
O cenário envia um template de marketing pelo WhatsApp quando um mecanismo de recomendação ou merchandiser prepara uma seleção de itens para um contato.
Campanhas de Marketing
WhatsApp Business API para difusão de ofertas pessoais
O cenário envia um modelo de marketing por WhatsApp quando o CRM divide uma base com consentimento em segmentos de público e atribui termos de oferta a cada um.
Campanhas de Marketing
WhatsApp Business API para engajamento de conteúdo
O cenário envia um template de marketing pelo WhatsApp quando a empresa publica conteúdo educacional ou de entretenimento para contatos optados.
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.

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