---
title: "Airtable-kobling"
description: "Fullstendig Airtable-integrasjonsveiledning for synkronisering av baser, tabeller og poster med Brevo-kontakter og -lister via Tajo."
url: https://tajo.io/no/docs/connectors/custom/airtable/
markdown: https://tajo.io/no/docs/connectors/custom/airtable.md
lang: no-NO
robots: noindex
---

Be om tidlig tilgang

Skriv inn fornavn og e-postadresse på jobb. Vi sender deg en lenke for å bekrefte forespørselen om tilgang til Tajo.

# Airtable-kobling

Koblingsstatus: Planlagt Ikke bygget ennå. Tajo kjører ikke denne koblingen i dag.

| Kildefelt | Målfelt | Eksempelverdi |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Koble Airtable-basene dine til Brevo for CRM-synkronisering, administrasjon av produktkatalog og automatiserte markedsføringsarbeidsflyter drevet av strukturerte data gjennom Tajo.

## Oversikt

| Egenskap | Verdi |
| --- | --- |
| **Plattform** | Airtable |
| **Kategori** | Custom |
| **Oppsettskompleksitet** | Enkel |
| **Offisiell integrasjon** | Nei |
| **Synkroniserte data** | Poster, tabeller, brukere |
| **API-type** | REST API |
| **Autentisering** | Personal Access Token / OAuth 2.0 |
| **Base URL** | `https://api.airtable.com/v0/` |

## Funksjoner

- **Tabell-til-liste-synkronisering** - Synkroniser Airtable-tabellposter direkte til Brevo-kontaktlister
- **Produktkatalog-bro** - Bruk Airtable-tabeller som produktkataloger for e-postanbefalinger
- **CRM-synkronisering** - Toveis synkronisering mellom Airtable CRM og Brevo-kontakter
- **Hendelser for skjemainnsending** - Videresend Airtable-skjemainnsendinger som Brevo-hendelser
- **Visningsbasert filtrering** - Synkroniser spesifikke Airtable-visninger til målrettede Brevo-lister
- **Webhook-automatisering** - Utløs Brevo-kampanjer når Airtable-poster endres

## Forutsetninger

Før du begynner, sørg for at du har:

1. En Airtable-konto (Free-plan eller høyere)
2. En Personal Access Token eller OAuth-app konfigurert
3. Tilgang til basene og tabellene du vil synkronisere
4. En Brevo-konto med API-tilgang
5. En Tajo-konto med aktivt abonnement

## Autentisering

Airtable støtter Personal Access Tokens og OAuth 2.0.

### Alternativ 1: Personal Access Token (anbefalt)

1. Gå til [airtable.com/create/tokens](https://airtable.com/create/tokens)
2. Klikk **Create new token**
3. Gi den navnet “Tajo Integration”
4. Legg til scopes:

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

5. Legg til tilgang til spesifikke baser eller alle baser
6. Klikk **Create token**

### Alternativ 2: OAuth 2.0

For integrasjoner med flere brukere, bruk OAuth 2.0-flyten:

1. Registrer integrasjonen din på [airtable.com/create/oauth](https://airtable.com/create/oauth)
2. Konfigurer redirect URI: `https://app.tajo.io/callbacks/airtable`
3. Be om de samme scopene som over

Token-scoping

Personal Access Tokens kan begrenses til spesifikke baser. Av sikkerhetshensyn gir du kun tilgang til basene integrasjonen din trenger i stedet for å velge “All current and future bases.”

### Koble til Tajo

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

## Konfigurasjon

### Grunnleggende oppsett

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

### Feltmapping

Mapp Airtable-felter til Brevo-kontaktattributter:

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

### Visningsbasert synkronisering

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

Tajo integreres med følgende Airtable Web API-endepunkter:

| Endepunkt | Metode | Formål |
| --- | --- | --- |
| `/v0/{baseId}/{tableIdOrName}` | GET | List poster i en tabell |
| `/v0/{baseId}/{tableIdOrName}` | POST | Opprett poster |
| `/v0/{baseId}/{tableIdOrName}` | PATCH | Oppdater poster |
| `/v0/{baseId}/{tableIdOrName}` | DELETE | Slett poster |
| `/v0/{baseId}/{tableIdOrName}/{recordId}` | GET | Hent én post |
| `/v0/meta/bases` | GET | List tilgjengelige baser |
| `/v0/meta/bases/{baseId}/tables` | GET | List tabeller i en base |
| `/v0/{baseId}/{tableIdOrName}/listRecordComments` | GET | List postkommentarer |
| `/v0/bases/{baseId}/webhooks` | POST | Opprett en webhook |
| `/v0/bases/{baseId}/webhooks` | GET | List webhooks |

## Kodeeksempler

### Initialiser kobling

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

### Synkroniser tabell til 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
// }
```

### Håndter webhooks

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

### Opprett post fra 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]
      }
    });
  }
});
```

## Hastighetsgrenser

Airtable håndhever hastighetsgrenser per base:

| Type grense | Verdi |
| --- | --- |
| **API-hastighetsgrense** | 5 forespørsler per sekund per base |
| **Poster per forespørsel** | Maks 100 poster (list), maks 10 poster (opprett/oppdater) |
| **Webhook-payloader** | 50 payloader per `listWebhookPayloads`-kall |
| **Forespørselsstørrelse** | Maks payload ~2MB |

Batch-operasjoner

Airtable tillater opprettelse eller oppdatering av opptil 10 poster per forespørsel. Tajo batcher automatisk større operasjoner i flere forespørsler samtidig som hastighetsgrenser respekteres.

## Feilsøking

### Vanlige problemer

| Problem | Årsak | Løsning |
| --- | --- | --- |
| 401 Unauthorized | Ugyldig eller utløpt token | Generer Personal Access Token på nytt |
| 403 Forbidden | Token mangler base-tilgang | Legg til basen i tokenets scope |
| 404 Not Found | Ugyldig base- eller tabell-ID | Verifiser base-ID og tabellnavn |
| 422 Invalid Request | Felttype-mismatch | Sjekk at Airtable-felttyper matcher dataene dine |
| Hastighetsgrense overskredet | Mer enn 5 req/s per base | Reduser synkroniseringsfrekvens eller stagger base-synkroniseringer |

### Feilsøkingsmodus

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

### Test tilkobling

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

## Beste praksis

1. **Begrens tokens til spesifikke baser** - Ikke gi tilgang til alle baser med mindre det er nødvendig
2. **Bruk visninger for filtrert synkronisering** - Synkroniser spesifikke visninger i stedet for hele tabeller for å redusere datavolum
3. **Batch postoperasjoner** - Grupper opprettelser og oppdateringer i batcher på 10
4. **Håndter paginering** - Airtable returnerer 100 poster per side; iterer med `offset`
5. **Bruk webhooks for sanntid** - Registrer webhooks i stedet for polling for endringer
6. **Mapp felttyper presist** - Match Airtable-felttyper (select, number, date) med Brevo-attributttyper

## Sikkerhet

- **Personal Access Tokens** - Begrenset til spesifikke baser og operasjoner
- **OAuth 2.0** - Sikker autorisasjonsflyt med refresh tokens
- **Kun HTTPS** - All API-kommunikasjon kryptert via TLS 1.2+
- **Tilgangskontroll på base-nivå** - Tokens begrenset til individuelle baser
- **Kryptert lagring** - Tokens kryptert i ro i Tajo
- **HMAC-verifisering av webhooks** - Verifiser ektheten av webhook-varsler

## Relaterte ressurser

- [Notion-kobling](https://tajo.io/no/docs/connectors/custom/notion)
- [GitHub-kobling](https://tajo.io/no/docs/connectors/custom/github)
- [Kundesynkronisering-ferdighet](https://tajo.io/no/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/no/docs/contact-management)
