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

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.

Visão geral do caso de uso

O cenário envia um modelo de marketing personalizado pelo WhatsApp para contatos que se inscreveram quando a empresa publica ou atualiza seu catálogo completo. A mensagem inclui o nome do cliente, o nome da empresa ou da marca, e uma breve nota sobre o que o catálogo abrange. Um botão de URL estático abre o catálogo online completo ou a lista de preços em um toque.

Exemplo de modelo

Olá{{1}}!{{2}}atualizou seu catálogo:{{3}}. Toque no botão abaixo para navegar por toda a gama de produtos e serviços em um só lugar.

Ver catálogo
  • {{1}}
    nome do cliente
  • {{2}}
    companhia ou nome da marca compartilhando o catálogo
  • {{3}}
    nota de escopo do catálogo (por exemplo, variedade completa, lista de preços atualizada)
  • “Ver catálogo”
    botão — fixo no modelo Meta
WhatsApp Business API for product and service catalog broadcast

Quando usar isso

Use esse cenário quando você já tiver uma lista de contatos no WhatsApp com opt-in e quiser que os contatos vejam o catálogo completo ou a lista de preços — todo o sortimento, não uma promoção de desconto e não uma lista de produtos personalizada. Isso se adapta ao compartilhamento de novas linhas de produtos com varejo e atacado, empresas de serviços enviando tabelas de preços para clientes e agências transmitindo catálogos de clientes a partir de segmentos de CRM.

Sortimento completo em um toque fora da janela de 24 horas.
Um modelo de MARKETING aprovado entrega o link do catálogo no WhatsApp mesmo quando nenhuma conversa está aberta, para que os contatos possam navegar por toda a gama sem esperar por uma resposta de sessão.
O catálogo envia o nome do cliente e da marca.
Três variáveis de corpo carregam o nome do contato, a empresa ou marca, e o que o catálogo abrange, de modo que a mensagem é lida como uma atualização de referência útil em vez de um disparo genérico.
Um link estático para toda a lista de preços
Um botão de URL fixo no template Meta abre a página do catálogo online ou da lista de preços, assim o contato vê todas as categorias em um só lugar em vez de voltar para escolher produtos.
Menos distribuição manual de catálogos
CRM ou automação de marketing fornece os campos de segmento e personalização, e o template é enviado com esse gatilho — nenhum representante refaz a lista ou reescreve notas do catálogo para cada contato.
Acompanhamento da entrega da campanha
Os resultados de entrega são registrados para o rastreamento do alcance da campanha, para que o marketing saiba quantos contatos que optaram por participar receberam o catálogo antes de medir visitas ao site ou pedidos em outros lugares.

Fluxo de Trabalho

  1. Gatilho

    Marketing ou CRM seleciona um segmento que optou por receber para a transmissão do catálogo.

    event · triggered

  2. Registrar evento

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

    phone: "+…"

  3. Construir e enviar

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

    POST /sendTemplate

  4. Entregue

    Cada contato que optou por receber recebe a mensagem do catálogo do WhatsApp.

    delivered

  5. Status rastreado

    Os resultados da entrega são registrados para o acompanhamento do alcance da campanha e follow-up.

    status: "read"

WhatsApp Business API for product and service catalog broadcast

Implementação técnica

Pré-requisitos

  1. Chave de API 1MSG · Como obter a chave da API
  2. Conta do WhatsApp Business · Como Conectar WABA
  3. Modelo de WhatsApp · Como Aprovar o Modelo WABA
  4. Opt-in 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_COMPANYORSPECIALISTNAME="___"         # {{2}} company or specialist name
TEST_ADDITIONALINFO="___"         # {{3}} 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_COMPANYORSPECIALISTNAME=$TEST_COMPANYORSPECIALISTNAME" \
            "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}} company or specialist name → ${TEST_COMPANYORSPECIALISTNAME}
# {{3}} 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_COMPANYORSPECIALISTNAME}" },
        { "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": truemédia 1MSGaceitoa mensagem para envio — não que já tenha chegado ao telefone do cliente.idcampo (parece)wamid.…para correlacionar os retornos de entrega.

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

    Falta clareza e contexto.nãoainda no telefone do cliente

  • id

    Chamadas de retorno de entrega.hookInfoestão focados nisso

A entrega em si chega mais tarde, como um callback separado. Registre um webhook (POST …/webhook) e 1MSG POSTs 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

    Correla o retorno com oidretornado pela chamada de envio

  • timestamp

    Segundos Unix, como uma string

Se você não quiser receber ligações de retorno, opte por não participar.GET {base}/{channel}/hookInfo?messageId=<id>em vez disso. Na prática, a entrega muitas vezes é 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 em início frio requerem um modelo aprovado pela Meta.

Relacionado

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 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.
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.
Campanhas de Marketing
WhatsApp Business API para reengajar leads interessados
O cenário envia um modelo personalizado de WhatsApp para um lead ou cliente que demonstrou interesse anteriormente, mas ficou inativo.

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