Коннектор Notion
Подключите рабочее пространство Notion к Brevo для маркетинговых рабочих процессов на основе контента, синхронизации CRM-баз данных и автоматических уведомлений через Tajo.
Обзор
| Свойство | Значение |
|---|---|
| Платформа | Notion |
| Категория | Custom |
| Сложность настройки | Простая |
| Официальная интеграция | Нет |
| Синхронизируемые данные | Базы данных, страницы, пользователи |
| Тип API | REST API |
| Аутентификация | Internal Integration Token / OAuth 2.0 |
| Базовый URL | https://api.notion.com |
| Версия API | 2022-06-28 (через заголовок Notion-Version) |
Возможности
- Синхронизация баз данных, синхронизация записей баз данных Notion с контактами и листами Brevo
- CRM-мост, использование баз данных Notion как легковесной CRM, синхронизированной с Brevo
- Уведомления о контенте, запуск кампаний Brevo при публикации страниц Notion
- Сопоставление свойств, сопоставление свойств баз данных Notion с атрибутами контактов Brevo
- Мониторинг страниц, отслеживание обновлений страниц и пересылка их как событий Brevo
- Синхронизация каталога пользователей, синхронизация участников рабочего пространства Notion с контактами Brevo
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Рабочее пространство Notion с правами администратора
- Внутренняя интеграция Notion или OAuth-приложение
- Страницы баз данных, открытые для интеграции
- Аккаунт Brevo с доступом к API
- Аккаунт Tajo с активной подпиской
Аутентификация
Notion поддерживает два метода аутентификации.
Вариант 1: Internal Integration (рекомендуется для одного рабочего пространства)
- Перейдите на notion.so/my-integrations
- Нажмите New integration
- Назовите её “Tajo Integration”
- Выберите рабочее пространство
- Настройте права:
Content Capabilities: Read content: ✓ Update content: ✓ Insert content: ✓
User Capabilities: Read user information: ✓- Скопируйте Internal Integration Secret (начинается с
ntn_)
Требуется предоставление доступа к страницам
Внутренние интеграции могут получать доступ только к страницам и базам данных, явно открытым для них. Откройте каждую целевую базу данных для интеграции через меню ”…” > “Connections” > выберите интеграцию.
Вариант 2: OAuth 2.0 (публичные интеграции)
Для интеграций, обслуживающих несколько рабочих пространств, используйте поток OAuth 2.0:
- Зарегистрируйте интеграцию как публичную
- Перенаправьте пользователей на:
https://api.notion.com/v1/oauth/authorize?client_id=... - Обменяйте код на токен доступа по адресу
/v1/oauth/token
Подключение к Tajo
tajo connectors install notion \ --token $NOTION_TOKENКонфигурация
Базовая настройка
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Сопоставление полей
Сопоставьте свойства баз данных Notion с атрибутами контактов 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: TAGSЭндпоинты API
Tajo интегрируется со следующими эндпоинтами Notion API:
| Эндпоинт | Метод | Назначение |
|---|---|---|
/v1/databases/{id}/query | POST | Запрос записей базы данных |
/v1/databases/{id} | GET | Получить схему базы данных |
/v1/pages | POST | Создать новую страницу |
/v1/pages/{id} | GET | Получить свойства страницы |
/v1/pages/{id} | PATCH | Обновить свойства страницы |
/v1/blocks/{id}/children | GET | Получить дочерние блоки |
/v1/users | GET | Список всех пользователей рабочего пространства |
/v1/users/{id} | GET | Получить данные пользователя |
/v1/search | POST | Поиск по рабочему пространству |
Примеры кода
Инициализация коннектора
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});Синхронизация базы данных с Brevo
// Синхронизация базы данных Notion с листом Brevoawait 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// }Запрос с фильтрацией
// Запрос базы данных Notion с фильтрамиconst results = await tajo.connectors.query('notion', { databaseId: 'abc123def456', filter: { property: 'Status', select: { equals: 'Active' } }, sorts: [ { property: 'Last Contact', direction: 'descending' } ]});Создание страницы из события Brevo
// Создание страницы Notion при достижении контактом Brevo ключевого момента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() } } } }); }});Ограничения скорости
Notion устанавливает ограничения скорости для каждой интеграции:
| Тип лимита | Значение |
|---|---|
| Ограничение скорости | 3 запроса в секунду на интеграцию |
| Burst-лимит | Короткие всплески допустимы, затем регулирование |
| Размер страницы | Максимум 100 записей на запрос с пагинацией |
Пагинация на основе курсора
Notion использует пагинацию на основе курсора. Tajo обрабатывает это автоматически, перебирая все страницы с помощью параметра next_cursor до тех пор, пока has_more не вернёт false.
Notion возвращает 429 Too Many Requests при превышении лимитов с заголовком Retry-After.
Устранение неполадок
Частые проблемы
| Проблема | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Недействительный или истёкший токен | Перегенерируйте токен интеграции |
| 403 Forbidden | Страница не открыта для интеграции | Откройте страницу/базу данных для интеграции через Connections |
| 404 Object not found | Неверный ID базы данных или нет доступа | Проверьте ID базы данных и настройки доступа |
| Отсутствующие свойства | Несоответствие схемы | Повторно синхронизируйте схему базы данных и обновите сопоставление полей |
| Превышен лимит запросов | Слишком много быстрых запросов | Уменьшите частоту синхронизации или размер пакета |
Режим отладки
connectors: notion: debug: true log_level: verbose log_api_calls: trueПроверка подключения
tajo connectors test notion# ✓ API authentication successful# ✓ Database access verified# ✓ User list accessible# ✓ Search operational# ✓ Page creation availableЛучшие практики
- Явно открывайте базы данных, внутренние интеграции видят только открытый контент
- Используйте запросы к базам данных вместо поиска, запросы быстрее и надёжнее для известных баз данных
- Тщательно сопоставляйте типы свойств, у Notion много типов свойств; соотносите их с типами атрибутов Brevo
- Обрабатывайте пагинацию, всегда перебирайте все страницы курсора для получения полных данных
- Синхронизируйте инкрементально, используйте фильтры
last_edited_timeдля синхронизации только изменённых записей - Настройте расписание опроса, Notion не поддерживает вебхуки нативно; опрашивайте API с регулярными интервалами
Безопасность
- Аутентификация по Bearer token, секреты интеграций и OAuth-токены
- Только HTTPS, все API-коммуникации зашифрованы через TLS 1.2+
- Ограниченный доступ, интеграции обращаются только к явно открытому контенту
- OAuth 2.0, безопасный поток авторизации для публичных интеграций
- Шифрованное хранение, токены зашифрованы при хранении в Tajo
- Изоляция рабочего пространства, каждая интеграция ограничена одним рабочим пространством