---
title: "Airtable konektor"
description: "Kompletan vodič za Airtable integraciju za sinhronizaciju baza, tabela i zapisa sa Brevo kontaktima i listama putem Tajo."
url: https://tajo.io/sr/docs/connectors/custom/airtable/
markdown: https://tajo.io/sr/docs/connectors/custom/airtable.md
lang: sr-Latn-RS
robots: noindex
---

Zatražite rani pristup

Unesite ime i poslovnu adresu e-pošte. Poslaćemo vam vezu za potvrdu zahteva za pristup Taju.

# Airtable konektor

Status konektora: Planirano Još nije izrađeno. Tajo danas ne pokreće ovaj konektor.

| Izvorno polje | Odredišno polje | Primer vrednosti |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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š:

1. Airtable nalog (Free plan ili više)
2. Personal Access Token ili konfigurisanu OAuth aplikaciju
3. Pristup bazama i tabelama koje želiš/žeš da sinhronizuješ
4. Brevo nalog sa API pristupom
5. Tajo nalog sa aktivnom pretplatom

## Autentifikacija

Airtable podržava Personal Access Tokens i OAuth 2.0.

### Opcija 1: Personal Access Token (preporučeno)

1. Idi na [airtable.com/create/tokens](https://airtable.com/create/tokens)
2. Klikni **Create new token**
3. Nazovi ga “Tajo Integration”
4. Dodaj skopove:

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

5. Dodaj pristup specifičnim bazama ili svim bazama
6. Klikni **Create token**

### Opcija 2: OAuth 2.0

Za integracije sa više korisnika, koristi OAuth 2.0 tok:

1. Registruj svoju integraciju na [airtable.com/create/oauth](https://airtable.com/create/oauth)
2. Konfiguriši redirect URI: `https://app.tajo.io/callbacks/airtable`
3. 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

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

## Konfiguracija

### Osnovno podešavanje

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

### Mapiranje polja

Mapiranje Airtable polja na Brevo atribute kontakta:

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

### Sinhronizacija zasnovana na prikazima

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

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

```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
});
```

### Sinhronizacija tabele sa 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
// }
```

### Obrada webhook-ova

```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');
});
```

### Kreiranje zapisa iz 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]
      }
    });
  }
});
```

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

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

### Testiraj vezu

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

## Najbolje prakse

1. **Skopuj tokene na specifične baze** - Ne dodeljivati pristup svim bazama osim ako nije neophodno
2. **Koristi prikaze za filtrirano sinhronizovanje** - Sinhronizuj specifične prikaze umesto punih tabela da smanjiš obim podataka
3. **Grupiši operacije zapisa** - Grupiši kreiranja i ažuriranja u batch-eve od 10
4. **Obrada paginacije** - Airtable vraća 100 zapisa po stranici; iteriraj sa `offset`
5. **Koristi webhook-ove za real-time** - Registruj webhook-ove umesto ispitivanja za promene
6. **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

## Povezani resursi

- [Notion konektor](https://tajo.io/sr/docs/connectors/custom/notion)
- [GitHub konektor](https://tajo.io/sr/docs/connectors/custom/github)
- [Customer Sync veština](https://tajo.io/sr/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/sr/docs/contact-management)
