EmailCheckerEmailChecker

Integração · Automação

EmailChecker + n8n

O n8n é uma plataforma de automação visual e é a ferramenta que melhor se encaixa no fluxo assíncrono do EmailChecker: um nó HTTP Request envia o lote, um nó Wait segura o fluxo, outro HTTP Request consulta o lote e um IF fecha o loop até o status ficar "completed". Depois disso um Switch bifurca cada email pelo campo result.

Como integrar

5 passos pra conectar

  1. 1

    Junte os emails num array

    Antes da validação, agregue os endereços num único array (nó Code, Aggregate ou Item Lists). A API valida por lote — de 1 a 100.000 emails por chamada — e não tem endpoint de validação unitária.

  2. 2

    HTTP Request: POST /api/v1/batch

    Method POST, URL https://app.emailchecker.email/api/v1/batch. Em Authentication use Generic Credential Type > Header Auth com Name = Authorization e Value = Bearer ec_live_... Body JSON: {"emails": [...], "name": "..."}. A resposta 201 traz o id em {{ $json.data.id }}.

  3. 3

    Wait + HTTP Request: GET /api/v1/batch/{id}

    Conecte um nó Wait (30 segundos) e depois um HTTP Request GET em https://app.emailchecker.email/api/v1/batch/{{ ... }}.data.id com o mesmo header. O EmailChecker não envia callback: é o polling que descobre o fim do processamento.

  4. 4

    IF status = completed, senão volta pro Wait

    Nó IF comparando {{ $json.data.status }} com "completed". Saída false liga de volta no nó Wait, fechando o loop de polling. Trate "failed" e "cancelled" numa saída de erro para o fluxo não girar eternamente.

  5. 5

    Split Out + Switch pelo result

    Com o lote concluído, use Split Out no campo data.emails e um Switch em {{ $json.result }}: deliverable segue pro CRM, risky vai pra revisão manual, undeliverable e unknown entram na lista de supressão.

Exemplo · HTTP

# 1) Nó "Enviar lote" — HTTP Request
POST https://app.emailchecker.email/api/v1/batch
Authorization: Bearer ec_live_SUA_CHAVE
Content-Type: application/json

{
  "emails": {{ JSON.stringify($json.emails) }},
  "name": "n8n-{{ $now.toISODate() }}"
}

# 201 -> { "data": { "id": "<uuid>", "size": 1200, ... } }

# 2) Nó Wait (30s) e então o nó "Consultar lote" — HTTP Request
GET https://app.emailchecker.email/api/v1/batch/{{ $('Enviar lote').item.json.data.id }}
Authorization: Bearer ec_live_SUA_CHAVE

# 3) Nó IF: {{ $json.data.status }}  is equal to  completed
#    false -> liga de volta no nó Wait (loop de polling)
#    true  -> Split Out em "data.emails" e Switch em {{ $json.result }}
#             deliverable -> CRM | risky -> revisão | undeliverable/unknown -> supressão

A API do EmailChecker é REST com Bearer auth (`Authorization: Bearer ec_live_...`) na base `https://app.emailchecker.email` e é assíncrona: você envia o lote em `POST /api/v1/batch` e busca o resultado em `GET /api/v1/batch/{id}` até o `status` virar `completed`. Não existe endpoint de validação unitária nem webhook de retorno — quem descobre que o lote terminou é o polling. Limites: 1 a 100.000 emails por lote, 300 requisições/minuto e 10.000/hora. A API é exclusiva do plano Gold.

Casos de uso

Quando usar essa integração

Fila de leads validada de hora em hora

Leads do Typeform/Tally caem numa tabela de espera; um Schedule Trigger junta o que chegou na última hora, manda um lote só e libera pro CRM apenas os deliverable.

Higienizar lista do Google Sheets

Trigger "Sheet updated" ou agendado → agrega a coluna de emails → envia o lote → aguarda o resultado → grava result e score de volta em cada linha.

Pré-validação antes do disparo

Antes de mandar a campanha pro Mailchimp/Brevo, valide a lista inteira num lote na véspera — reduz bounce rate drasticamente sem travar o fluxo de captura.

Troubleshooting

Problemas comuns

Os erros que mais aparecem ao conectar o n8n — e como resolver cada um.

O nó HTTP Request retorna 404 em /api/v1/validate/single

Esse endpoint não existe. A API é assíncrona: POST https://app.emailchecker.email/api/v1/batch para enviar e GET https://app.emailchecker.email/api/v1/batch/{id} para buscar o resultado. Confira também o host — api.emailchecker.email e api.emailchecker.com.br não existem, o correto é app.emailchecker.email.

O array data.emails volta vazio

A lista de resultados só é preenchida quando data.status = "completed". Se o IF deixou passar um lote em pending/processing, o Split Out recebe array vazio. Compare o status antes de ramificar e mantenha o Wait em pelo menos 30 segundos: rajada de polling estoura o limite de 300 requisições/minuto.

O nó HTTP Request retorna 401 Unauthorized

O header Authorization foi montado errado. Em Header Auth o valor precisa ser exatamente "Bearer ec_live_..." (com o espaço). Se colar só a chave, vem 401. Confira também se não sobrou espaço no fim ao copiar do dashboard e se a conta está no plano Gold — a API é exclusiva dele.

Mais integrações

Outras ferramentas suportadas

Comece agora

Pronto pra parar de mandar email pra endereço morto?

Comece grátis com 500 créditos. Sem cartão, sem compromisso.