Коннектор Notion

Подключите рабочее пространство Notion к Brevo для маркетинговых рабочих процессов на основе контента, синхронизации CRM-баз данных и автоматических уведомлений через Tajo.

Обзор

СвойствоЗначение
ПлатформаNotion
КатегорияCustom
Сложность настройкиПростая
Официальная интеграцияНет
Синхронизируемые данныеБазы данных, страницы, пользователи
Тип APIREST API
АутентификацияInternal Integration Token / OAuth 2.0
Базовый URLhttps://api.notion.com
Версия API2022-06-28 (через заголовок Notion-Version)

Возможности

  • Синхронизация баз данных, синхронизация записей баз данных Notion с контактами и листами Brevo
  • CRM-мост, использование баз данных Notion как легковесной CRM, синхронизированной с Brevo
  • Уведомления о контенте, запуск кампаний Brevo при публикации страниц Notion
  • Сопоставление свойств, сопоставление свойств баз данных Notion с атрибутами контактов Brevo
  • Мониторинг страниц, отслеживание обновлений страниц и пересылка их как событий Brevo
  • Синхронизация каталога пользователей, синхронизация участников рабочего пространства Notion с контактами Brevo

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть:

  1. Рабочее пространство Notion с правами администратора
  2. Внутренняя интеграция Notion или OAuth-приложение
  3. Страницы баз данных, открытые для интеграции
  4. Аккаунт Brevo с доступом к API
  5. Аккаунт Tajo с активной подпиской

Аутентификация

Notion поддерживает два метода аутентификации.

Вариант 1: Internal Integration (рекомендуется для одного рабочего пространства)

  1. Перейдите на notion.so/my-integrations
  2. Нажмите New integration
  3. Назовите её “Tajo Integration”
  4. Выберите рабочее пространство
  5. Настройте права:
Content Capabilities:
Read content: ✓
Update content: ✓
Insert content: ✓
User Capabilities:
Read user information: ✓
  1. Скопируйте Internal Integration Secret (начинается с ntn_)

Требуется предоставление доступа к страницам

Внутренние интеграции могут получать доступ только к страницам и базам данных, явно открытым для них. Откройте каждую целевую базу данных для интеграции через меню ”…” > “Connections” > выберите интеграцию.

Вариант 2: OAuth 2.0 (публичные интеграции)

Для интеграций, обслуживающих несколько рабочих пространств, используйте поток OAuth 2.0:

  1. Зарегистрируйте интеграцию как публичную
  2. Перенаправьте пользователей на: https://api.notion.com/v1/oauth/authorize?client_id=...
  3. Обменяйте код на токен доступа по адресу /v1/oauth/token

Подключение к Tajo

Terminal window
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}/queryPOSTЗапрос записей базы данных
/v1/databases/{id}GETПолучить схему базы данных
/v1/pagesPOSTСоздать новую страницу
/v1/pages/{id}GETПолучить свойства страницы
/v1/pages/{id}PATCHОбновить свойства страницы
/v1/blocks/{id}/childrenGETПолучить дочерние блоки
/v1/usersGETСписок всех пользователей рабочего пространства
/v1/users/{id}GETПолучить данные пользователя
/v1/searchPOSTПоиск по рабочему пространству

Примеры кода

Инициализация коннектора

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 с листом Brevo
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
// }

Запрос с фильтрацией

// Запрос базы данных 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

Проверка подключения

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

Лучшие практики

  1. Явно открывайте базы данных, внутренние интеграции видят только открытый контент
  2. Используйте запросы к базам данных вместо поиска, запросы быстрее и надёжнее для известных баз данных
  3. Тщательно сопоставляйте типы свойств, у Notion много типов свойств; соотносите их с типами атрибутов Brevo
  4. Обрабатывайте пагинацию, всегда перебирайте все страницы курсора для получения полных данных
  5. Синхронизируйте инкрементально, используйте фильтры last_edited_time для синхронизации только изменённых записей
  6. Настройте расписание опроса, Notion не поддерживает вебхуки нативно; опрашивайте API с регулярными интервалами

Безопасность

  • Аутентификация по Bearer token, секреты интеграций и OAuth-токены
  • Только HTTPS, все API-коммуникации зашифрованы через TLS 1.2+
  • Ограниченный доступ, интеграции обращаются только к явно открытому контенту
  • OAuth 2.0, безопасный поток авторизации для публичных интеграций
  • Шифрованное хранение, токены зашифрованы при хранении в Tajo
  • Изоляция рабочего пространства, каждая интеграция ограничена одним рабочим пространством

Связанные ресурсы

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI-ассистент

Привет! Спрашивайте меня о документации.