Airtable konektor
Poveži svoje Airtable baze sa Brevo za CRM sinhronizaciju, upravljanje katalogom proizvoda i automatizovane marketing tokove pokretane strukturiranim podacima putem Tajo.
Pregled
| Svojstvo | Vrednost |
|---|---|
| Platforma | Airtable |
| Kategorija | Prilagođeno |
| Složenost podešavanja | Lako |
| Zvanična integracija | Ne |
| Sinhronizovani podaci | Zapisi, Tabele, Korisnici |
| Tip API-ja | REST API |
| Autentifikacija | Personal Access Token / OAuth 2.0 |
| Osnovni URL | https://api.airtable.com/v0/ |
Karakteristike
- Sinhronizacija tabele sa listom - Direktna sinhronizacija zapisa Airtable tabele sa Brevo listama kontakata
- Most kataloga proizvoda - Koristi Airtable tabele kao kataloge proizvoda za email preporuke
- CRM sinhronizacija - Dvosrna sinhronizacija između Airtable CRM i Brevo kontakata
- Događaji slanja formulara - Prosleđivanje Airtable slanja formulara kao Brevo događaja
- Filtriranje zasnovano na prikazima - Sinhronizuj specifične Airtable prikaze na ciljane Brevo liste
- Webhook automatizacija - Pokretanje Brevo kampanja kada se Airtable zapisi promene
Preduslovi
Pre nego što započneš, proveri da imaš:
- Airtable nalog (Free plan ili više)
- Personal Access Token ili konfigurisanu OAuth aplikaciju
- Pristup bazama i tabelama koje želiš/žeš da sinhronizuješ
- Brevo nalog sa API pristupom
- Tajo nalog sa aktivnom pretplatom
Autentifikacija
Airtable podržava Personal Access Tokens i OAuth 2.0.
Opcija 1: Personal Access Token (preporučeno)
- Idi na airtable.com/create/tokens
- Klikni Create new token
- Nazovi ga “Tajo Integration”
- Dodaj skopove:
data.records:readdata.records:writedata.recordComments:readschema.bases:readwebhook:manage- Dodaj pristup specifičnim bazama ili svim bazama
- Klikni Create token
Opcija 2: OAuth 2.0
Za integracije sa više korisnika, koristi OAuth 2.0 tok:
- Registruj svoju integraciju na airtable.com/create/oauth
- Konfiguriši redirect URI:
https://app.tajo.io/callbacks/airtable - Zatraži iste skopove kao gore
Skopovanje tokena
Personal Access Tokens se mogu skopovati na specifične baze. Radi bezbednosti, dodeli pristup samo onim bazama koje tvoja integracija treba, umesto da biraš “All current and future bases.”
Povezivanje sa Tajo
tajo connectors install airtable \ --token $AIRTABLE_TOKENKonfiguracija
Osnovno podešavanje
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"Mapiranje polja
Mapiranje Airtable polja na Brevo atribute kontakta:
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_DATESinhronizacija zasnovana na prikazima
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 endpointi
Tajo se integriše sa sledećim Airtable Web API endpointima:
| Endpoint | Metoda | Svrha |
|---|---|---|
/v0/{baseId}/{tableIdOrName} | GET | Listanje zapisa u tabeli |
/v0/{baseId}/{tableIdOrName} | POST | Kreiranje zapisa |
/v0/{baseId}/{tableIdOrName} | PATCH | Ažuriranje zapisa |
/v0/{baseId}/{tableIdOrName} | DELETE | Brisanje zapisa |
/v0/{baseId}/{tableIdOrName}/{recordId} | GET | Dohvatanje jednog zapisa |
/v0/meta/bases | GET | Listanje dostupnih baza |
/v0/meta/bases/{baseId}/tables | GET | Listanje tabela u bazi |
/v0/{baseId}/{tableIdOrName}/listRecordComments | GET | Listanje komentara zapisa |
/v0/bases/{baseId}/webhooks | POST | Kreiranje webhook-a |
/v0/bases/{baseId}/webhooks | GET | Listanje webhook-ova |
Primeri koda
Inicijalizacija konektora
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});Sinhronizacija tabele sa 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// }Obrada webhook-ova
// 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');});Kreiranje zapisa iz 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] } }); }});Ograničenja brzine
Airtable primenjuje ograničenja brzine po bazi:
| Tip limita | Vrednost |
|---|---|
| API limit brzine | 5 zahteva u sekundi po bazi |
| Zapisi po zahtevu | Maksimalno 100 zapisa (listanje), maksimalno 10 zapisa (kreiranje/ažuriranje) |
| Webhook payload-i | 50 payload-a po listWebhookPayloads pozivu |
| Veličina zahteva | Maksimalno ~2MB payload |
Batch operacije
Airtable dozvoljava kreiranje ili ažuriranje do 10 zapisa po zahtevu. Tajo automatski grupišu veće operacije u više zahteva poštujući ograničenja brzine.
Rešavanje problema
Česti problemi
| Problem | Uzrok | Rešenje |
|---|---|---|
| 401 Unauthorized | Nevažeći ili istekao token | Regeneriši Personal Access Token |
| 403 Forbidden | Token nema pristup bazi | Dodaj bazu u skop tvog tokena |
| 404 Not Found | Nevažeći ID baze ili tabele | Proveri ID baze i naziv tabele |
| 422 Invalid Request | Nepodudaranje tipa polja | Proveri da tipovi Airtable polja odgovaraju tvojim podacima |
| Prekoračen limit brzine | Više od 5 zahteva/sek po bazi | Smanji učestalost sinhronizacije ili rasporedi sinhronizacije baza |
Debug režim
connectors: airtable: debug: true log_level: verbose log_api_calls: trueTestiraj vezu
tajo connectors test airtable# ✓ API authentication successful# ✓ Base access verified# ✓ Table schema readable# ✓ Record listing operational# ✓ Webhook registration availableNajbolje prakse
- Skopuj tokene na specifične baze - Ne dodeljivati pristup svim bazama osim ako nije neophodno
- Koristi prikaze za filtrirano sinhronizovanje - Sinhronizuj specifične prikaze umesto punih tabela da smanjiš obim podataka
- Grupiši operacije zapisa - Grupiši kreiranja i ažuriranja u batch-eve od 10
- Obrada paginacije - Airtable vraća 100 zapisa po stranici; iteriraj sa
offset - Koristi webhook-ove za real-time - Registruj webhook-ove umesto ispitivanja za promene
- Precizno mapiraj tipove polja - Podudaraj Airtable tipove polja (select, number, date) sa Brevo tipovima atributa
Bezbednost
- Personal Access Tokens - Skopovani na specifične baze i operacije
- OAuth 2.0 - Bezbedan tok autorizacije sa refresh tokenima
- Samo HTTPS - Sva API komunikacija enkriptovana putem TLS 1.2+
- Kontrola pristupa na nivou baze - Tokeni skopovani na pojedinačne baze
- Enkriptovano skladištenje - Tokeni enkriptovani u mirovanju u Tajo
- HMAC verifikacija webhook-ova - Proveri autentičnost webhook obaveštenja