Airtable Connector
Forbind dine Airtable-baser med Brevo for CRM-synkronisering, produktkatalogstyring og automatiserede marketing-workflows drevet af strukturerede data gennem Tajo.
Oversigt
| Egenskab | Værdi |
|---|---|
| Platform | Airtable |
| Kategori | Brugerdefineret |
| Opsætningskompleksitet | Let |
| Officiel integration | Nej |
| Synkroniserede data | Poster, tabeller, brugere |
| API-type | REST API |
| Autentifikation | Personal Access Token / OAuth 2.0 |
| Base-URL | https://api.airtable.com/v0/ |
Funktioner
- Tabel-til-liste-synkronisering - Synkronisér Airtable-tabelposter direkte til Brevo-kontaktlister
- Produktkatalogsbro - Brug Airtable-tabeller som produktkataloger til e-mailanbefalinger
- CRM-synkronisering - Tovejssynkronisering mellem Airtable CRM og Brevo-kontakter
- Formularindsendelseshændelser - Videresend Airtable-formularindsendelser som Brevo-hændelser
- Visningsbaseret filtrering - Synkronisér specifikke Airtable-visninger til målrettede Brevo-lister
- Webhook-automatisering - Udløs Brevo-kampagner, når Airtable-poster ændres
Forudsætninger
Før du begynder, skal du sikre dig, at du har:
- En Airtable-konto (Free-plan eller derover)
- Et Personal Access Token eller en OAuth-app konfigureret
- Adgang til de baser og tabeller, du vil synkronisere
- En Brevo-konto med API-adgang
- En Tajo-konto med aktivt abonnement
Autentifikation
Airtable understøtter Personal Access Tokens og OAuth 2.0.
Mulighed 1: Personal Access Token (anbefalet)
- Gå til airtable.com/create/tokens
- Klik på Create new token
- Navngiv det “Tajo Integration”
- Tilføj scopes:
data.records:readdata.records:writedata.recordComments:readschema.bases:readwebhook:manage- Tilføj adgang til specifikke baser eller alle baser
- Klik på Create token
Mulighed 2: OAuth 2.0
Til integrationer med flere brugere skal du bruge OAuth 2.0-flowet:
- Registrér din integration på airtable.com/create/oauth
- Konfigurér redirect-URI:
https://app.tajo.io/callbacks/airtable - Anmod om de samme scopes som ovenfor
Token-scoping
Personal Access Tokens kan scopes til specifikke baser. Af hensyn til sikkerheden bør du kun give adgang til de baser, din integration har brug for, i stedet for at vælge “All current and future bases”.
Forbind til Tajo
tajo connectors install airtable \ --token $AIRTABLE_TOKENKonfiguration
Grundlæggende opsætning
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"Feltmapping
Kortlæg Airtable-felter til Brevo-kontaktattributter:
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_DATEVisningsbaseret synkronisering
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-endpoints
Tajo integrerer med følgende Airtable Web API-endpoints:
| Endpoint | Metode | Formål |
|---|---|---|
/v0/{baseId}/{tableIdOrName} | GET | Vis poster i en tabel |
/v0/{baseId}/{tableIdOrName} | POST | Opret poster |
/v0/{baseId}/{tableIdOrName} | PATCH | Opdatér poster |
/v0/{baseId}/{tableIdOrName} | DELETE | Slet poster |
/v0/{baseId}/{tableIdOrName}/{recordId} | GET | Hent en enkelt post |
/v0/meta/bases | GET | Vis tilgængelige baser |
/v0/meta/bases/{baseId}/tables | GET | Vis tabeller i en base |
/v0/{baseId}/{tableIdOrName}/listRecordComments | GET | Vis postkommentarer |
/v0/bases/{baseId}/webhooks | POST | Opret en webhook |
/v0/bases/{baseId}/webhooks | GET | Vis webhooks |
Kodeeksempler
Initialisér connector
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});Synkronisér tabel til Brevo
// 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// }Håndtér webhooks
// 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');});Opret post fra Brevo
// 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] } }); }});Rate limits
Airtable håndhæver rate limits pr. base:
| Grænsetype | Værdi |
|---|---|
| API-rate-limit | 5 anmodninger pr. sekund pr. base |
| Poster pr. anmodning | Maks. 100 poster (list), maks. 10 poster (opret/opdatér) |
| Webhook-payloads | 50 payloads pr. listWebhookPayloads-kald |
| Anmodningsstørrelse | Maks. payload ~2 MB |
Batch-operationer
Airtable tillader oprettelse eller opdatering af op til 10 poster pr. anmodning. Tajo batcher automatisk større operationer i flere anmodninger, samtidig med at rate limits respekteres.
Fejlfinding
Almindelige problemer
| Problem | Årsag | Løsning |
|---|---|---|
| 401 Unauthorized | Ugyldigt eller udløbet token | Regenerér Personal Access Token |
| 403 Forbidden | Token mangler base-adgang | Tilføj basen til dit tokens scope |
| 404 Not Found | Ugyldigt base- eller tabel-ID | Verificér base-ID og tabelnavn |
| 422 Invalid Request | Felttypemismatch | Kontrollér, at Airtable-felttyper matcher dine data |
| Rate limit overskredet | Mere end 5 anmodninger/sek. pr. base | Reducér synkroniseringsfrekvensen eller fordel base-synkroniseringer |
Debug-tilstand
connectors: airtable: debug: true log_level: verbose log_api_calls: trueTestforbindelse
tajo connectors test airtable# ✓ API authentication successful# ✓ Base access verified# ✓ Table schema readable# ✓ Record listing operational# ✓ Webhook registration availableBedste praksis
- Scopes tokens til specifikke baser - Giv ikke adgang til alle baser, medmindre det er nødvendigt
- Brug visninger til filtreret synkronisering - Synkronisér specifikke visninger i stedet for fulde tabeller for at reducere datamængden
- Batch postoperationer - Gruppér oprettelser og opdateringer i batches på 10
- Håndtér paginering - Airtable returnerer 100 poster pr. side; itérér med
offset - Brug webhooks til realtid - Registrér webhooks i stedet for at polle efter ændringer
- Kortlæg felttyper præcist - Match Airtable-felttyper (select, number, date) til Brevo-attributtyper
Sikkerhed
- Personal Access Tokens - Scopes til specifikke baser og operationer
- OAuth 2.0 - Sikkert autorisationsflow med refresh-tokens
- Kun HTTPS - Al API-kommunikation krypteres via TLS 1.2+
- Adgangskontrol på base-niveau - Tokens scopes til individuelle baser
- Krypteret opbevaring - Tokens krypteres i hvile i Tajo
- Webhook-HMAC-verifikation - Verificér ægtheden af webhook-notifikationer