Connettore Airtable
Collega le tue basi Airtable a Brevo per la sincronizzazione CRM, la gestione del catalogo prodotti e flussi di marketing automation basati su dati strutturati tramite Tajo.
Panoramica
| Proprietà | Valore |
|---|---|
| Piattaforma | Airtable |
| Categoria | Custom |
| Complessità di setup | Facile |
| Integrazione ufficiale | No |
| Dati sincronizzati | Record, Tabelle, Utenti |
| Tipo di API | REST API |
| Autenticazione | Personal Access Token / OAuth 2.0 |
| Base URL | https://api.airtable.com/v0/ |
Funzionalità
- Sync tabella-lista - Sincronizza i record delle tabelle Airtable direttamente nelle liste contatti Brevo
- Ponte per catalogo prodotti - Usa le tabelle Airtable come cataloghi prodotti per raccomandazioni via email
- Sincronizzazione CRM - Sync bidirezionale tra CRM Airtable e contatti Brevo
- Eventi da invio form - Inoltra gli invii dei form Airtable come eventi Brevo
- Filtri basati su view - Sincronizza specifiche view Airtable su liste Brevo mirate
- Automazione via webhook - Attiva campagne Brevo quando i record Airtable cambiano
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un account Airtable (piano Free o superiore)
- Un Personal Access Token o un’app OAuth configurata
- Accesso alle basi e tabelle che vuoi sincronizzare
- Un account Brevo con accesso API
- Un account Tajo con abbonamento attivo
Autenticazione
Airtable supporta Personal Access Token e OAuth 2.0.
Opzione 1: Personal Access Token (consigliato)
- Vai su airtable.com/create/tokens
- Clicca su Create new token
- Nominalo “Tajo Integration”
- Aggiungi gli scope:
data.records:readdata.records:writedata.recordComments:readschema.bases:readwebhook:manage- Aggiungi l’accesso a basi specifiche o a tutte le basi
- Clicca Create token
Opzione 2: OAuth 2.0
Per integrazioni multi-utente, usa il flusso OAuth 2.0:
- Registra la tua integrazione su airtable.com/create/oauth
- Configura la redirect URI:
https://app.tajo.io/callbacks/airtable - Richiedi gli stessi scope sopra
Scoping del token
I Personal Access Token possono essere limitati a basi specifiche. Per sicurezza, concedi l’accesso solo alle basi che l’integrazione richiede, anziché selezionare “All current and future bases”.
Connessione a Tajo
tajo connectors install airtable \ --token $AIRTABLE_TOKENConfigurazione
Setup di base
connectors: airtable: enabled: true
sync: records: true comments: false
tables: - base_id: "appXXXXXXXXXXXXXX" table_name: "Customers" view: "Active Customers" sync_to_list: 28 - base_id: "appXXXXXXXXXXXXXX" table_name: "Products" sync_as: "catalog"Mapping dei campi
Mappa i campi Airtable agli attributi dei contatti Brevo:
field_mapping: # Campo Airtable -> attributo Brevo Name: FIRSTNAME Email: email Phone: SMS Company: COMPANY Status: LEAD_STATUS Revenue: TOTAL_REVENUE "Last Contact": LAST_CONTACT_DATE Tags: TAGS Notes: NOTES "Created Time": SIGNUP_DATESync basato su view
views: - base_id: "appXXXXXXXXXXXXXX" table_name: "Customers" view: "High Value" sync_to_list: 29 filter_by_view: true
- base_id: "appXXXXXXXXXXXXXX" table_name: "Customers" view: "Churned" sync_to_list: 30 filter_by_view: trueEndpoint API
Tajo si integra con i seguenti endpoint della Web API di Airtable:
| Endpoint | Metodo | Scopo |
|---|---|---|
/v0/{baseId}/{tableIdOrName} | GET | Elenca record in una tabella |
/v0/{baseId}/{tableIdOrName} | POST | Crea record |
/v0/{baseId}/{tableIdOrName} | PATCH | Aggiorna record |
/v0/{baseId}/{tableIdOrName} | DELETE | Elimina record |
/v0/{baseId}/{tableIdOrName}/{recordId} | GET | Recupera un singolo record |
/v0/meta/bases | GET | Elenca le basi accessibili |
/v0/meta/bases/{baseId}/tables | GET | Elenca le tabelle in una base |
/v0/{baseId}/{tableIdOrName}/listRecordComments | GET | Elenca commenti ai record |
/v0/bases/{baseId}/webhooks | POST | Crea un webhook |
/v0/bases/{baseId}/webhooks | GET | Elenca i webhook |
Esempi di codice
Inizializzare il connettore
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('airtable', { token: process.env.AIRTABLE_TOKEN});Sincronizzare una tabella su Brevo
// Sincronizza una tabella Airtable su una lista Brevoawait tajo.connectors.sync('airtable', { type: 'full', resources: ['records'], baseId: 'appXXXXXXXXXXXXXX', tableName: 'Customers', view: 'Active Customers', targetList: 28});
const status = await tajo.connectors.status('airtable');console.log(status);// {// connected: true,// lastSync: '2024-03-15T15:00:00Z',// recordsSynced: 2340,// tablesMonitored: 2,// basesConnected: 1// }Gestire i webhook
// I webhook Airtable notificano le modifiche; recupera i dettagli con cursorapp.post('/webhooks/airtable', async (req, res) => { const { base, webhook, timestamp } = req.body;
// Recupera i record modificati usando il cursor del webhook const changes = await tajo.connectors.getWebhookPayloads('airtable', { baseId: base.id, webhookId: webhook.id, cursor: timestamp });
for (const change of changes) { await tajo.connectors.handleEvent('airtable', { type: change.actionType, payload: change }); }
res.status(200).send('OK');});Creare un record da Brevo
// Crea un record Airtable quando un contatto Brevo convertetajo.events.on('contact.attribute_updated', async (event) => { if (event.attribute === 'LIFECYCLE_STAGE' && event.value === 'customer') { await tajo.connectors.create('airtable', { baseId: 'appXXXXXXXXXXXXXX', tableName: 'Customers', fields: { Name: event.contact.name, Email: event.contact.email, Status: 'Customer', 'Converted Date': new Date().toISOString().split('T')[0] } }); }});Limiti di rate
Airtable applica limiti di rate per base:
| Tipo di limite | Valore |
|---|---|
| Rate limit API | 5 richieste al secondo per base |
| Record per richiesta | 100 record max (list), 10 record max (create/update) |
| Payload webhook | 50 payload per chiamata listWebhookPayloads |
| Dimensione richiesta | Payload max ~2MB |
Operazioni batch
Airtable consente di creare o aggiornare fino a 10 record per richiesta. Tajo raggruppa automaticamente le operazioni più grandi in più richieste rispettando i limiti di rate.
Risoluzione dei problemi
Problemi comuni
| Problema | Causa | Soluzione |
|---|---|---|
| 401 Unauthorized | Token non valido o scaduto | Rigenera il Personal Access Token |
| 403 Forbidden | Il token non ha accesso alla base | Aggiungi la base allo scope del tuo token |
| 404 Not Found | ID base o tabella non valido | Verifica base ID e nome tabella |
| 422 Invalid Request | Mismatch di tipo di campo | Controlla che i tipi di campo Airtable corrispondano ai tuoi dati |
| Rate limit superato | Più di 5 req/s per base | Riduci la frequenza di sync o distribuisci i sync tra le basi |
Modalità debug
connectors: airtable: debug: true log_level: verbose log_api_calls: trueTestare la connessione
tajo connectors test airtable# ✓ Autenticazione API riuscita# ✓ Accesso alla base verificato# ✓ Schema tabella leggibile# ✓ Elenco record operativo# ✓ Registrazione webhook disponibileBest practice
- Limita gli scope dei token a basi specifiche - Non concedere l’accesso a tutte le basi se non necessario
- Usa le view per sync filtrati - Sincronizza view specifiche anziché tabelle intere per ridurre il volume di dati
- Raggruppa le operazioni sui record - Combina create e update in batch da 10
- Gestisci la paginazione - Airtable restituisce 100 record per pagina; itera con
offset - Usa i webhook per il real-time - Registra webhook invece di effettuare polling
- Mappa i tipi di campo con precisione - Fai corrispondere i tipi di campo Airtable (select, number, date) ai tipi di attributo Brevo
Sicurezza
- Personal Access Token - Limitati a basi e operazioni specifiche
- OAuth 2.0 - Flusso di autorizzazione sicuro con refresh token
- Solo HTTPS - Tutte le comunicazioni API cifrate tramite TLS 1.2+
- Controllo accessi a livello di base - Token limitati a singole basi
- Archiviazione cifrata - Token cifrati a riposo in Tajo
- Verifica HMAC dei webhook - Verifica l’autenticità delle notifiche webhook