Guia de Migração: /messages → /campaign/full (API Active Campaign Growth) 6 de julho de 2026 11:49 Atualizado Visão geral das duas abordagens Diferenças conceituais principais Exemplo prático Mapeamento dos tipos de componentes do template para chaves de messageParams Campos sem equivalente Campos opcionais da campanha Estrutura da resposta Checklist de migração Documentação de apoio Este documento descreve como migrar o envio de mensagens com template WhatsApp do endpoint LIME /messages para a API Active Campaign Growth utilizando o endpoint /campaign/full. Visão geral das duas abordagens Aspecto /messages (direto) /campaign/full (Active Campaign) Endpoint HTTP POST .../messages POST .../commands Primitiva LIME Mensagem Comando (method: set) Destino Identidade do usuário (5592...@wa.gw.msging.net) postmaster@activecampaign.msging.net Content-Type application/json application/vnd.iris.activecampaign.full-campaign+json Estrutura do template Árvore completa de componentes WhatsApp Nome do template + parâmetros nomeados Redirecionamento de fluxo Não Opcional (flowId / stateId) Rastreamento / relatório Nenhum Relatório completo da campanha, status por destinatário Agendamento Não Sim (scheduled) Tipo de campanha — Sempre Individual neste cenário Auditoria Nenhuma Campanha armazenada com status por destinatário Diferenças conceituais principais1. Endpoint HTTP e primitiva de protocoloEsta é a diferença mais importante entre as duas abordagens.Antes (/messages) — o payload é uma mensagem LIME enviada ao endpoint /messages:POST https://{{contract.id}}.http.msging.net/messages HTTP/1.1 Content-Type: application/json Authorization: Key {YOUR_TOKEN}Depois (/campaign/full) — o payload é um comando LIME enviado ao endpoint /commands:POST https://{{contract_id}}.http.msging.net/commands HTTP/1.1 Content-Type: application/json Authorization: Key {YOUR_TOKEN}No protocolo LIME, mensagens são usadas para troca direta de conteúdo entre o bot e um usuário final. Comandos são usados para interagir com extensões e serviços da plataforma, como o Active Campaign. Por isso, além de trocar o endereço de destino, toda a estrutura do envelope muda: o campo content dá lugar a method, uri e resource.2. Estrutura do templateA segunda grande diferença é a forma como os parâmetros do template são expressos.Antes (/messages) — árvore completa de componentes WhatsApp:{ "type": "template", "template": { "language": { "policy": "deterministic", "code": "pt_BR" }, "name": "dia_do_doce_v11", "components": [ { "type": "header", "parameters": [ { "type": "image", "image": { "link": "https://example.com/image.jpg" } } ] } ] } }Depois (/campaign/full) — nome do template + parâmetros nomeados:"message": { "messageTemplate": "dia_do_doce_v11", "messageTemplateLanguage": "pt_BR", "messageParams": ["image"], "channelType": "WhatsApp" }O serviço Active Campaign reconstrói a árvore de componentes WhatsApp internamente a partir dos metadados do template e dos valores fornecidos em audience.messageParams. Não é mais necessário descrever a estrutura dos componentes.3. Vinculação de parâmetrosNa abordagem /messages, os valores dos parâmetros ficam embutidos diretamente na árvore de componentes. No /campaign/full, os valores são informados separadamente por destinatário no objeto audience.messageParams (dicionário chave → valor), enquanto message.messageParams carrega apenas a lista de nomes das chaves (o schema), usada para validar que cada destinatário possui os valores necessários. O que Localização anterior Nova localização Nome do template content.template.name message.messageTemplate Código do idioma content.template.language.code message.messageTemplateLanguage URL da imagem do header components[header].parameters[].image.link audience.messageParams["image"] Variáveis de texto do body components[body].parameters[].text audience.messageParams["1"], ["2"], … Sufixo de URL de botão dinâmico components[button].parameters[].text audience.messageParams["url_suffix"] Telefone do destinatário Campo to (numero@wa.gw.msging.net) audience.recipient (formato E.164) Exemplo práticoAntes — envio via /messagesPOST https://{{contract.id}}.http.msging.net/messages HTTP/1.1 Content-Type: application/json Authorization: Key {YOUR_TOKEN} { "id": "activecampaign:335924e6-6831-4ddf-b400-2296cf6c94cc", "to": "5592994397150@wa.gw.msging.net", "type": "application/json", "content": { "type": "template", "template": { "language": { "policy": "deterministic", "code": "pt_BR" }, "name": "dia_do_doce_v11", "components": [ { "type": "header", "parameters": [ { "type": "image", "image": { "link": "https://www.iped.com.br/_upload/galleries/2015/05/19/organizao-pblica-555b72de0abc9.jpg" } } ] } ] } } }Características: Mensagem direta, nenhum registro de campanha é criado. Nenhum redirecionamento para fluxo do bot. Nenhum rastreamento de entrega. Idioma do template pt_BR com política deterministic. Depois — envio via /campaign/fullPOST https://{{contract_id}}.http.msging.net/commands HTTP/1.1 Content-Type: application/json Authorization: Key {YOUR_TOKEN} { "id": "{{$guid}}", "to": "postmaster@activecampaign.msging.net", "method": "set", "uri": "/campaign/full", "type": "application/vnd.iris.activecampaign.full-campaign+json", "resource": { "campaign": { "name": "Dia do Doce - individual", "campaignType": "Individual", "channelType": "WhatsApp", "sourceApplication": "MyApp" }, "audience": { "recipient": "+5592994397150", "messageParams": { "image": "https://www.iped.com.br/_upload/galleries/2015/05/19/organizao-pblica-555b72de0abc9.jpg" } }, "message": { "messageTemplate": "dia_do_doce_v11", "messageTemplateLanguage": "pt_BR", "messageParams": ["image"], "channelType": "WhatsApp" } } }Mudanças notáveis: Endpoint HTTP passou de .../messages para .../commands. to passou para postmaster@activecampaign.msging.net. Adicionados method: "set" e uri: "/campaign/full" — obrigatórios em comandos LIME. O content com a árvore de componentes foi removido; no lugar entram campaign, audience e message dentro de resource. A URL da imagem foi movida para audience.messageParams["image"]. O telefone do destinatário foi movido para audience.recipient no formato E.164 (com código do país, sem o sufixo @wa.gw.msging.net). flowId / stateId são omitidos intencionalmente — a mensagem é enviada sem redirecionar o usuário a nenhum fluxo do bot. campaignType é sempre Individual neste cenário (envio para um único destinatário por chamada). Importante: message.messageParams é um array de nomes de chaves (strings), não de valores. Ele define quais chaves de audience.messageParams serão usadas como parâmetros do template. O serviço Active Campaign utiliza essa lista para validar se o destinatário possui todos os valores necessários antes do disparo. Mapeamento dos tipos de componentes do template para chaves de messageParamsQuando o template possui múltiplos tipos de componentes, todos os valores de parâmetros são achatados no dicionário audience.messageParams. Use nomes descritivos para as chaves; o serviço os mapeia na ordem de declaração dentro de cada tipo de componente. Tipo de componente Tipo de parâmetro Meta Nome de chave sugerido Exemplo de valor Header – imagem image "image" "https://cdn.example.com/banner.jpg" Header – vídeo video "video" "https://cdn.example.com/video.mp4" Header – documento document "document" "https://cdn.example.com/file.pdf" Body – variável de texto {{1}} text "1" ou qualquer rótulo "João" Body – variável de texto {{2}} text "2" ou qualquer rótulo "Premium" Botão – sufixo de URL dinâmica text "url_suffix" "/promo/XYZ123" Os nomes das chaves são livres, desde que sejam consistentes entre audience.messageParams (valores) e message.messageParams (schema). A ordem em message.messageParams deve corresponder à ordem dos parâmetros no template cadastrado na Meta. Campos sem equivalenteOs seguintes campos da abordagem /messages não têm equivalente em /campaign/full porque são tratados automaticamente ou não se aplicam: Campo antigo Motivo da ausência content.template.language.policy Sempre deterministic — não é configurável via Active Campaign id com prefixo activecampaign: O serviço de campanha gera seus próprios IDs de correlação to com sufixo @wa.gw.msging.net Substituído por audience.recipient no formato E.164 Campos opcionais da campanhaEstes campos estão ausentes no exemplo mínimo acima, mas estão disponíveis para enriquecimento: Campo Onde Finalidade flowId + stateId campaign Redireciona o usuário para um estado específico do bot ao responder masterState campaign Obrigatório quando se usa arquitetura com bot roteador scheduled campaign Agenda o disparo para uma data/hora futura (yyyy-MM-dd hh:mm) tags campaign Rótulos arbitrários para filtrar/agrupar campanhas contextVariables audience Variáveis salvas no contexto do contato (acessíveis como {{nomeVariavel}} nos fluxos) Estrutura da respostaEm caso de sucesso, o serviço responde com um documento Campaign:{ "type": "application/vnd.iris.activecampaign.campaign+json", "resource": { "id": "37162f14-2d45-...", "name": "Dia do Doce - individual", "campaignType": "INDIVIDUAL", "status": "processing", "created": "2026-07-02T14:00:00.000Z" }, "method": "set", "status": "success" }Utilize o id retornado para consultar o status, os detalhes da audiência e os relatórios de entrega:GET /campaigns/{id}/reportsGET /audiences/{id}GET /campaigns/summaries Checklist de migração Trocar o endpoint HTTP de .../messages para .../commands Trocar o to da identidade do usuário para postmaster@activecampaign.msging.net Alterar o tipo do envelope para application/vnd.iris.activecampaign.full-campaign+json Adicionar method: "set" e uri: "/campaign/full" Mover o nome do template para message.messageTemplate Mover o código do idioma para message.messageTemplateLanguage (obrigatório se diferente de pt_BR) Converter os valores dos parâmetros dos componentes para um dicionário plano em audience.messageParams Listar os nomes das chaves em message.messageParams (array, mesma ordem dos parâmetros do template cadastrado na Meta) Converter o destinatário de numero@wa.gw.msging.net para formato E.164 (ex.: +5592994397150) Definir campaign.campaignType como Individual Omitir flowId / stateId se não for desejado redirecionamento para fluxo do bot Usar messageTemplate, não messageContent, para WhatsApp Documentação de apoio Como enviar notificações via API Active Campaign (Growth) — Blip Help Templates Utilitários WhatsApp (Meta for Developers) Mensagens de Marketing WhatsApp (Meta for Developers) Blip Docs — Enviando Mensagens Blip Docs — Campanha Individual Precisa de mais ajuda? Explore nossos conteúdos na Blip Academy ou Blip Community, assista a tutoriais no nosso canal do YouTube ou tire suas dúvidas em nosso canal de atendimento 😃