> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enrow.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Enriquecimento de E-mails (n8n)

> Crie um fluxo no n8n que enriquece contatos do Google Sheets com e-mails verificados usando as APIs do Enrow Email Finder e Email Verifier

Este guia mostra como criar um fluxo no n8n que lê contatos de uma planilha do Google Sheets, encontra e-mails profissionais com o endpoint do [Email Finder](/pt/api-reference/email-finder/find-single), os verifica com o endpoint do [Email Verifier](/pt/api-reference/email-verifier/verify-single) e grava os resultados de volta na planilha — automaticamente, em uma agenda. Novo no n8n com o Enrow? Comece pelo [guia de primeiros passos do n8n](/pt/playbooks/n8n/getting-started).

## O que você vai construir?

Você vai construir um fluxo automatizado que:

1. **Lê contatos** de uma planilha do Google Sheets
2. **Encontra e-mails** usando o Enrow Email Finder
3. **Verifica e-mails** quanto à entregabilidade com o Enrow Email Verifier
4. **Grava resultados** de volta na planilha do Google Sheets

**Tempo de construção**: 15 minutos
**Dificuldade**: Intermediário

## O que você precisa antes de começar?

Antes de construir o fluxo, certifique-se de ter o seguinte:

* n8n instalado ([obtenha o n8n](https://n8n.io))
* Uma chave de API do Enrow — consulte [Autenticação](/pt/authentication) para saber como obter e usar sua chave
* Uma Conta Google com uma planilha de contatos

Cada busca consome créditos, então confirme seu saldo primeiro. Consulte [Créditos e cobrança](/pt/credits-billing) para os custos por endpoint.

## Como configurar a planilha do Google Sheets?

Crie uma planilha do Google Sheets com estas colunas:

| First Name | Last Name | Company Domain | Email | Status | Verified |
| ---------- | --------- | -------------- | ----- | ------ | -------- |
| John       | Doe       | apple.com      |       |        |          |
| Jane       | Smith     | microsoft.com  |       |        |          |
| Bob        | Johnson   | meta.com       |       |        |          |

**Nome da planilha**: "Contacts"
**URL**: Salve e copie a URL da planilha

## Como é o fluxo?

O fluxo é executado em uma agenda, lê cada contato, encontra e verifica o e-mail e então atualiza a planilha:

```mermaid theme={null}
graph LR
    A[Cron Trigger] --> B[Read Google Sheet]
    B --> C[Loop Over Contacts]
    C --> D[Find Email - Enrow]
    D --> E[Verify Email - Enrow]
    E --> F[Update Google Sheet]
```

## Como construir o fluxo passo a passo?

Siga estes passos para montar cada nó no n8n.

### Passo 1: Configurar a conexão com o Google Sheets

1. Adicione o nó **"Google Sheets"**
2. Operação: **"Read"**
3. Autentique-se com o Google
4. Selecione sua planilha
5. Sheet Name: **"Contacts"**
6. Range: **"A:F"** (todas as colunas)

### Passo 2: Adicionar o gatilho Cron

1. Adicione o nó **"Cron"** como gatilho
2. Modo: **"Every Hour"** (ou agenda personalizada)
3. Conecte ao nó Google Sheets

Isso processará automaticamente novas linhas a cada hora.

### Passo 3: Filtrar e-mails vazios

1. Adicione o nó **"IF"** após o Google Sheets
2. Condição:
   * **Value 1**: `{{$json["Email"]}}`
   * **Operation**: `Is Empty`
3. Direcione "true" para o próximo passo (processar apenas contatos sem e-mails)

### Passo 4: Encontrar o e-mail com o Enrow

Envie cada contato para o endpoint do Email Finder. Autentique-se com sua chave de API no cabeçalho `x-api-key`.

1. Adicione o nó **"HTTP Request"**
2. Configure:

```
Method: POST
URL: https://api.enrow.io/email/find/single
Authentication: Header Auth
  Name: x-api-key
  Value: YOUR_ENROW_API_KEY

JSON Body:
{
  "company_domain": "{{$json["Company Domain"]}}",
  "fullname": "{{$json["First Name"]}} {{$json["Last Name"]}}"
}
```

### Passo 5: Aguardar o resultado

O Email Finder é executado de forma assíncrona, então você pode aguardar um webhook ou consultar o endpoint GET para obter o resultado.

**Opção A: Webhook (Recomendado)**

1. Adicione o nó **"Webhook"**
2. Path: `enrow-email-webhook`
3. Copie a URL do webhook
4. Atualize o corpo JSON do Find Email:

```json theme={null}
{
  "company_domain": "{{$json["Company Domain"]}}",
  "fullname": "{{$json["First Name"]}} {{$json["Last Name"]}}",
  "settings": {
    "webhook": "YOUR_WEBHOOK_URL"
  }
}
```

Para o payload que o Enrow envia e como registrar endpoints, consulte [Como funcionam os webhooks](/pt/how-webhooks-work).

**Opção B: Aguardar e consultar**

1. Adicione o nó **"Wait"**: 5 segundos
2. Adicione o nó **"HTTP Request"**:
   * Method: `GET`
   * URL: `https://api.enrow.io/email/find/single?id={{$json["id"]}}`
3. Adicione o nó **"IF"** para verificar o status
4. Volte ao início se ainda estiver `ongoing`

Consulte o endpoint [Obter Resultado](/pt/api-reference/email-finder/get-single-result) para o formato completo da resposta.

### Passo 6: Verificar o e-mail

Passe o e-mail encontrado para o Email Verifier para confirmar a entregabilidade antes de gravá-lo de volta.

1. Adicione o nó **"HTTP Request"** após encontrar o e-mail
2. Configure:

```
Method: POST
URL: https://api.enrow.io/email/verify/single
Authentication: Header Auth (reuse Enrow credential)

JSON Body:
{
  "email": "{{$json["email"]}}"
}
```

### Passo 7: Atualizar a planilha do Google Sheets

1. Adicione o nó **"Google Sheets"**
2. Operação: **"Update"**
3. Selecione a mesma planilha
4. Sheet Name: **"Contacts"**
5. Range: **Match row** (use o índice da linha dos dados originais)
6. Mapeie os campos:
   * **Email**: `{{$json["email"]}}`
   * **Status**: `{{$json["confidence"]}}`
   * **Verified**: `{{$json["status"]}}`

## Onde está o JSON completo do fluxo?

Importe o JSON abaixo para obter o fluxo completo em um único passo.

<Note>
  Importe este fluxo para começar imediatamente. Basta atualizar suas chaves de API!
</Note>

<details>
  <summary>Clique para ver o JSON completo do fluxo</summary>

  ```json theme={null}
  {
    "name": "Enrow - Email Enrichment from Google Sheets",
    "nodes": [
      {
        "parameters": {
          "rule": {
            "interval": [{"field": "hours", "hoursInterval": 1}]
          }
        },
        "name": "Every Hour",
        "type": "n8n-nodes-base.cron",
        "typeVersion": 1,
        "position": [240, 300]
      },
      {
        "parameters": {
          "operation": "read",
          "sheetId": "YOUR_SHEET_ID",
          "range": "Contacts!A:F",
          "options": {}
        },
        "name": "Read Contacts",
        "type": "n8n-nodes-base.googleSheets",
        "typeVersion": 3,
        "position": [460, 300]
      },
      {
        "parameters": {
          "conditions": {
            "string": [
              {
                "value1": "={{$json[\"Email\"]}}",
                "operation": "isEmpty"
              }
            ]
          }
        },
        "name": "Filter Empty Emails",
        "type": "n8n-nodes-base.if",
        "typeVersion": 1,
        "position": [680, 300]
      },
      {
        "parameters": {
          "method": "POST",
          "url": "https://api.enrow.io/email/find/single",
          "authentication": "headerAuth",
          "sendBody": true,
          "bodyContentType": "json",
          "jsonBody": "={\n  \"company_domain\": \"{{$json[\"Company Domain\"]}}\",\n  \"fullname\": \"{{$json[\"First Name\"]}} {{$json[\"Last Name\"]}}\"\n}"
        },
        "name": "Find Email",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 3,
        "position": [900, 300],
        "credentials": {
          "headerAuth": {"name": "Enrow API"}
        }
      },
      {
        "parameters": {
          "amount": 5,
          "unit": "seconds"
        },
        "name": "Wait 5s",
        "type": "n8n-nodes-base.wait",
        "typeVersion": 1,
        "position": [1120, 300]
      },
      {
        "parameters": {
          "method": "GET",
          "url": "=https://api.enrow.io/email/find/single?id={{$json[\"id\"]}}",
          "authentication": "headerAuth"
        },
        "name": "Get Result",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 3,
        "position": [1340, 300],
        "credentials": {
          "headerAuth": {"name": "Enrow API"}
        }
      },
      {
        "parameters": {
          "conditions": {
            "string": [
              {
                "value1": "={{$json[\"status\"]}}",
                "value2": "completed"
              }
            ]
          }
        },
        "name": "Check if Complete",
        "type": "n8n-nodes-base.if",
        "typeVersion": 1,
        "position": [1560, 300]
      },
      {
        "parameters": {
          "method": "POST",
          "url": "https://api.enrow.io/email/verify/single",
          "authentication": "headerAuth",
          "sendBody": true,
          "bodyContentType": "json",
          "jsonBody": "={\n  \"email\": \"{{$json[\"email\"]}}\"\n}"
        },
        "name": "Verify Email",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 3,
        "position": [1780, 300],
        "credentials": {
          "headerAuth": {"name": "Enrow API"}
        }
      },
      {
        "parameters": {
          "operation": "update",
          "sheetId": "YOUR_SHEET_ID",
          "range": "=Contacts!A{{$json[\"row\"]}}:F{{$json[\"row\"]}}",
          "options": {
            "valueInputMode": "USER_ENTERED"
          }
        },
        "name": "Update Sheet",
        "type": "n8n-nodes-base.googleSheets",
        "typeVersion": 3,
        "position": [2000, 300]
      }
    ],
    "connections": {
      "Every Hour": {
        "main": [[{"node": "Read Contacts", "type": "main", "index": 0}]]
      },
      "Read Contacts": {
        "main": [[{"node": "Filter Empty Emails", "type": "main", "index": 0}]]
      },
      "Filter Empty Emails": {
        "main": [[{"node": "Find Email", "type": "main", "index": 0}]]
      },
      "Find Email": {
        "main": [[{"node": "Wait 5s", "type": "main", "index": 0}]]
      },
      "Wait 5s": {
        "main": [[{"node": "Get Result", "type": "main", "index": 0}]]
      },
      "Get Result": {
        "main": [[{"node": "Check if Complete", "type": "main", "index": 0}]]
      },
      "Check if Complete": {
        "main": [
          [{"node": "Verify Email", "type": "main", "index": 0}],
          [{"node": "Wait 5s", "type": "main", "index": 0}]
        ]
      },
      "Verify Email": {
        "main": [[{"node": "Update Sheet", "type": "main", "index": 0}]]
      }
    }
  }
  ```
</details>

## Como você pode melhorar o fluxo?

Depois que o fluxo base estiver funcionando, estas adições o tornam mais robusto e eficiente em custos.

### Adicionar tratamento de erros

1. Adicione o nó **"Error Trigger"**
2. Adicione o nó **"Send Email"** ou **"Slack"** para notificar em caso de erros
3. Registre as linhas com falha em uma planilha separada

Para os códigos de status que você pode encontrar e como reagir a eles, consulte [Tratamento de erros](/pt/error-handling) e [Códigos de status](/pt/status-codes).

### Processar em lote

Para melhor desempenho com muitos contatos, troque buscas individuais por um lote:

1. Altere o nó Find Email para usar `/email/find/bulk`
2. Agrupe os contatos em grupos de 100
3. Processe todos de uma vez em vez de um por um

Exemplo de requisição em lote:

```json theme={null}
{
  "searches": [
    {
      "company_domain": "{{$json[\"Company Domain\"]}}",
      "fullname": "{{$json[\"First Name\"]}} {{$json[\"Last Name\"]}}"
    }
  ]
}
```

O endpoint [Encontrar E-mails](/pt/api-reference/email-finder/find-bulk) aceita até 5.000 buscas por lote.

### Adicionar verificação condicional

Verifique apenas e-mails de alta confiança para economizar créditos:

```javascript theme={null}
// In IF node
{{$json["confidence"]}} === "high"
```

Isso economiza créditos ao pular a verificação de e-mails incertos.

## Quando você deve usar este fluxo?

Este fluxo é ideal para:

* **Equipes de vendas**: Enriquecer listas de prospects antes da prospecção
* **Recrutadores**: Encontrar informações de contato de candidatos
* **Profissionais de marketing**: Construir listas de e-mail a partir de bancos de dados de empresas
* **Equipes de dados**: Limpar e enriquecer dados de CRM

## Quais são as boas práticas?

<AccordionGroup>
  <Accordion title="Limites de requisições">
    Se estiver processando listas grandes (mais de 1000 contatos):

    * Use endpoints em lote
    * Adicione atrasos entre os lotes
    * Ou faça upgrade do seu plano Enrow

    Consulte [Limites de requisições](/pt/rate-limits) para os limites de requisições atuais.
  </Accordion>

  <Accordion title="Qualidade dos dados">
    * Sempre verifique os e-mails antes de usá-los
    * Verifique as pontuações de confiança
    * Remova resultados de baixa qualidade
  </Accordion>

  <Accordion title="Otimização de custos">
    * Remova contatos duplicados antes de processar
    * Armazene os resultados em cache para evitar buscas repetidas
    * Use lógica condicional para pular chamadas de API desnecessárias
  </Accordion>

  <Accordion title="Recuperação de erros">
    * Registre todas as respostas da API
    * Acompanhe os enriquecimentos com falha
    * Tente novamente as buscas com falha automaticamente
  </Accordion>
</AccordionGroup>

## Como resolver problemas comuns?

**O fluxo não está sendo executado automaticamente?**

* Verifique se o gatilho Cron está ativado
* Confirme se a agenda está correta

**Nenhum e-mail encontrado?**

* Verifique se os domínios das empresas estão corretos
* Confirme se os nomes estão escritos corretamente
* Tente apenas com o domínio da empresa (sem os nomes)

**A planilha não está atualizando?**

* Verifique as permissões do Google Sheets
* Confirme se o range corresponde aos seus dados
* Teste o nó Update manualmente

## FAQ

<AccordionGroup>
  <Accordion title="Preciso de um webhook ou posso apenas consultar os resultados?">
    Ambos funcionam. O Email Finder é executado de forma assíncrona, então você pode registrar um webhook no campo `settings.webhook` (Opção A) ou consultar o endpoint [Obter Resultado](/pt/api-reference/email-finder/get-single-result) em intervalos regulares (Opção B). Os webhooks são recomendados porque evitam requisições de consulta desnecessárias e retornam os resultados assim que a busca é concluída. Consulte [Como funcionam os webhooks](/pt/how-webhooks-work).
  </Accordion>

  <Accordion title="Quantos créditos o fluxo consome?">
    Cada busca do Email Finder e cada verificação do Email Verifier consomem créditos por chamada. Executar ambos em todos os contatos consome mais créditos do que apenas a busca, então adicione verificação condicional para pular e-mails incertos. Para os custos exatos por endpoint, consulte [Créditos e cobrança](/pt/credits-billing).
  </Accordion>

  <Accordion title="Como autenticar os nós HTTP Request?">
    Use a credencial Header Auth do n8n com o nome de cabeçalho `x-api-key` e sua chave de API do Enrow como valor, e então reutilize a mesma credencial em todos os nós do Enrow. Todos os detalhes estão em [Autenticação](/pt/authentication).
  </Accordion>

  <Accordion title="E se eu tiver milhares de contatos?">
    Troque o nó Find Email pelo endpoint [Encontrar E-mails](/pt/api-reference/email-finder/find-bulk), que aceita até 5.000 buscas por lote, e mantenha-se dentro dos [limites de requisições](/pt/rate-limits) do seu plano.
  </Accordion>
</AccordionGroup>

## Próximos passos

<CardGroup cols={2}>
  <Card title="Fluxo de Verificação" icon="shield-check" href="/pt/playbooks/n8n/lead-verification-workflow">
    Verifique listas de e-mail existentes com o n8n e o Enrow.
  </Card>

  <Card title="Encontrar E-mail" icon="envelope" href="/pt/api-reference/email-finder/find-single">
    Explore o endpoint do Email Finder usado neste fluxo.
  </Card>

  <Card title="Verificar E-mail" icon="circle-check" href="/pt/api-reference/email-verifier/verify-single">
    Verifique se um endereço de e-mail é válido e entregável.
  </Card>

  <Card title="Webhooks" icon="bell" href="/pt/how-webhooks-work">
    Seja notificado automaticamente quando uma busca for concluída.
  </Card>
</CardGroup>
