---
title: "Notion Connector"
description: "Komplet guide til Notion-integration til synkronisering af databaser, sider og workspace-indhold med Brevo via Tajo."
url: https://tajo.io/dk/docs/connectors/custom/notion/
markdown: https://tajo.io/dk/docs/connectors/custom/notion.md
lang: da-DK
robots: noindex
---

Bed om tidlig adgang til Tajo

Indtast dit fornavn og din arbejds-e-mailadresse. Vi sender dig et link til at bekræfte din anmodning om adgang til Tajo.

# Notion Connector

Connectorstatus: Planlagt Ikke bygget endnu. Tajo kører ikke denne connector i dag.

| Kildefelt | Destinationsfelt | Eksempelværdi |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Forbind dit Notion-workspace med Brevo til indholdsdrevne marketing-workflows, CRM-databasesynkronisering og automatiserede notifikationer via Tajo.

## Oversigt

| Egenskab | Værdi |
| --- | --- |
| **Platform** | Notion |
| **Kategori** | Brugerdefineret |
| **Opsætningskompleksitet** | Let |
| **Officiel integration** | Nej |
| **Synkroniserede data** | Databaser, sider, brugere |
| **API-type** | REST API |
| **Autentifikation** | Internal Integration Token / OAuth 2.0 |
| **Base-URL** | `https://api.notion.com` |
| **API-version** | `2022-06-28` (via `Notion-Version`-header) |

## Funktioner

- **Databasesynkronisering** - Synkronisér Notion-databaseposter til Brevo-kontakter og -lister
- **CRM-bro** - Brug Notion-databaser som et let CRM, synkroniseret med Brevo
- **Indholdsnotifikationer** - Udløs Brevo-kampagner, når Notion-sider offentliggøres
- **Property-mapping** - Kortlæg Notion-databaseegenskaber til Brevo-kontaktattributter
- **Sideovervågning** - Spor sideopdateringer, og videresend dem som Brevo-hændelser
- **Synkronisering af brugerkatalog** - Synkronisér medlemmer af Notion-workspace til Brevo-kontakter

## Forudsætninger

Før du begynder, skal du sikre dig, at du har:

1. Et Notion-workspace med admin-adgang
2. En intern Notion-integration eller en OAuth-app
3. Databasesider delt med integrationen
4. En Brevo-konto med API-adgang
5. En Tajo-konto med aktivt abonnement

## Autentifikation

Notion understøtter to autentifikationsmetoder.

### Mulighed 1: Intern integration (anbefalet til et enkelt workspace)

1. Gå til [notion.so/my-integrations](https://www.notion.so/my-integrations)
2. Klik på **New integration**
3. Navngiv den “Tajo Integration”
4. Vælg dit workspace
5. Indstil capabilities:

```
Content Capabilities:
  Read content: ✓
  Update content: ✓
  Insert content: ✓

User Capabilities:
  Read user information: ✓
```

6. Kopiér **Internal Integration Secret** (starter med `ntn_`)

Sidedeling påkrævet

Interne integrationer kan kun tilgå sider og databaser, der er eksplicit delt med dem. Del hver måldatabase med din integration via menuen ”…” > “Connections” > vælg din integration.

### Mulighed 2: OAuth 2.0 (offentlige integrationer)

Til integrationer, der betjener flere workspaces, skal du bruge OAuth 2.0-flowet:

1. Registrér din integration som en offentlig integration
2. Omdirigér brugere til: `https://api.notion.com/v1/oauth/authorize?client_id=...`
3. Byt koden til et access token på `/v1/oauth/token`

### Forbind til Tajo

```bash
tajo connectors install notion \
  --token $NOTION_TOKEN
```

## Konfiguration

### Grundlæggende opsætning

```yaml
connectors:
  notion:
    enabled: true
    api_version: "2022-06-28"

    sync:
      databases: true
      pages: false
      users: true

    databases:
      - id: "abc123def456"
        name: "Customers"
        sync_to_list: 25
      - id: "ghi789jkl012"
        name: "Leads"
        sync_to_list: 26
```

### Feltmapping

Kortlæg Notion-databaseegenskaber til Brevo-kontaktattributter:

```yaml
field_mapping:
  # Notion property -> Brevo attribute
  Name:
    type: title
    target: FIRSTNAME
  Email:
    type: email
    target: email
  Phone:
    type: phone_number
    target: SMS
  Company:
    type: rich_text
    target: COMPANY
  Status:
    type: select
    target: LEAD_STATUS
  Deal Value:
    type: number
    target: DEAL_VALUE
  Last Contact:
    type: date
    target: LAST_CONTACT_DATE
  Tags:
    type: multi_select
    target: TAGS
```

## API-endpoints

Tajo integrerer med følgende Notion API-endpoints:

| Endpoint | Metode | Formål |
| --- | --- | --- |
| `/v1/databases/{id}/query` | POST | Forespørg databaseposter |
| `/v1/databases/{id}` | GET | Hent databaseskema |
| `/v1/pages` | POST | Opret en ny side |
| `/v1/pages/{id}` | GET | Hent sideegenskaber |
| `/v1/pages/{id}` | PATCH | Opdatér sideegenskaber |
| `/v1/blocks/{id}/children` | GET | Hent blok-children |
| `/v1/users` | GET | Vis alle workspace-brugere |
| `/v1/users/{id}` | GET | Hent en bruger |
| `/v1/search` | POST | Søg på tværs af workspace |

## Kodeeksempler

### Initialisér connector

```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('notion', {
  token: process.env.NOTION_TOKEN
});
```

### Synkronisér database til Brevo

```javascript
// Sync a Notion database to a Brevo list
await tajo.connectors.sync('notion', {
  type: 'full',
  resources: ['databases'],
  databaseId: 'abc123def456',
  targetList: 25
});

const status = await tajo.connectors.status('notion');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-03-15T14:30:00Z',
//   databasesSynced: 2,
//   pagesTracked: 1450,
//   usersCount: 32
// }
```

### Forespørg og filtrér

```javascript
// Query Notion database with filters
const results = await tajo.connectors.query('notion', {
  databaseId: 'abc123def456',
  filter: {
    property: 'Status',
    select: { equals: 'Active' }
  },
  sorts: [
    { property: 'Last Contact', direction: 'descending' }
  ]
});
```

### Opret side fra Brevo-hændelse

```javascript
// Create a Notion page when a Brevo contact reaches a milestone
tajo.events.on('contact.attribute_updated', async (event) => {
  if (event.attribute === 'LIFECYCLE_STAGE' && event.value === 'customer') {
    await tajo.connectors.create('notion', {
      databaseId: 'ghi789jkl012',
      properties: {
        Name: { title: [{ text: { content: event.contact.name } }] },
        Email: { email: event.contact.email },
        'Converted Date': { date: { start: new Date().toISOString() } }
      }
    });
  }
});
```

## Rate limits

Notion håndhæver rate limits pr. integration:

| Grænsetype | Værdi |
| --- | --- |
| **Rate limit** | 3 anmodninger pr. sekund pr. integration |
| **Burst-grænse** | Korte bursts tilladt, derefter throttles |
| **Sidestørrelse** | Maks. 100 elementer pr. pagineret anmodning |

Cursor-baseret paginering

Notion bruger cursor-baseret paginering. Tajo håndterer dette automatisk ved at itérere gennem alle sider med parameteren `next_cursor`, indtil `has_more` returnerer `false`.

Notion returnerer `429 Too Many Requests`, når rate limits overskrides, med en `Retry-After`-header.

## Fejlfinding

### Almindelige problemer

| Problem | Årsag | Løsning |
| --- | --- | --- |
| 401 Unauthorized | Ugyldigt eller udløbet token | Regenerér integrations-token |
| 403 Forbidden | Side ikke delt med integration | Del side/database med integration via Connections |
| 404 Object not found | Database-ID forkert eller ikke delt | Verificér database-ID og delingsindstillinger |
| Manglende egenskaber | Skemamismatch | Genssynkronisér databaseskema og opdatér feltmapping |
| Rate limit overskredet | For mange hurtige anmodninger | Reducér synkroniseringsfrekvens eller batch-størrelse |

### Debug-tilstand

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

### Testforbindelse

```bash
tajo connectors test notion
# ✓ API authentication successful
# ✓ Database access verified
# ✓ User list accessible
# ✓ Search operational
# ✓ Page creation available
```

## Bedste praksis

1. **Del databaser eksplicit** - Interne integrationer ser kun delt indhold
2. **Brug databaseforespørgsler frem for søgning** - Forespørgsler er hurtigere og mere pålidelige for kendte databaser
3. **Kortlæg egenskabstyper omhyggeligt** - Notion har mange egenskabstyper; match dem til Brevo-attributtyper
4. **Håndtér paginering** - Itérér altid gennem alle cursor-sider for at få komplette data
5. **Synkronisér inkrementelt** - Brug `last_edited_time`-filtre for kun at synkronisere ændrede poster
6. **Opsæt en poll-tidsplan** - Notion understøtter ikke webhooks nativt; poll med jævne mellemrum

## Sikkerhed

- **Bearer-token-autentifikation** - Integrationshemmeligheder og OAuth-tokens
- **Kun HTTPS** - Al API-kommunikation krypteres via TLS 1.2+
- **Scoped adgang** - Integrationer tilgår kun eksplicit delt indhold
- **OAuth 2.0** - Sikkert autorisationsflow til offentlige integrationer
- **Krypteret opbevaring** - Tokens krypteres i hvile i Tajo
- **Workspace-isolation** - Hver integration er scoped til et enkelt workspace

## Relaterede ressourcer

- [Airtable Connector](https://tajo.io/dk/docs/connectors/custom/airtable)
- [GitHub Connector](https://tajo.io/dk/docs/connectors/custom/github)
- [Linear Connector](https://tajo.io/dk/docs/connectors/custom/linear)
- [Brevo Contacts API](https://tajo.io/dk/docs/contact-management)
