Konektor Airtable
Połącz swoje bazy Airtable z Brevo, aby synchronizować CRM, zarządzać katalogiem produktów i uruchamiać zautomatyzowane przepływy marketingowe oparte na ustrukturyzowanych danych przez Tajo.
Przegląd
| Właściwość | Wartość |
|---|---|
| Platforma | Airtable |
| Kategoria | Niestandardowa |
| Poziom konfiguracji | Łatwy |
| Integracja oficjalna | Nie |
| Synchronizowane dane | Rekordy, Tabele, Użytkownicy |
| Typ API | REST API |
| Uwierzytelnianie | Personal Access Token / OAuth 2.0 |
| Bazowy URL | https://api.airtable.com/v0/ |
Funkcje
- Synchronizacja tabeli z listą - Synchronizuj rekordy tabel Airtable bezpośrednio z listami kontaktów Brevo
- Mostek katalogu produktów - Używaj tabel Airtable jako katalogów produktów do rekomendacji e-mailowych
- Synchronizacja CRM - Dwukierunkowa synchronizacja między CRM Airtable a kontaktami Brevo
- Zdarzenia przesłania formularzy - Przekazuj przesłania formularzy Airtable jako zdarzenia Brevo
- Filtrowanie oparte na widokach - Synchronizuj określone widoki Airtable z docelowymi listami Brevo
- Automatyzacja webhook - Wyzwalaj kampanie Brevo, gdy rekordy Airtable się zmieniają
Wymagania wstępne
Zanim zaczniesz, upewnij się, że masz:
- Konto Airtable (plan Free lub wyższy)
- Skonfigurowany Personal Access Token lub aplikację OAuth
- Dostęp do baz i tabel, które chcesz synchronizować
- Konto Brevo z dostępem do API
- Konto Tajo z aktywną subskrypcją
Uwierzytelnianie
Airtable obsługuje Personal Access Tokens i OAuth 2.0.
Opcja 1: Personal Access Token (zalecane)
- Przejdź do airtable.com/create/tokens
- Kliknij Create new token
- Nazwij go „Tajo Integration”
- Dodaj zakresy:
data.records:readdata.records:writedata.recordComments:readschema.bases:readwebhook:manage- Dodaj dostęp do określonych baz lub wszystkich baz
- Kliknij Create token
Opcja 2: OAuth 2.0
Dla integracji wieloużytkownikowych użyj przepływu OAuth 2.0:
- Zarejestruj integrację na airtable.com/create/oauth
- Skonfiguruj URI przekierowania:
https://app.tajo.io/callbacks/airtable - Zażądaj tych samych zakresów co powyżej
Zakres tokenów
Personal Access Tokens mogą być ograniczone do określonych baz. Dla bezpieczeństwa przyznawaj dostęp tylko do baz, których potrzebuje integracja, zamiast wybierać „All current and future bases”.
Połączenie z Tajo
tajo connectors install airtable \ --token $AIRTABLE_TOKENKonfiguracja
Podstawowa konfiguracja
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"Mapowanie pól
Mapuj pola Airtable na atrybuty kontaktów Brevo:
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_DATESynchronizacja oparta na widokach
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: trueEndpointy API
Tajo integruje się z następującymi endpointami Airtable Web API:
| Endpoint | Metoda | Cel |
|---|---|---|
/v0/{baseId}/{tableIdOrName} | GET | Lista rekordów w tabeli |
/v0/{baseId}/{tableIdOrName} | POST | Utwórz rekordy |
/v0/{baseId}/{tableIdOrName} | PATCH | Aktualizuj rekordy |
/v0/{baseId}/{tableIdOrName} | DELETE | Usuń rekordy |
/v0/{baseId}/{tableIdOrName}/{recordId} | GET | Pobierz pojedynczy rekord |
/v0/meta/bases | GET | Lista dostępnych baz |
/v0/meta/bases/{baseId}/tables | GET | Lista tabel w bazie |
/v0/{baseId}/{tableIdOrName}/listRecordComments | GET | Lista komentarzy do rekordów |
/v0/bases/{baseId}/webhooks | POST | Utwórz webhook |
/v0/bases/{baseId}/webhooks | GET | Lista webhooków |
Przykłady kodu
Inicjalizacja 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});Synchronizuj tabelę z 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// }Obsługa webhooków
// 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');});Utwórz rekord z 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] } }); }});Limity API
Airtable stosuje limity na bazę:
| Typ limitu | Wartość |
|---|---|
| Limit szybkości API | 5 żądań na sekundę na bazę |
| Rekordy na żądanie | Maks. 100 rekordów (lista), maks. 10 rekordów (tworzenie/aktualizacja) |
| Dane webhook | 50 ładunków na wywołanie listWebhookPayloads |
| Rozmiar żądania | Maks. ładunek ~2 MB |
Operacje wsadowe
Airtable umożliwia tworzenie lub aktualizowanie do 10 rekordów na żądanie. Tajo automatycznie dzieli większe operacje na wiele żądań, respektując limity szybkości.
Rozwiązywanie problemów
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| 401 Unauthorized | Nieprawidłowy lub wygasły token | Wygeneruj ponownie Personal Access Token |
| 403 Forbidden | Token nie ma dostępu do bazy | Dodaj bazę do zakresu tokenu |
| 404 Not Found | Nieprawidłowe ID bazy lub tabeli | Zweryfikuj ID bazy i nazwę tabeli |
| 422 Invalid Request | Niezgodność typów pól | Sprawdź, czy typy pól Airtable pasują do twoich danych |
| Przekroczono limit | Ponad 5 żądań/sek na bazę | Zmniejsz częstotliwość synchronizacji lub rozłóż synchronizacje baz |
Tryb debug
connectors: airtable: debug: true log_level: verbose log_api_calls: trueTest połączenia
tajo connectors test airtable# ✓ API authentication successful# ✓ Base access verified# ✓ Table schema readable# ✓ Record listing operational# ✓ Webhook registration availableNajlepsze praktyki
- Ograniczaj tokeny do określonych baz - Nie przyznawaj dostępu do wszystkich baz, jeśli nie jest to konieczne
- Używaj widoków do filtrowania synchronizacji - Synchronizuj określone widoki zamiast pełnych tabel, aby zmniejszyć wolumen danych
- Wsadowe operacje na rekordach - Grupuj tworzenia i aktualizacje w partiach po 10
- Obsługuj paginację - Airtable zwraca 100 rekordów na stronę; iteruj z
offset - Używaj webhooków w czasie rzeczywistym - Rejestruj webhooki zamiast odpytywania o zmiany
- Precyzyjnie mapuj typy pól - Dopasowuj typy pól Airtable (select, number, date) do typów atrybutów Brevo
Bezpieczeństwo
- Personal Access Tokens - Ograniczone do określonych baz i operacji
- OAuth 2.0 - Bezpieczny przepływ autoryzacji z tokenami odświeżania
- Tylko HTTPS - Cała komunikacja API zaszyfrowana przez TLS 1.2+
- Kontrola dostępu na poziomie bazy - Tokeny ograniczone do poszczególnych baz
- Szyfrowane przechowywanie - Tokeny szyfrowane w spoczynku w Tajo
- Weryfikacja HMAC webhook - Weryfikuj autentyczność powiadomień webhook