📊

Airtable

Banco de Dados Visual

Guia completo para integrar Airtable ao N8N. CRUD completo, automações e webhooks.

🎯

Visão Geral

Airtable é como um Excel com poderes de banco de dados. Perfeito para CRMs, gestão de projetos, inventários e qualquer dado estruturado. A API permite CRUD completo.

📥

Ler Registros

Listar, buscar, filtrar

Criar

Novos registros

✏️

Atualizar

Modificar existentes

🗑️

Deletar

Remover registros

1

Obter Personal Access Token

1.1 Acessar Configurações

  1. 1. Acesse airtable.com e faça login
  2. 2. Clique no seu avatar (canto superior direito)
  3. 3. Vá em "Developer Hub"

1.2 Criar Personal Access Token

  1. 1. Clique em "Personal access tokens"
  2. 2. Clique em "Create new token"
  3. 3. Nome: n8n-integration
  4. 4. Selecione os Scopes necessários:
// Scopes recomendados: data.records:read // Ler registros data.records:write // Criar/atualizar/deletar registros schema.bases:read // Ler estrutura das bases // Selecione as bases que o token pode acessar // Ou marque "All current and future bases"

✅ Token Gerado!

Copie o token (começa com pat...). Ele só é mostrado uma vez!

Personal Access Token:

patXXXXXXXXXXXXXX.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2

Obter Base ID e Table ID

📝 Por que preciso dos IDs?

Cada base e tabela tem um ID único. Você precisa deles para fazer operações via API.

Método Fácil: Pela URL

Abra sua base no Airtable e olhe a URL:

// URL do Airtable: https://airtable.com/appXXXXXXXXXXXXXX/tblYYYYYYYYYYYYYY/... ↑ ↑ Base ID Table ID // Exemplo: https://airtable.com/app1234567890abc/tblABCDEF123456/viwXYZ... Base ID: app1234567890abc Table ID: tblABCDEF123456

Via API (para listar todas as bases)

// Listar todas as bases da conta: GET https://api.airtable.com/v0/meta/bases Headers: Authorization: Bearer pat... // Resposta: { "bases": [ { "id": "app1234567890abc", "name": "Minha Base", "permissionLevel": "create" } ] }
3

Configurar no N8N

3.1 Criar Credencial

  1. 1. No N8N, vá em CredenciaisAdicionar
  2. 2. Pesquise: "Airtable API"
  3. 3. Cole o Personal Access Token
  4. 4. Clique em Salvar

3.2 Usar o Node Airtable

O N8N detecta automaticamente suas bases e tabelas após conectar:

Base

Selecione no dropdown

Table

Carrega após selecionar base

📋

Exemplos Práticos

📥 Listar Registros

// Node: Airtable // Operation: List Base: Minha Base Table: Clientes // Opcionais: Max Records: 100 View: Grid view Filter by Formula: {Status} = 'Ativo' Sort: Name (asc) // Retorna array de registros

➕ Criar Registro

// Node: Airtable // Operation: Create Base: Minha Base Table: Clientes Fields: Name: {{ $json.nome }} Email: {{ $json.email }} Phone: {{ $json.telefone }} Status: Novo Created: {{ $now.format('yyyy-MM-dd') }}

✏️ Atualizar Registro

// Node: Airtable // Operation: Update Base: Minha Base Table: Clientes Record ID: {{ $json.airtable_id }} // Atualiza apenas campos especificados: Fields: Status: Convertido Last Contact: {{ $now.format('yyyy-MM-dd') }}

🔍 Buscar por Campo

// Node: Airtable // Operation: Search Base: Minha Base Table: Clientes Filter by Formula: {Email} = '{{ $json.email }}' // Ou busca mais complexa: AND( {Status} = 'Ativo', {Created} >= '2024-01-01' )

🗑️ Deletar Registro

// Node: Airtable // Operation: Delete Base: Minha Base Table: Clientes Record ID: {{ $json.airtable_id }} // ⚠️ Cuidado: não há undo! // Considere usar campo "Deleted" // em vez de deletar de verdade

🔄 Upsert (Create or Update)

// Node: Airtable // Operation: Upsert Base: Minha Base Table: Clientes // Campo para identificar registro: Merge Field: Email Fields: Name: {{ $json.nome }} Email: {{ $json.email }} Phone: {{ $json.telefone }} // Se email existe → atualiza // Se não existe → cria novo
🧮

Fórmulas de Filtro

Sintaxe de Fórmulas Airtable

// Igualdade: {Campo} = 'valor' {Numero} = 100 // Comparação: {Preco} > 50 {Data} >= '2024-01-01' // Texto: FIND('busca', {Campo}) // Contém SEARCH('termo', LOWER({Campo})) // Busca case-insensitive // Lógica: AND({Status} = 'Ativo', {VIP} = TRUE()) OR({Tipo} = 'A', {Tipo} = 'B') NOT({Arquivado}) // Datas: IS_AFTER({Data}, TODAY()) // Data no futuro DATEADD(TODAY(), -30, 'days') // Últimos 30 dias // Campos vazios: {Campo} = BLANK() // Campo vazio {Campo} != BLANK() // Campo preenchido // Exemplo complexo: AND( {Status} = 'Lead', IS_AFTER({Created}, DATEADD(TODAY(), -7, 'days')), {Score} >= 50 )
🔧

Troubleshooting

❌ "INVALID_REQUEST_UNKNOWN"

Causa: Nome de campo incorreto ou tipo de dado errado.

Solução: Verifique os nomes dos campos (case sensitive). Use exatamente como aparece no Airtable.

❌ "INVALID_PERMISSIONS"

Causa: Token não tem permissão para a base/operação.

Solução: Regenere o token incluindo a base e os scopes necessários.

❌ Rate Limit (429)

Causa: Muitas requisições (limite: 5/seg).

Solução: Use batch operations (até 10 registros por request) ou adicione delay entre requisições.

Airtable Configurado!

Agora você pode usar Airtable como banco de dados para suas automações.