---
title: "Airtable Connector"
description: "Popoln vodnik za integracijo Airtable za sinhronizacijo baz, tabel in zapisov s stiki in seznami Brevo prek Tajo."
url: https://tajo.io/sl/docs/connectors/custom/airtable/
markdown: https://tajo.io/sl/docs/connectors/custom/airtable.md
lang: sl-SI
robots: noindex
---

Zaprosite za zgodnji dostop

Vnesite svoje ime in službeni e-poštni naslov. Poslali vam bomo povezavo za potrditev zahteve za dostop do Taja.

# Airtable Connector

Stanje konektorja: Načrtovano Še ni izdelano. Tajo danes ne poganja tega konektorja.

| Izvorno polje | Ciljno polje | Vzorčna vrednost |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Poveži svoje baze Airtable z Brevo za sinhronizacijo CRM, upravljanje kataloga izdelkov in avtomatizirane marketinške tokove na osnovi strukturiranih podatkov prek Tajo.

## Pregled

| Lastnost | Vrednost |
| --- | --- |
| **Platforma** | Airtable |
| **Kategorija** | Po meri |
| **Zahtevnost nastavitve** | Enostavna |
| **Uradna integracija** | Ne |
| **Sinhronizirani podatki** | Zapisi, tabele, uporabniki |
| **Tip API** | REST API |
| **Avtentikacija** | Personal Access Token / OAuth 2.0 |
| **Osnovni URL** | `https://api.airtable.com/v0/` |

## Funkcionalnosti

- **Sinhronizacija tabele s seznamom** – sinhronizacija zapisov tabele Airtable neposredno na sezname stikov Brevo
- **Most za katalog izdelkov** – uporabi tabele Airtable kot kataloge izdelkov za priporočila v e-mailih
- **Sinhronizacija CRM** – dvosmerna sinhronizacija med CRM Airtable in stiki Brevo
- **Dogodki oddaje obrazca** – posreduj oddaje obrazcev Airtable kot dogodke Brevo
- **Filtriranje na osnovi pogleda** – sinhronizacija določenih pogledov Airtable na ciljne sezname Brevo
- **Webhook avtomatizacija** – sproži kampanje Brevo, ko se zapisi Airtable spremenijo

## Predpogoji

Preden začneš, se prepričaj, da imaš:

1. Račun Airtable (paket Free ali višji)
2. Konfiguriran Personal Access Token ali OAuth aplikacijo
3. Dostop do baz in tabel, ki jih želiš sinhronizirati
4. Brevo račun z dostopom do API
5. Tajo račun z aktivno naročnino

## Avtentikacija

Airtable podpira Personal Access Tokens in OAuth 2.0.

### Možnost 1: Personal Access Token (priporočeno)

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

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

5. Dodaj dostop do določenih baz ali vseh baz
6. Klikni **Create token**

### Možnost 2: OAuth 2.0

Za integracije z več uporabniki uporabi tok OAuth 2.0:

1. Registriraj svojo integracijo na [airtable.com/create/oauth](https://airtable.com/create/oauth)
2. Nastavi URI za preusmeritev: `https://app.tajo.io/callbacks/airtable`
3. Zahtevaj iste obsege kot zgoraj

Omejevanje obsega žetona

Personal Access Tokens je mogoče omejiti na določene baze. Iz varnostnih razlogov dodeli dostop samo do baz, ki jih tvoja integracija potrebuje, namesto da bi izbral »Vse trenutne in prihodnje baze«.

### Povezava s Tajo

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

## Konfiguracija

### Osnovna nastavitev

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

### Preslikava polj

Preslikaj polja Airtable v atribute stikov 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
```

### Sinhronizacija na osnovi pogleda

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

## Končne točke API

Tajo se integrira z naslednjimi končnimi točkami Airtable Web API:

| Končna točka | Metoda | Namen |
| --- | --- | --- |
| `/v0/{baseId}/{tableIdOrName}` | GET | Seznam zapisov v tabeli |
| `/v0/{baseId}/{tableIdOrName}` | POST | Ustvari zapise |
| `/v0/{baseId}/{tableIdOrName}` | PATCH | Posodobi zapise |
| `/v0/{baseId}/{tableIdOrName}` | DELETE | Izbriši zapise |
| `/v0/{baseId}/{tableIdOrName}/{recordId}` | GET | Pridobi en zapis |
| `/v0/meta/bases` | GET | Seznam dostopnih baz |
| `/v0/meta/bases/{baseId}/tables` | GET | Seznam tabel v bazi |
| `/v0/{baseId}/{tableIdOrName}/listRecordComments` | GET | Seznam komentarjev zapisov |
| `/v0/bases/{baseId}/webhooks` | POST | Ustvari webhook |
| `/v0/bases/{baseId}/webhooks` | GET | Seznam webhookov |

## Primeri kode

### Inicializacija konektorja

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

### Obravnava webhookov

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

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

## Omejitve hitrosti

Airtable uveljavi omejitve hitrosti na bazo:

| Vrsta omejitve | Vrednost |
| --- | --- |
| **Omejitev hitrosti API** | 5 zahtevkov na sekundo na bazo |
| **Zapisi na zahtevek** | Največ 100 zapisov (seznam), največ 10 zapisov (ustvarjanje/posodabljanje) |
| **Vsebina webhookov** | 50 vsebin na klic `listWebhookPayloads` |
| **Velikost zahtevka** | Največ ~2 MB |

Paketne operacije

Airtable omogoča ustvarjanje ali posodabljanje do 10 zapisov na zahtevek. Tajo samodejno razporedi večje operacije v več zahtevkov in spoštuje omejitve hitrosti.

## Odpravljanje težav

### Pogoste težave

| Težava | Vzrok | Rešitev |
| --- | --- | --- |
| 401 Unauthorized | Neveljaven ali potekel žeton | Obnovi Personal Access Token |
| 403 Forbidden | Žetonu manjka dostop do baze | Dodaj bazo v obseg žetona |
| 404 Not Found | Neveljaven ID baze ali tabele | Preveri ID baze in ime tabele |
| 422 Invalid Request | Neujemanje vrst polj | Preveri, ali se vrste polj Airtable ujemajo s podatki |
| Prekoračena omejitev hitrosti | Več kot 5 zahtevkov/s na bazo | Zmanjšaj pogostost sinhronizacije ali razporedi sinhronizacije baz |

### Način odpravljanja napak

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

### Preizkus povezave

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

## Najboljše prakse

1. **Omeji žetone na določene baze** – ne dodeljuj dostopa do vseh baz, razen če je to nujno
2. **Uporabi poglede za filtrirano sinhronizacijo** – sinhronizacija določenih pogledov namesto celotnih tabel za zmanjšanje obsega podatkov
3. **Paketne operacije z zapisi** – grupiranje ustvarjanj in posodobitev v paketih po 10
4. **Obravnavaj paginacijo** – Airtable vrne 100 zapisov na stran; iteriraj z `offset`
5. **Za posodobitve v realnem času uporabi webhooks** – registriraj webhooks namesto anketiranja za spremembe
6. **Natančno preslikaj vrste polj** – ujemi vrste polj Airtable (izbor, število, datum) z vrstami atributov Brevo

## Varnost

- **Personal Access Tokens** – omejeni na določene baze in operacije
- **OAuth 2.0** – varen tok avtorizacije z žetoni za osvežitev
- **Samo HTTPS** – vsa komunikacija API šifrirana prek TLS 1.2+
- **Nadzor dostopa na ravni baze** – žetoni omejeni na posamezne baze
- **Šifrirano shranjevanje** – žetoni šifrirani v mirovanju v Tajo
- **Preverjanje HMAC webhookov** – preverjanje pristnosti obvestil webhookov

## Povezani viri

- [Notion Connector](https://tajo.io/sl/docs/connectors/custom/notion)
- [GitHub Connector](https://tajo.io/sl/docs/connectors/custom/github)
- [Customer Sync Skill](https://tajo.io/sl/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/sl/docs/contact-management)
