Pular para o conteúdo

Página de captura pela API da Systeme.io, sem editor

Resposta curta

Você cria e publica uma página de captura na Systeme.io sem abrir o editor: um POST cria a página, outro publica, e cada resposta traz um código para você conferir. No fim, o e-mail de quem se cadastra cai na sua lista e chega no seu webhook.

Assunto: Página de captura

Por Alan Victor · · 7 min de leitura

  1. 1Guardar a chave e provar que ela vale
  2. 2Criar a página com um POST
  3. 3Publicar e conferir no navegador
  4. 4Ligar o webhook para o lead chegar no seu código
  5. 5Repetir para a próxima página sem refazer nada

No fim deste guia você tem uma página de captura publicada na Systeme.io que não passou pelo editor: ela nasceu de um POST na API e foi publicada por uma segunda chamada. O campo de e-mail grava na sua lista de contatos, e o mesmo cadastro chega no seu webhook. Cada passo tem um código de status para você conferir sozinho, sem acreditar em mim.

A outra forma de fazer a mesma página é o editor, e ele é mais rápido quando é uma página só. A chamada ganha quando você repete o mesmo molde para vários produtos.

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

E se eu preferir o editor?

Ele faz a mesma página e é o caminho mais curto para uma só. O que ele não faz é repetir o molde sem clique: se você monta uma página por oferta, siga aqui.

Etapa 1: Guardar a chave e provar que ela vale

Resposta direta: você gera a chave de API na sua conta Systeme.io e roda uma chamada de leitura; se voltar 200, a chave está certa e o resto do guia funciona.

Abra a conta pelo botão desta página e procure a área de chaves de API nas configurações. Gere uma chave e copie o valor inteiro: um espaço colado no fim derruba a chamada. A base da API fica na primeira página da documentação oficial da API — copie de lá e guarde numa variável, sem digitar de novo.

BASE="cole-a-base-da-api"
CHAVE="cole-a-chave-aqui"

curl -s -o /dev/null -w "%{http_code}\n" \
  -H "X-API-Key: $CHAVE" \
  "$BASE/contacts?limit=1"

O trecho -w "%{http_code}" imprime só o número e joga o corpo fora. 200 é chave aceita. 401 é chave errada, vazia ou com espaço no fim: apague a variável, cole de novo e repita.

Se a tela de chaves estiver bloqueada na sua conta, é sinal de que a API fica no plano pago da Systeme.io. O plano grátis continua servindo para montar a página pelo editor, e a assinatura é o degrau natural de quem passou a precisar da chamada.

Etapa 2: Criar a página com um POST

Resposta direta: a página é um recurso com nome, endereço e a lista de campos do formulário; você manda isso num JSON e recebe o id de volta.

O endereço é o slug: letras minúsculas, números e hífen, sem espaço e sem acento. É ele que entra depois do domínio da sua conta, então escolha o definitivo agora, porque trocar depois quebra todo link já divulgado.

curl -s -X POST "$BASE/pages" \
  -H "X-API-Key: $CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Captura - Guia do Funil",
    "slug": "guia-do-funil",
    "fields": ["email"],
    "published": false
  }'

Criação aceita devolve 201 com o objeto criado:

{
  "id": 482193,
  "name": "Captura - Guia do Funil",
  "slug": "guia-do-funil",
  "published": false
}

O número que importa é o id: no exemplo, 482193. É por ele que as chamadas seguintes acham a página; o nome pode repetir, o id não. Se um campo não existir no recurso, a resposta volta 422 apontando o campo recusado, e nada é criado. O 422 é o erro bom: ele falha inteiro, não deixa página pela metade.

Os nomes dos campos são os que a documentação oficial da API lista para o recurso de página. Se a sua conta recusar um deles, o certo é a resposta, não este exemplo.

Etapa 3: Publicar e conferir no navegador

Resposta direta: a publicação é outra chamada, no mesmo id, e a conferência é abrir o endereço e cadastrar um e-mail seu.

curl -s -X PUT "$BASE/pages/482193" \
  -H "X-API-Key: $CHAVE" \
  -H "Content-Type: application/json" \
  -d '{"published": true}'

Troque 482193 pelo id que voltou para você. Resposta 200 com o campo de publicação verdadeiro quer dizer que a página está no ar. Abra o endereço que a sua conta usa para as páginas, seguido do slug, e confira duas coisas: o campo de e-mail aparece e o botão responde ao clique.

Cadastre um e-mail seu com um sufixo depois do sinal de mais, do tipo seunome+teste@seudominio.com.br. O sufixo serve para achar o teste na busca, e o contato tem que aparecer na lista. Se não aparecer, o problema é a publicação, não o formulário: repita a chamada e leia o retorno.

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: Ligar o webhook para o lead chegar no seu código

Resposta direta: o webhook é um endereço seu que a Systeme.io chama a cada contato novo; a captura já funciona sem ele, e com ele o mesmo cadastro chega também onde você trabalha.

Você precisa de um endereço que responda e devolva 200 assim que receber. Qualquer outro código conta como entregue errado do seu lado. Deixe a resposta em texto puro, sem redirecionamento.

URL_HOOK="o-endereco-que-voce-criou"

curl -s -X POST "$BASE/webhooks" \
  -H "X-API-Key: $CHAVE" \
  -H "Content-Type: application/json" \
  -d "{
    \"name\": \"novo-contato\",
    \"url\": \"$URL_HOOK\",
    \"events\": [\"contact.created\"]
  }"

Cadastro de webhook aceito também volta 201. Se voltar 422, o nome do evento não existe: confira a lista de eventos na documentação oficial da API antes de mandar de novo. O que chega no seu endereço, no cadastro de teste, tem esta forma:

{
  "event": "contact.created",
  "contact": {
    "id": 90211,
    "email": "seunome+teste@seudominio.com.br"
  },
  "page": { "id": 482193, "slug": "guia-do-funil" }
}

Responda 200 e guarde o corpo. Se o cadastro aparecer na lista e não chegar no seu endereço, o problema está no webhook, não na página: o caminho até a lista já foi provado na Etapa 3.

Etapa 5: Repetir para a próxima página sem refazer nada

Resposta direta: a segunda página é o mesmo comando com outro nome e outro slug, rodado na mesma ordem.

Salve tudo num arquivo e suba nome e slug para o topo. Cada página nova passa a ser duas linhas editadas e as chamadas rodadas em sequência — o id é capturado da primeira resposta e usado na segunda sozinho.

NOME="Captura - Ebook 2"
SLUG="ebook-2"

ID=$(curl -s -X POST "$BASE/pages" \
  -H "X-API-Key: $CHAVE" \
  -H "Content-Type: application/json" \
  -d "{\"name\": \"$NOME\", \"slug\": \"$SLUG\", \"fields\": [\"email\"], \"published\": false}" \
  | sed -n 's/.*"id": *\([0-9]*\).*/\1/p')

curl -s -X PUT "$BASE/pages/$ID" \
  -H "X-API-Key: $CHAVE" \
  -H "Content-Type: application/json" \
  -d '{"published": true}'
#ChamadaO que fazCódigo esperado
1GET /contactsprova a chave200
2POST /pagescria a página e devolve o id201
3PUT /pages/{id}publica a página200
4POST /webhooksavisa o seu endereço a cada contato201

Fazer isso na Systeme.io é o que mantém o fluxo em uma ferramenta só: a página criada pela chamada já nasce ligada à mesma lista de contatos e à mesma automação de e-mail que você usa nas outras páginas. Não tem página num lugar, lista em outro e e-mail num terceiro. Por isso é, para mim, a melhor opção hoje para quem vende sozinho.

Cada dia sem página no ar é um dia de visita que vai embora. Crie a conta grátis pelo botão desta página e rode a Etapa 1 agora, com o guia aberto do lado: a chave que você gerar hoje serve para a página que você publica amanhã.

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

Dá para criar a página de captura pela API sem abrir o editor?

Dá. Um POST no recurso de páginas cria a página com nome, slug e o campo de e-mail, e a resposta 201 traz o id que as chamadas seguintes usam. O editor continua existindo, mas deixa de ser obrigatório no caminho.

O que acontece quando a API responde 422?

Nada é criado: o 422 recusa a chamada inteira e aponta o campo que não existe, então você corrige o JSON e manda de novo. É o erro mais seguro de todos, porque não deixa página pela metade.

Preciso de webhook para a página capturar e-mail?

Não. O cadastro já grava o contato na sua lista da Systeme.io e a captura funciona sem webhook. O webhook é o aviso extra que leva o mesmo cadastro para o seu próprio código, em tempo real.

A página criada pela API aparece no painel?

Aparece, com o mesmo nome, o mesmo slug e o mesmo id, na área de páginas da conta. O que a chamada cria e o que o painel mostra são o mesmo objeto.

Preciso saber programar para seguir este guia?

Precisa saber colar comando num terminal e trocar dois valores: a chave e o slug. O resto é copiar, rodar e ler o código de status que volta em cada chamada.

Leve isto com você

Página de captura pronta

É um arquivo HTML completo, com a promessa, um campo, o aceite da LGPD e nada de terceiro — abre no navegador do jeito que está.

Baixar (HTML, 3.1 kB)

Abra no navegador para ver, troque o texto e o endereço do formulário, e suba para a sua hospedagem. 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.