---
title: "Konektor Airtable"
description: "Kompletny przewodnik integracji Airtable do synchronizacji baz, tabel i rekordów z kontaktami i listami Brevo przez Tajo."
url: https://tajo.io/pl/docs/connectors/custom/airtable/
markdown: https://tajo.io/pl/docs/connectors/custom/airtable.md
lang: pl-PL
robots: noindex
---

Poproś o wcześniejszy dostęp

Podaj imię i firmowy adres e-mail. Wyślemy Ci link potwierdzający prośbę o dostęp do Tajo.

# Konektor Airtable

Status konektora: Planowany Jeszcze niezbudowany. Tajo nie uruchamia dziś tego konektora.

| Pole źródłowe | Pole docelowe | Przykładowa wartość |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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:

1. Konto Airtable (plan Free lub wyższy)
2. Skonfigurowany Personal Access Token lub aplikację OAuth
3. Dostęp do baz i tabel, które chcesz synchronizować
4. Konto Brevo z dostępem do API
5. Konto Tajo z aktywną subskrypcją

## Uwierzytelnianie

Airtable obsługuje Personal Access Tokens i OAuth 2.0.

### Opcja 1: Personal Access Token (zalecane)

1. Przejdź do [airtable.com/create/tokens](https://airtable.com/create/tokens)
2. Kliknij **Create new token**
3. Nazwij go „Tajo Integration”
4. Dodaj zakresy:

```
data.records:read
data.records:write
data.recordComments:read
schema.bases:read
webhook:manage
```

5. Dodaj dostęp do określonych baz lub wszystkich baz
6. Kliknij **Create token**

### Opcja 2: OAuth 2.0

Dla integracji wieloużytkownikowych użyj przepływu OAuth 2.0:

1. Zarejestruj integrację na [airtable.com/create/oauth](https://airtable.com/create/oauth)
2. Skonfiguruj URI przekierowania: `https://app.tajo.io/callbacks/airtable`
3. 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

```bash
tajo connectors install airtable \
  --token $AIRTABLE_TOKEN
```

## Konfiguracja

### Podstawowa konfiguracja

```yaml
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:

```yaml
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_DATE
```

### Synchronizacja oparta na widokach

```yaml
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: true
```

## Endpointy 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

```javascript
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

```javascript
// Sync an Airtable table to a Brevo list
await 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

```javascript
// Airtable webhooks notify of changes; fetch details with cursor
app.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

```javascript
// Create an Airtable record when a Brevo contact converts
tajo.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

```yaml
connectors:
  airtable:
    debug: true
    log_level: verbose
    log_api_calls: true
```

### Test połączenia

```bash
tajo connectors test airtable
# ✓ API authentication successful
# ✓ Base access verified
# ✓ Table schema readable
# ✓ Record listing operational
# ✓ Webhook registration available
```

## Najlepsze praktyki

1. **Ograniczaj tokeny do określonych baz** - Nie przyznawaj dostępu do wszystkich baz, jeśli nie jest to konieczne
2. **Używaj widoków do filtrowania synchronizacji** - Synchronizuj określone widoki zamiast pełnych tabel, aby zmniejszyć wolumen danych
3. **Wsadowe operacje na rekordach** - Grupuj tworzenia i aktualizacje w partiach po 10
4. **Obsługuj paginację** - Airtable zwraca 100 rekordów na stronę; iteruj z `offset`
5. **Używaj webhooków w czasie rzeczywistym** - Rejestruj webhooki zamiast odpytywania o zmiany
6. **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

## Powiązane zasoby

- [Konektor Notion](https://tajo.io/pl/docs/connectors/custom/notion)
- [Konektor GitHub](https://tajo.io/pl/docs/connectors/custom/github)
- [Skill synchronizacji klientów](https://tajo.io/pl/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/pl/docs/contact-management)
