---
title: "Airtable-koppling"
description: "Komplett integrationsguide för Airtable för att synkronisera baser, tabeller och poster med Brevo-kontakter och listor via Tajo."
url: https://tajo.io/se/docs/connectors/custom/airtable/
markdown: https://tajo.io/se/docs/connectors/custom/airtable.md
lang: sv-SE
robots: noindex
---

Ansök om tidig åtkomst

Ange ditt förnamn och din e-postadress på jobbet. Vi skickar en länk för att bekräfta din begäran om åtkomst till Tajo.

# Airtable-koppling

Kopplingens status: Planerad Inte byggd än. Tajo kör inte den här kopplingen i dag.

| Källfält | Målfält | Exempelvärde |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Anslut dina Airtable-baser till Brevo för CRM-synkronisering, hantering av produktkatalog och automatiserade marknadsföringsflöden som drivs av strukturerad data via Tajo.

## Översikt

| Egenskap | Värde |
| --- | --- |
| **Plattform** | Airtable |
| **Kategori** | Anpassad |
| **Installationskomplexitet** | Enkel |
| **Officiell integration** | Nej |
| **Data som synkas** | Poster, tabeller, användare |
| **API-typ** | REST API |
| **Autentisering** | Personal Access Token / OAuth 2.0 |
| **Bas-URL** | `https://api.airtable.com/v0/` |

## Funktioner

- **Synk från tabell till lista** - Synka Airtables tabellposter direkt till Brevo-kontaktlistor
- **Brygga för produktkatalog** - Använd Airtable-tabeller som produktkataloger för e-postrekommendationer
- **CRM-synkronisering** - Dubbelriktad synk mellan Airtable CRM och Brevo-kontakter
- **Händelser för formulärsvar** - Vidarebefordra Airtable-formulärsvar som Brevo-händelser
- **Vy-baserad filtrering** - Synka specifika Airtable-vyer till målinriktade Brevo-listor
- **Webhook-automation** - Utlös Brevo-kampanjer när Airtable-poster ändras

## Förutsättningar

Innan du börjar, se till att du har:

1. Ett Airtable-konto (Free-plan eller högre)
2. En Personal Access Token eller OAuth-app konfigurerad
3. Åtkomst till baserna och tabellerna du vill synkronisera
4. Ett Brevo-konto med API-åtkomst
5. Ett Tajo-konto med aktivt abonnemang

## Autentisering

Airtable stöder Personal Access Tokens och OAuth 2.0.

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

1. Gå till [airtable.com/create/tokens](https://airtable.com/create/tokens)
2. Klicka på **Create new token**
3. Namnge den “Tajo Integration”
4. Lägg till scopes:

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

5. Lägg till åtkomst till specifika baser eller alla baser
6. Klicka på **Create token**

### Alternativ 2: OAuth 2.0

För integrationer med flera användare, använd OAuth 2.0-flödet:

1. Registrera din integration på [airtable.com/create/oauth](https://airtable.com/create/oauth)
2. Konfigurera redirect-URI: `https://app.tajo.io/callbacks/airtable`
3. Begär samma scopes som ovan

Scope för tokens

Personal Access Tokens kan scopas till specifika baser. Av säkerhetsskäl ska du endast bevilja åtkomst till de baser din integration behöver istället för att välja “All current and future bases.”

### Ansluta till Tajo

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

## Konfiguration

### Grundinställning

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

### Fältmappning

Mappa Airtable-fält till Brevo-kontaktattribut:

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

### Vy-baserad synk

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

Tajo integrerar med följande endpoints i Airtables Web API:

| Endpoint | Metod | Syfte |
| --- | --- | --- |
| `/v0/{baseId}/{tableIdOrName}` | GET | Lista poster i en tabell |
| `/v0/{baseId}/{tableIdOrName}` | POST | Skapa poster |
| `/v0/{baseId}/{tableIdOrName}` | PATCH | Uppdatera poster |
| `/v0/{baseId}/{tableIdOrName}` | DELETE | Radera poster |
| `/v0/{baseId}/{tableIdOrName}/{recordId}` | GET | Hämta en enstaka post |
| `/v0/meta/bases` | GET | Lista tillgängliga baser |
| `/v0/meta/bases/{baseId}/tables` | GET | Lista tabeller i en bas |
| `/v0/{baseId}/{tableIdOrName}/listRecordComments` | GET | Lista postkommentarer |
| `/v0/bases/{baseId}/webhooks` | POST | Skapa en webhook |
| `/v0/bases/{baseId}/webhooks` | GET | Lista webhooks |

## Kodexempel

### Initiera kopplingen

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

### Synka tabell till 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
// }
```

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

### Skapa post från 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]
      }
    });
  }
});
```

## Hastighetsbegränsningar

Airtable tillämpar hastighetsbegränsningar per bas:

| Typ av gräns | Värde |
| --- | --- |
| **API-hastighetsbegränsning** | 5 förfrågningar per sekund per bas |
| **Poster per förfrågan** | Max 100 poster (list), max 10 poster (skapa/uppdatera) |
| **Webhook-nyttolaster** | 50 nyttolaster per `listWebhookPayloads`-anrop |
| **Förfrågningsstorlek** | Max ~2MB nyttolast |

Batch-operationer

Airtable tillåter att du skapar eller uppdaterar upp till 10 poster per förfrågan. Tajo batchar automatiskt större operationer till flera förfrågningar samtidigt som hastighetsbegränsningar respekteras.

## Felsökning

### Vanliga problem

| Problem | Orsak | Lösning |
| --- | --- | --- |
| 401 Unauthorized | Ogiltig eller utgången token | Återgenerera Personal Access Token |
| 403 Forbidden | Token saknar basåtkomst | Lägg till basen i tokens scope |
| 404 Not Found | Ogiltigt bas- eller tabell-ID | Verifiera bas-ID och tabellnamn |
| 422 Invalid Request | Inkompatibel fälttyp | Kontrollera att Airtables fälttyper matchar din data |
| Hastighetsbegränsning överskriden | Fler än 5 förfrågningar/sek per bas | Minska synkfrekvensen eller förskjut synkar mellan baser |

### Felsökningsläge

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

### Testa anslutning

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

## Bästa praxis

1. **Scope tokens till specifika baser** - Bevilja inte åtkomst till alla baser om det inte är nödvändigt
2. **Använd vyer för filtrerad synk** - Synka specifika vyer istället för hela tabeller för att minska datavolym
3. **Batcha postoperationer** - Gruppera skapa- och uppdateraoperationer i batcher om 10
4. **Hantera paginering** - Airtable returnerar 100 poster per sida; iterera med `offset`
5. **Använd webhooks för realtid** - Registrera webhooks istället för att polla efter ändringar
6. **Mappa fälttyper exakt** - Matcha Airtables fälttyper (select, number, date) till Brevo-attributtyper

## Säkerhet

- **Personal Access Tokens** - Scopade till specifika baser och operationer
- **OAuth 2.0** - Säkert auktoriseringsflöde med refresh-tokens
- **Endast HTTPS** - All API-kommunikation krypterad via TLS 1.2+
- **Åtkomstkontroll på basnivå** - Tokens scopade till individuella baser
- **Krypterad lagring** - Tokens krypterade i vila i Tajo
- **HMAC-verifiering av webhooks** - Verifiera äktheten i webhook-notiser

## Relaterade resurser

- [Notion-koppling](https://tajo.io/se/docs/connectors/custom/notion)
- [GitHub-koppling](https://tajo.io/se/docs/connectors/custom/github)
- [Skill för kundsynkronisering](https://tajo.io/se/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/se/docs/contact-management)
