Skip to main content

Variáveis que você escreve no texto ({{…}})

No SMS, WhatsApp e e-mail você usa placeholders no formato {{chave}}. Duas origens se misturam no envio:
  1. Variáveis “do template” — o que você digitou no conteúdo e que precisa de valor na API (variables no POST /v1/templates/send) ou valor padrão configurado no editor do template (variableDefaults).
  2. Dados do contato — preenchidos automaticamente quando o destinatário existe como contato no workspace (ou parcialmente quando a API enriquece telefone/e-mail).
Se a chave no texto for {{nome}} mas o sistema só injeta name (inglês), nada será substituído para nome a menos que você envie variables.nome ou defina um padrão para nome. Por isso use as chaves abaixo quando quiser dados do cadastro.

Chaves fixas do contato (use exatamente estes nomes)

Quando há contato resolvido para o destinatário, o backend preenche (se existir valor):
Chave no templateSignificado
nameNome do contato
emailE-mail
phoneTelefone (E.164)
telefoneMesmo valor que phone (alias)
preferences_linkURL de preferências / descadastro (relevante em campanhas de marketing com template configurado)
Não existe substituição automática por nome em português: o campo do cadastro é exposto como name. Se preferir {{nome}} no texto, trate nome como variável livre e envie em variables ou cadastre valor padrão no template. Ordem de prioridade no merge (resumo): padrões do template → dados do contato (e aliases acima) → propriedades personalizadas → objeto variables da requisição (API ou campanha) por cima.

Campos personalizados dos contatos

Sim: servem como variáveis. Cada definição tem uma chave técnica (key), em minúsculas, formato snake_case (ex.: cpf_cliente, plano). No template use {{cpf_cliente}} exatamente com essa chave. Os valores vêm do armazenamento do contato; tipos número/boolean/data viram texto na hora da substituição. Defina e gerencie as chaves no painel em Contatos (definições de propriedades) ou pela API de contatos do app; na API pública de contatos v1 você trabalha com o contato como um todo conforme a documentação de Contatos.

Valores padrão no template (variableDefaults)

No painel (e no PATCH/POST da API de gestão) você pode enviar variableDefaults: se a requisição de envio não mandar aquela chave, o padrão do template entra antes de considerar “falta variável”. Contato + variables continuam podendo sobrescrever.

CRUD de templates na API v1

Além do envio (POST /v1/templates/send), a v1 expõe gestão no mesmo prefixo /v1/templates:
MétodoCaminhoEscopo
GET/v1/templatestemplates:read
GET/v1/templates/{id}templates:read
POST/v1/templatestemplates:create
PATCH/v1/templates/{id}templates:update
DELETE/v1/templates/{id}templates:delete
  • Listagem: query page, limit, search (busca por nome).
  • Corpo de criação/edição: use channels com sms, whatsapp e email (cada um com os campos do canal: texto, mídia, botões, HTML, etc.). É o mesmo conjunto de regras do painel (SMS mín. 9 caracteres, limites de WhatsApp/HTML, URLs HTTPS, variables + variableDefaults, marketingTopicId para MARKETING, …). No PATCH, envie só os canais ou campos que mudarem dentro de channels. Integrações muito antigas com corpo plano no root ainda são aceitas pelo servidor, mas não devem ser usadas em projetos novos.
  • Envio (POST /v1/templates/send) continua exigindo escopos de canal: whatsapp:send, sms:send, email:send — não os escopos templates:* de CRUD.
Detalhes de schema estão no OpenAPI (openapi-templates.json) na pasta API Reference de Templates.

Ver também