Pular para o conteúdo

Faça a Systeme.io disparar um webhook e leia o que chega

Resposta curta

Você liga uma regra de automação da Systeme.io a um endereço seu, provoca o evento e lê o corpo exato que a plataforma envia, com o código de status para conferir sozinho. Página, lista e automação ficam no mesmo painel. O teste fica de pé em uma tarde e se repete em dois minutos.

Assunto: E-mail automático

Por Alan Victor · · · 8 min de leitura

  1. 1escolha o evento que você consegue provocar em um minuto
  2. 2crie a ação de webhook dentro da regra
  3. 3ponha um endereço que aceite POST e mostre o corpo
  4. 4dispare o evento e leia o log

No fim deste guia você tem uma regra de automação da Systeme.io disparando um webhook para um endereço seu, e o corpo exato dessa requisição impresso na sua tela. O teste leva uma tarde e você repete quantas vezes quiser: quem confirma que funcionou é o código de status que volta, não a minha palavra.

Sai um guia por dia, e o canal do Telegram avisa quando sai. A ferramenta que eu uso para a página, a captura e o e-mail automático no mesmo lugar é a Systeme.io, que tem plano gratuito.

O que você vai ter no fim

Etapa 1: escolha o evento que você consegue provocar em um minuto

Resposta direta: escolha o evento mais fácil de provocar com um contato de teste — tag aplicada, contato criado ou formulário enviado — e anote o nome dele.

Toda regra de automação começa por um gatilho: o evento que faz a regra rodar. Se você escolher algo que depende de outra pessoa, como uma compra aprovada, o teste fica esperando e você não fecha o dia com nada no ar.

Crie um contato de teste com um e-mail seu, marcado no nome, só para isso. Assim você provoca o evento dez vezes seguidas sem encostar na sua lista real, e apaga o contato no fim.

Etapa 2: crie a ação de webhook dentro da regra

Resposta direta: dentro da regra, adicione a ação de webhook, cole a URL de destino e escolha o método POST.

  1. No menu da conta, abra Automações e crie uma regra nova.
  2. Defina o gatilho como o evento que você escolheu na etapa 1.
  3. Adicione uma ação do tipo Webhook, que é o campo que pede uma URL. Se o seu painel chamar de requisição HTTP, é o mesmo campo.
  4. Cole a URL de destino, marque o método POST e deixe os cabeçalhos vazios por enquanto.
  5. Ative a regra. Regra em rascunho não dispara — é a causa mais comum de “não aconteceu nada”.

Eu monto isso na Systeme.io justamente porque a regra nasce no mesmo painel onde estão a página que capta o contato, a lista que guarda esse contato e os e-mails que falam com ele. Você aplica uma tag e a automação enxerga na hora, sem exportar nada para fora.

Existe também o caminho pela API, com a chave em Configurações, e ele serve para ler e escrever contatos sob demanda. Para receber o aviso de que algo aconteceu, quem empurra a requisição é a regra; este guia fica no painel. Os nomes de campo e a lógica da ação estão na central de ajuda da Systeme.io, e o outro caminho está na documentação oficial da API.

Etapa 3: ponha um endereço que aceite POST e mostre o corpo

Resposta direta: o destino precisa ser um endereço público que aceite POST e responda 200; o script abaixo faz isso e imprime o corpo que chegar.

Salve o texto como recebedor.py e rode com python3 recebedor.py. Ele fica escutando na porta 8080 e imprime cada corpo recebido.

from http.server import BaseHTTPRequestHandler, HTTPServer

class Recebedor(BaseHTTPRequestHandler):
    def do_POST(self):
        tamanho = int(self.headers.get("Content-Length", 0))
        corpo = self.rfile.read(tamanho).decode("utf-8")
        print("--- chegou ---")
        print(corpo)
        self.send_response(200)
        self.send_header("Content-Type", "application/json")
        self.end_headers()
        self.wfile.write(b'{"recebido": true}')

HTTPServer(("0.0.0.0", 8080), Recebedor).serve_forever()

O que você deve ver na tela do terminal: a linha --- chegou --- e, embaixo, o corpo em uma linha só. Se o corpo vier cortado, o problema é o cabeçalho Content-Length — o script lê exatamente a quantidade de bytes que ele declara.

Aviso que evita meia hora perdida: 127.0.0.1:8080 só existe dentro da sua máquina e a Systeme.io não alcança esse endereço. Para o disparo chegar, o destino precisa ser público. Sem servidor próprio, você tem dois caminhos: subir este mesmo script em uma máquina com endereço público, ou ler só o código de status no histórico da regra e adiar a leitura do corpo até ter esse endereço. O primeiro entrega o texto; o segundo já diz se a regra está disparando.

Para fazer isso sem montar servidor

O que este guia faz por API, a Systeme.io faz por formulário: página, lista, etiqueta e e-mail automático na mesma conta. É a conta em que eu testo o que aparece aqui, e o plano gratuito já dá para publicar e capturar.

Ver o plano gratuito

Etapa 4: dispare o evento e leia o log

Resposta direta: provoque o evento com o contato de teste e leia o código de status — 200 é o único que significa que a requisição chegou.

Aplique a tag, crie o contato ou envie o formulário, conforme o gatilho que você escolheu. Depois abra o histórico da regra e o terminal ao mesmo tempo: um mostra o status, o outro mostra o conteúdo.

Código no logO que significaO que fazer
200o seu endereço recebeu o corpo e respondeu que aceitounada; leia o corpo
404o caminho da URL não existe no endereçoconferir a URL inteira, inclusive a barra final
500o seu código quebrou ao processar a requisiçãoler o erro impresso no terminal
501o endereço existe mas não aceita POSTusar o receptor deste guia ou ajustar o método no destino
sem códigoo endereço não respondeu no prazoconferir se o serviço está no ar e se é público

Na primeira leitura do corpo, anote quatro coisas: o nome do evento, o id do contato, os campos personalizados com o nome interno (não o rótulo que você vê na tela) e o carimbo de tempo. É esse texto que você vai usar para montar qualquer coisa depois.

Por que o webhook não disparou?

Resposta direta: na ordem em que costuma acontecer — a regra está em rascunho, o gatilho não é o evento que você provocou, o contato já tinha passado pela regra, ou o endereço não respondeu.

Vale a pena fazer isso na Systeme.io em vez de juntar ferramentas?

Resposta direta: para mim vale, porque a regra que dispara o webhook é montada no mesmo painel da sua página, da sua lista e dos seus e-mails, e você não mantém uma segunda conta só para ligar os pontos.

Cada ferramenta a mais é uma senha a mais, um lugar a mais para o contato ficar desatualizado e uma conta a mais para pagar quando o negócio cresce. Na Systeme.io o contato do teste nasce no formulário da sua página e já está disponível para a automação.

Comecei no plano grátis e só subi de plano quando a operação pediu. Se o seu caso for o mesmo, o próximo degrau é o plano pago da própria Systeme.io — não uma pilha de assinaturas diferentes.

O que muda depois que você vê o corpo uma vez

Antes, você sabia apenas que “o contato entrou”. Depois, você sabe o nome exato do campo, o formato da data e o que a plataforma manda quando aquele evento acontece. Isso é a diferença entre pedir para alguém integrar e você mesmo decidir o que fazer com o dado.

O teste também vira rotina: mudou o formulário, mudou o campo, você dispara de novo e confere em dois minutos, em vez de descobrir o problema uma semana depois.

E é o tipo de recurso que fica meses fechado no menu sem ninguém abrir. Ligar uma vez tira ele da lista dos que você não conhece.

Se você ainda não tem conta, o convite é este: crie a conta grátis da Systeme.io pelo botão desta página e faça a Etapa 1 agora, enquanto o guia está aberto. Montar a regra e ver o primeiro 200 no log leva menos tempo do que continuar decidindo se vale a pena.

O que eu não vou afirmar

Travou em alguma etapa?

Abra uma discussão em github.com/alanvito1/funil-simples dizendo em que passo parou. Dúvida que aparece mais de uma vez tem boa chance de virar guia, e o código deste site está no mesmo lugar, aberto.

Se ainda não tem onde publicar o que montou, a conta gratuita da Systeme.io resolve a página e a lista.

Perguntas frequentes

Como testar um webhook da Systeme.io sem sujar a minha lista?

Dá para testar com um único contato de teste seu, marcado no nome e apagado no fim do dia. A regra dispara para o contato que sofre o evento, então um contato só resolve todos os disparos do teste, mesmo que você repita dez vezes.

O que significa o código 200 no log do webhook?

Significa que o seu endereço recebeu o corpo e respondeu que aceitou. Qualquer outro código, como 404, 500 ou 501, quer dizer que a requisição saiu da plataforma e não foi aceita do outro lado — o problema está no destino, não na regra.

Preciso saber programar para ligar a Systeme.io num automatizador?

Não para ligar: a regra é montada no painel da Systeme.io, com uma URL e a escolha do método POST. Programar só entra se você quiser tratar o corpo por conta própria, e o script deste guia já faz a parte de receber e imprimir.

Por que o corpo do webhook chega vazio?

Chega vazio quando a ação está configurada como GET, porque GET não carrega corpo na requisição. Troque o método para POST na ação de webhook e o conteúdo do contato volta a aparecer no seu receptor.

O webhook substitui a API da Systeme.io?

Não substitui: o webhook avisa que algo aconteceu, e a API serve para você ler e escrever dados quando quiser. Um completa o outro — o aviso chega e você decide se busca mais dados ou apenas registra o que veio.

Leve isto com você

A sequência de boas-vindas, em três e-mails

É os três e-mails de boas-vindas que eu escrevi para este site, em texto, com o assunto, o atraso de cada um e o objetivo de cada um.

Baixar (TXT, 3.7 kB)

Cole cada um numa campanha da sua ferramenta de e-mail, na ordem. Troque a assinatura e o endereço, e a variável do link de saída pela que a sua ferramenta usa. Sem cadastro, sem e-mail: o arquivo baixa direto.

Receba o resto por e-mail

Eu testo ferramenta de funil e e-mail e mando o que descubro.