Airtable Connector
Verbinde deine Airtable-Bases über Tajo mit Brevo für CRM-Synchronisierung, Produktkatalogpflege und automatisierte Marketing-Workflows auf Basis strukturierter Daten.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Airtable |
| Kategorie | Custom |
| Einrichtungsaufwand | Einfach |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Datensätze, Tabellen, Nutzer:innen |
| API-Typ | REST-API |
| Authentifizierung | Personal Access Token / OAuth 2.0 |
| Basis-URL | https://api.airtable.com/v0/ |
Funktionen
- Synchronisierung Tabelle zu Liste - Synchronisiere Datensätze aus Airtable-Tabellen direkt in Brevo-Kontaktlisten
- Produktkatalog-Bridge - Nutze Airtable-Tabellen als Produktkataloge für E-Mail-Empfehlungen
- CRM-Synchronisierung - Bidirektionale Synchronisierung zwischen Airtable-CRM und Brevo-Kontakten
- Events aus Formularübermittlungen - Leite Airtable-Formulareinsendungen als Brevo-Events weiter
- View-basierte Filterung - Synchronisiere bestimmte Airtable-Views in zielgerichtete Brevo-Listen
- Webhook-Automatisierung - Löse Brevo-Kampagnen aus, wenn sich Airtable-Datensätze ändern
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein Airtable-Konto (Free-Plan oder höher)
- Ein konfiguriertes Personal Access Token oder eine OAuth-App
- Zugriff auf die Bases und Tabellen, die du synchronisieren möchtest
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto mit aktivem Abonnement
Authentifizierung
Airtable unterstützt Personal Access Tokens und OAuth 2.0.
Option 1: Personal Access Token (Empfohlen)
- Gehe zu airtable.com/create/tokens
- Klicke auf Create new token
- Benenne es mit “Tajo Integration”
- Füge Scopes hinzu:
data.records:readdata.records:writedata.recordComments:readschema.bases:readwebhook:manage- Füge Zugriff auf bestimmte Bases oder alle Bases hinzu
- Klicke auf Create token
Option 2: OAuth 2.0
Für Integrationen mit mehreren Nutzer:innen verwende den OAuth-2.0-Flow:
- Registriere deine Integration unter airtable.com/create/oauth
- Konfiguriere die Redirect-URI:
https://app.tajo.io/callbacks/airtable - Fordere dieselben Scopes wie oben an
Token-Scoping
Personal Access Tokens können auf bestimmte Bases beschränkt werden. Gewähre aus Sicherheitsgründen nur Zugriff auf die Bases, die deine Integration benötigt, anstatt “All current and future bases” auszuwählen.
Verbindung zu Tajo herstellen
tajo connectors install airtable \ --token $AIRTABLE_TOKENKonfiguration
Grundeinrichtung
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"Feldzuordnung
Ordne Airtable-Felder Brevo-Kontaktattributen zu:
field_mapping: # Airtable field -> Brevo attribute 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_DATEView-basierte Synchronisierung
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: trueAPI-Endpunkte
Tajo integriert die folgenden Endpunkte der Airtable Web API:
| Endpunkt | Methode | Zweck |
|---|---|---|
/v0/{baseId}/{tableIdOrName} | GET | Datensätze in einer Tabelle auflisten |
/v0/{baseId}/{tableIdOrName} | POST | Datensätze anlegen |
/v0/{baseId}/{tableIdOrName} | PATCH | Datensätze aktualisieren |
/v0/{baseId}/{tableIdOrName} | DELETE | Datensätze löschen |
/v0/{baseId}/{tableIdOrName}/{recordId} | GET | Einen einzelnen Datensatz abrufen |
/v0/meta/bases | GET | Zugängliche Bases auflisten |
/v0/meta/bases/{baseId}/tables | GET | Tabellen einer Base auflisten |
/v0/{baseId}/{tableIdOrName}/listRecordComments | GET | Datensatz-Kommentare auflisten |
/v0/bases/{baseId}/webhooks | POST | Einen Webhook anlegen |
/v0/bases/{baseId}/webhooks | GET | Webhooks auflisten |
Code-Beispiele
Connector initialisieren
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});Tabelle mit Brevo synchronisieren
// Sync an Airtable table to a Brevo listawait 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// }Webhooks verarbeiten
// Airtable webhooks notify of changes; fetch details with cursorapp.post('/webhooks/airtable', async (req, res) => { const { base, webhook, timestamp } = req.body;
// Fetch changed records using webhook cursor 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');});Datensatz aus Brevo erstellen
// Create an Airtable record when a Brevo contact convertstajo.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] } }); }});Ratenbegrenzungen
Airtable erzwingt Ratenbegrenzungen pro Base:
| Limit-Typ | Wert |
|---|---|
| API-Rate-Limit | 5 Anfragen pro Sekunde pro Base |
| Datensätze pro Anfrage | Max. 100 Datensätze (List), max. 10 Datensätze (Create/Update) |
| Webhook-Payloads | 50 Payloads pro listWebhookPayloads-Aufruf |
| Anfragegröße | Payload max. ~2 MB |
Batch-Operationen
Airtable erlaubt das Anlegen oder Aktualisieren von bis zu 10 Datensätzen pro Anfrage. Tajo bündelt größere Operationen automatisch in mehrere Anfragen und berücksichtigt dabei die Ratenbegrenzungen.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Unauthorized | Ungültiges oder abgelaufenes Token | Personal Access Token erneut generieren |
| 403 Forbidden | Token fehlt Base-Zugriff | Base dem Scope des Tokens hinzufügen |
| 404 Not Found | Ungültige Base- oder Tabellen-ID | Base-ID und Tabellennamen prüfen |
| 422 Invalid Request | Feldtyp passt nicht | Prüfen, ob Airtable-Feldtypen zu deinen Daten passen |
| Ratenbegrenzung überschritten | Mehr als 5 Anf./s pro Base | Synchronisationsfrequenz reduzieren oder Syncs zeitlich staffeln |
Debug-Modus
connectors: airtable: debug: true log_level: verbose log_api_calls: trueVerbindung testen
tajo connectors test airtable# ✓ API authentication successful# ✓ Base access verified# ✓ Table schema readable# ✓ Record listing operational# ✓ Webhook registration availableBest Practices
- Tokens auf bestimmte Bases beschränken - Gewähre nicht ohne Notwendigkeit Zugriff auf alle Bases
- Views für gefilterte Synchronisierung nutzen - Synchronisiere bestimmte Views statt vollständiger Tabellen, um das Datenvolumen zu reduzieren
- Datensatzoperationen bündeln - Gruppiere Creates und Updates in Batches von 10
- Paginierung handhaben - Airtable liefert 100 Datensätze pro Seite; iteriere mit
offset - Webhooks für Echtzeit nutzen - Registriere Webhooks statt auf Änderungen zu pollen
- Feldtypen exakt zuordnen - Passe Airtable-Feldtypen (Select, Number, Date) zu Brevo-Attributtypen
Sicherheit
- Personal Access Tokens - Auf bestimmte Bases und Operationen beschränkt
- OAuth 2.0 - Sicherer Autorisierungsflow mit Refresh-Tokens
- Nur HTTPS - Die gesamte API-Kommunikation ist per TLS 1.2+ verschlüsselt
- Zugriffskontrolle auf Base-Ebene - Tokens sind auf einzelne Bases beschränkt
- Verschlüsselte Speicherung - Tokens werden in Tajo verschlüsselt gespeichert
- Webhook-HMAC-Verifizierung - Authentizität von Webhook-Benachrichtigungen prüfen