Airtable-koppling
Anslut dina Airtable-baser till Brevo för CRM-synkronisering, hantering av produktkatalog och automatiserade marknadsföringsflöden som drivs av strukturerad data via Tajo.
Översikt
| Egenskap | Värde |
|---|---|
| Plattform | Airtable |
| Kategori | Anpassad |
| Installationskomplexitet | Enkel |
| Officiell integration | Nej |
| Data som synkas | Poster, tabeller, användare |
| API-typ | REST API |
| Autentisering | Personal Access Token / OAuth 2.0 |
| Bas-URL | https://api.airtable.com/v0/ |
Funktioner
- Synk från tabell till lista - Synka Airtables tabellposter direkt till Brevo-kontaktlistor
- Brygga för produktkatalog - Använd Airtable-tabeller som produktkataloger för e-postrekommendationer
- CRM-synkronisering - Dubbelriktad synk mellan Airtable CRM och Brevo-kontakter
- Händelser för formulärsvar - Vidarebefordra Airtable-formulärsvar som Brevo-händelser
- Vy-baserad filtrering - Synka specifika Airtable-vyer till målinriktade Brevo-listor
- Webhook-automation - Utlös Brevo-kampanjer när Airtable-poster ändras
Förutsättningar
Innan du börjar, se till att du har:
- Ett Airtable-konto (Free-plan eller högre)
- En Personal Access Token eller OAuth-app konfigurerad
- Åtkomst till baserna och tabellerna du vill synkronisera
- Ett Brevo-konto med API-åtkomst
- Ett Tajo-konto med aktivt abonnemang
Autentisering
Airtable stöder Personal Access Tokens och OAuth 2.0.
Alternativ 1: Personal Access Token (rekommenderas)
- Gå till airtable.com/create/tokens
- Klicka på Create new token
- Namnge den “Tajo Integration”
- Lägg till scopes:
data.records:readdata.records:writedata.recordComments:readschema.bases:readwebhook:manage- Lägg till åtkomst till specifika baser eller alla baser
- Klicka på Create token
Alternativ 2: OAuth 2.0
För integrationer med flera användare, använd OAuth 2.0-flödet:
- Registrera din integration på airtable.com/create/oauth
- Konfigurera redirect-URI:
https://app.tajo.io/callbacks/airtable - Begär samma scopes som ovan
Scope för tokens
Personal Access Tokens kan scopas till specifika baser. Av säkerhetsskäl ska du endast bevilja åtkomst till de baser din integration behöver istället för att välja “All current and future bases.”
Ansluta till Tajo
tajo connectors install airtable \ --token $AIRTABLE_TOKENKonfiguration
Grundinställning
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"Fältmappning
Mappa Airtable-fält till Brevo-kontaktattribut:
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_DATEVy-baserad synk
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 integrerar med följande endpoints i Airtables Web API:
| Endpoint | Metod | Syfte |
|---|---|---|
/v0/{baseId}/{tableIdOrName} | GET | Lista poster i en tabell |
/v0/{baseId}/{tableIdOrName} | POST | Skapa poster |
/v0/{baseId}/{tableIdOrName} | PATCH | Uppdatera poster |
/v0/{baseId}/{tableIdOrName} | DELETE | Radera poster |
/v0/{baseId}/{tableIdOrName}/{recordId} | GET | Hämta en enstaka post |
/v0/meta/bases | GET | Lista tillgängliga baser |
/v0/meta/bases/{baseId}/tables | GET | Lista tabeller i en bas |
/v0/{baseId}/{tableIdOrName}/listRecordComments | GET | Lista postkommentarer |
/v0/bases/{baseId}/webhooks | POST | Skapa en webhook |
/v0/bases/{baseId}/webhooks | GET | Lista webhooks |
Kodexempel
Initiera kopplingen
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});Synka tabell till 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// }Hantera 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');});Skapa post från 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] } }); }});Hastighetsbegränsningar
Airtable tillämpar hastighetsbegränsningar per bas:
| Typ av gräns | Värde |
|---|---|
| API-hastighetsbegränsning | 5 förfrågningar per sekund per bas |
| Poster per förfrågan | Max 100 poster (list), max 10 poster (skapa/uppdatera) |
| Webhook-nyttolaster | 50 nyttolaster per listWebhookPayloads-anrop |
| Förfrågningsstorlek | Max ~2MB nyttolast |
Batch-operationer
Airtable tillåter att du skapar eller uppdaterar upp till 10 poster per förfrågan. Tajo batchar automatiskt större operationer till flera förfrågningar samtidigt som hastighetsbegränsningar respekteras.
Felsökning
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
| 401 Unauthorized | Ogiltig eller utgången token | Återgenerera Personal Access Token |
| 403 Forbidden | Token saknar basåtkomst | Lägg till basen i tokens scope |
| 404 Not Found | Ogiltigt bas- eller tabell-ID | Verifiera bas-ID och tabellnamn |
| 422 Invalid Request | Inkompatibel fälttyp | Kontrollera att Airtables fälttyper matchar din data |
| Hastighetsbegränsning överskriden | Fler än 5 förfrågningar/sek per bas | Minska synkfrekvensen eller förskjut synkar mellan baser |
Felsökningsläge
connectors: airtable: debug: true log_level: verbose log_api_calls: trueTesta anslutning
tajo connectors test airtable# ✓ API authentication successful# ✓ Base access verified# ✓ Table schema readable# ✓ Record listing operational# ✓ Webhook registration availableBästa praxis
- Scope tokens till specifika baser - Bevilja inte åtkomst till alla baser om det inte är nödvändigt
- Använd vyer för filtrerad synk - Synka specifika vyer istället för hela tabeller för att minska datavolym
- Batcha postoperationer - Gruppera skapa- och uppdateraoperationer i batcher om 10
- Hantera paginering - Airtable returnerar 100 poster per sida; iterera med
offset - Använd webhooks för realtid - Registrera webhooks istället för att polla efter ändringar
- Mappa fälttyper exakt - Matcha Airtables fälttyper (select, number, date) till Brevo-attributtyper
Säkerhet
- Personal Access Tokens - Scopade till specifika baser och operationer
- OAuth 2.0 - Säkert auktoriseringsflöde med refresh-tokens
- Endast HTTPS - All API-kommunikation krypterad via TLS 1.2+
- Åtkomstkontroll på basnivå - Tokens scopade till individuella baser
- Krypterad lagring - Tokens krypterade i vila i Tajo
- HMAC-verifiering av webhooks - Verifiera äktheten i webhook-notiser