Konektor Notion
Połącz swój workspace Notion z Brevo, aby realizować przepływy marketingowe oparte na treści, synchronizować bazy danych CRM i wysyłać automatyczne powiadomienia przez Tajo.
Przegląd
| Właściwość | Wartość |
|---|---|
| Platforma | Notion |
| Kategoria | Niestandardowa |
| Poziom konfiguracji | Łatwy |
| Integracja oficjalna | Nie |
| Synchronizowane dane | Bazy danych, Strony, Użytkownicy |
| Typ API | REST API |
| Uwierzytelnianie | Internal Integration Token / OAuth 2.0 |
| Bazowy URL | https://api.notion.com |
| Wersja API | 2022-06-28 (przez nagłówek Notion-Version) |
Funkcje
- Synchronizacja baz danych - Synchronizuj wpisy baz danych Notion z kontaktami i listami Brevo
- Mostek CRM - Używaj baz danych Notion jako lekkiego CRM, synchronizowanego z Brevo
- Powiadomienia o treści - Wyzwalaj kampanie Brevo, gdy strony Notion są publikowane
- Mapowanie właściwości - Mapuj właściwości baz danych Notion na atrybuty kontaktów Brevo
- Monitorowanie stron - Śledź aktualizacje stron i przekazuj je jako zdarzenia Brevo
- Synchronizacja katalogu użytkowników - Synchronizuj członków workspace Notion z kontaktami Brevo
Wymagania wstępne
Zanim zaczniesz, upewnij się, że masz:
- Workspace Notion z dostępem administratora
- Wewnętrzną integrację Notion lub aplikację OAuth
- Strony baz danych udostępnione integracji
- Konto Brevo z dostępem do API
- Konto Tajo z aktywną subskrypcją
Uwierzytelnianie
Notion obsługuje dwie metody uwierzytelniania.
Opcja 1: Integracja wewnętrzna (zalecane dla pojedynczego workspace)
- Przejdź do notion.so/my-integrations
- Kliknij New integration
- Nazwij ją „Tajo Integration”
- Wybierz swój workspace
- Ustaw możliwości:
Content Capabilities: Read content: ✓ Update content: ✓ Insert content: ✓
User Capabilities: Read user information: ✓- Skopiuj Internal Integration Secret (zaczyna się od
ntn_)
Wymagane udostępnianie stron
Integracje wewnętrzne mogą uzyskiwać dostęp tylko do stron i baz danych jawnie udostępnionych integracji. Udostępnij każdą docelową bazę danych swojej integracji przez menu ”…” > “Connections” > wybierz swoją integrację.
Opcja 2: OAuth 2.0 (integracje publiczne)
Dla integracji obsługujących wiele workspace’ów użyj przepływu OAuth 2.0:
- Zarejestruj swoją integrację jako integrację publiczną
- Przekieruj użytkowników do:
https://api.notion.com/v1/oauth/authorize?client_id=... - Wymień kod na token dostępu pod adresem
/v1/oauth/token
Połączenie z Tajo
tajo connectors install notion \ --token $NOTION_TOKENKonfiguracja
Podstawowa konfiguracja
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: 26Mapowanie pól
Mapuj właściwości baz danych Notion na atrybuty kontaktów Brevo:
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: TAGSEndpointy API
Tajo integruje się z następującymi endpointami Notion API:
| Endpoint | Metoda | Cel |
|---|---|---|
/v1/databases/{id}/query | POST | Odpytaj wpisy bazy danych |
/v1/databases/{id} | GET | Pobierz schemat bazy danych |
/v1/pages | POST | Utwórz nową stronę |
/v1/pages/{id} | GET | Pobierz właściwości strony |
/v1/pages/{id} | PATCH | Aktualizuj właściwości strony |
/v1/blocks/{id}/children | GET | Pobierz dzieci bloku |
/v1/users | GET | Lista wszystkich użytkowników workspace |
/v1/users/{id} | GET | Pobierz użytkownika |
/v1/search | POST | Wyszukaj w workspace |
Przykłady kodu
Inicjalizacja konektora
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});Synchronizuj bazę danych z Brevo
// Sync a Notion database to a Brevo listawait 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// }Odpytuj i filtruj
// Query Notion database with filtersconst results = await tajo.connectors.query('notion', { databaseId: 'abc123def456', filter: { property: 'Status', select: { equals: 'Active' } }, sorts: [ { property: 'Last Contact', direction: 'descending' } ]});Utwórz stronę ze zdarzenia Brevo
// Create a Notion page when a Brevo contact reaches a milestonetajo.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() } } } }); }});Limity API
Notion stosuje limity szybkości na integrację:
| Typ limitu | Wartość |
|---|---|
| Limit szybkości | 3 żądania na sekundę na integrację |
| Limit burst | Krótkie bursts dozwolone, potem ograniczanie |
| Rozmiar strony | Maks. 100 elementów na stronicowane żądanie |
Paginacja oparta na kursorze
Notion używa paginacji opartej na kursorze. Tajo obsługuje to automatycznie, iterując przez wszystkie strony używając parametru next_cursor do czasu, gdy has_more zwróci false.
Notion zwraca 429 Too Many Requests po przekroczeniu limitów szybkości, z nagłówkiem Retry-After.
Rozwiązywanie problemów
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| 401 Unauthorized | Nieprawidłowy lub wygasły token | Wygeneruj ponownie token integracji |
| 403 Forbidden | Strona nie udostępniona integracji | Udostępnij stronę/bazę danych integracji przez Connections |
| 404 Object not found | Nieprawidłowe ID bazy danych lub nie udostępniona | Zweryfikuj ID bazy danych i ustawienia udostępniania |
| Brakujące właściwości | Niezgodność schematu | Ponownie zsynchronizuj schemat bazy danych i zaktualizuj mapowanie pól |
| Przekroczono limit | Za dużo szybkich żądań | Zmniejsz częstotliwość synchronizacji lub rozmiar partii |
Tryb debug
connectors: notion: debug: true log_level: verbose log_api_calls: trueTest połączenia
tajo connectors test notion# ✓ API authentication successful# ✓ Database access verified# ✓ User list accessible# ✓ Search operational# ✓ Page creation availableNajlepsze praktyki
- Udostępniaj bazy danych jawnie - Integracje wewnętrzne widzą tylko udostępnioną zawartość
- Używaj zapytań do baz danych zamiast wyszukiwania - Zapytania są szybsze i bardziej niezawodne dla znanych baz danych
- Ostrożnie mapuj typy właściwości - Notion ma wiele typów właściwości; dopasuj je do typów atrybutów Brevo
- Obsługuj paginację - Zawsze iteruj przez wszystkie strony kursora dla kompletnych danych
- Synchronizuj przyrostowo - Używaj filtrów
last_edited_time, aby synchronizować tylko zmienione wpisy - Skonfiguruj harmonogram odpytywania - Notion nie obsługuje webhooków natywnie; odpytuj w regularnych odstępach czasu
Bezpieczeństwo
- Uwierzytelnianie tokenem Bearer - Sekrety integracji i tokeny OAuth
- Tylko HTTPS - Cała komunikacja API zaszyfrowana przez TLS 1.2+
- Ograniczony dostęp - Integracje mają dostęp tylko do jawnie udostępnionej zawartości
- OAuth 2.0 - Bezpieczny przepływ autoryzacji dla integracji publicznych
- Szyfrowane przechowywanie - Tokeny szyfrowane w spoczynku w Tajo
- Izolacja workspace - Każda integracja jest ograniczona do jednego workspace