Connecteur Notion
Connectez votre workspace Notion à Brevo pour des workflows marketing pilotés par le contenu, la synchronisation de base de données CRM et des notifications automatisées via Tajo.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Notion |
| Catégorie | Custom |
| Complexité d’installation | Facile |
| Intégration officielle | Non |
| Données synchronisées | Bases de données, pages, utilisateurs |
| Type d’API | API REST |
| Authentification | Internal Integration Token / OAuth 2.0 |
| URL de base | https://api.notion.com |
| Version d’API | 2022-06-28 (via en-tête Notion-Version) |
Fonctionnalités
- Synchronisation de base de données, Synchronisez les entrées de base de données Notion vers les contacts et listes Brevo
- Pont CRM, Utilisez les bases de données Notion comme CRM léger, synchronisées vers Brevo
- Notifications de contenu, Déclenchez des campagnes Brevo lors de la publication de pages Notion
- Mappage de propriétés, Mappez les propriétés de base de données Notion vers les attributs de contact Brevo
- Surveillance des pages, Suivez les mises à jour de pages et transférez-les en tant qu’événements Brevo
- Synchronisation de l’annuaire utilisateur, Synchronisez les membres du workspace Notion vers les contacts Brevo
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un workspace Notion avec accès admin
- Une intégration interne Notion ou une application OAuth
- Des pages de base de données partagées avec l’intégration
- Un compte Brevo avec accès API
- Un compte Tajo avec un abonnement actif
Authentification
Notion prend en charge deux méthodes d’authentification.
Option 1 : Intégration interne (recommandée pour un workspace unique)
- Allez sur notion.so/my-integrations
- Cliquez sur New integration
- Nommez-la « Tajo Integration »
- Sélectionnez votre workspace
- Définissez les capacités :
Content Capabilities: Read content: ✓ Update content: ✓ Insert content: ✓
User Capabilities: Read user information: ✓- Copiez le Internal Integration Secret (commence par
ntn_)
Partage de pages requis
Les intégrations internes ne peuvent accéder qu’aux pages et bases de données explicitement partagées avec elles. Partagez chaque base de données cible avec votre intégration via le menu « … » > « Connections » > sélectionnez votre intégration.
Option 2 : OAuth 2.0 (intégrations publiques)
Pour les intégrations servant plusieurs workspaces, utilisez le flux OAuth 2.0 :
- Enregistrez votre intégration en tant qu’intégration publique
- Redirigez les utilisateurs vers :
https://api.notion.com/v1/oauth/authorize?client_id=... - Échangez le code contre un token d’accès sur
/v1/oauth/token
Connexion à Tajo
tajo connectors install notion \ --token $NOTION_TOKENConfiguration
Configuration de base
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: 26Mappage des champs
Mappez les propriétés de base de données Notion vers les attributs de contact Brevo :
field_mapping: # Propriété Notion -> Attribut Brevo 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: TAGSEndpoints API
Tajo s’intègre avec les endpoints suivants de l’API Notion :
| Endpoint | Méthode | Objet |
|---|---|---|
/v1/databases/{id}/query | POST | Interroger les entrées d’une base de données |
/v1/databases/{id} | GET | Récupérer le schéma d’une base de données |
/v1/pages | POST | Créer une nouvelle page |
/v1/pages/{id} | GET | Récupérer les propriétés d’une page |
/v1/pages/{id} | PATCH | Mettre à jour les propriétés d’une page |
/v1/blocks/{id}/children | GET | Récupérer les enfants d’un bloc |
/v1/users | GET | Lister tous les utilisateurs du workspace |
/v1/users/{id} | GET | Récupérer un utilisateur |
/v1/search | POST | Rechercher dans tout le workspace |
Exemples de code
Initialiser le connecteur
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});Synchroniser une base de données vers Brevo
// Synchroniser une base de données Notion vers une liste 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// }Requête avec filtres
// Interroger une base de données Notion avec filtresconst results = await tajo.connectors.query('notion', { databaseId: 'abc123def456', filter: { property: 'Status', select: { equals: 'Active' } }, sorts: [ { property: 'Last Contact', direction: 'descending' } ]});Créer une page depuis un événement Brevo
// Créer une page Notion lorsqu'un contact Brevo atteint un jalontajo.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() } } } }); }});Limites de débit
Notion impose des limites de débit par intégration :
| Type de limite | Valeur |
|---|---|
| Limite de débit | 3 requêtes par seconde par intégration |
| Limite de burst | Bursts courts autorisés, puis throttling |
| Taille de page | 100 éléments max par requête paginée |
Pagination basée sur curseur
Notion utilise une pagination basée sur un curseur. Tajo gère cela automatiquement en itérant sur toutes les pages via le paramètre next_cursor jusqu’à ce que has_more renvoie false.
Notion renvoie 429 Too Many Requests lorsque les limites de débit sont dépassées, avec un en-tête Retry-After.
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Token invalide ou expiré | Régénérez le token d’intégration |
| 403 Forbidden | Page non partagée avec l’intégration | Partagez la page/base de données avec l’intégration via Connections |
| 404 Object not found | ID de base de données incorrect ou non partagé | Vérifiez l’ID de la base et les paramètres de partage |
| Propriétés manquantes | Schéma non correspondant | Re-synchronisez le schéma de la base de données et mettez à jour le mappage des champs |
| Limite de débit dépassée | Trop de requêtes rapides | Réduisez la fréquence de synchronisation ou la taille du batch |
Mode debug
connectors: notion: debug: true log_level: verbose log_api_calls: trueTester la connexion
tajo connectors test notion# ✓ API authentication successful# ✓ Database access verified# ✓ User list accessible# ✓ Search operational# ✓ Page creation availableBonnes pratiques
- Partagez les bases de données explicitement, Les intégrations internes ne voient que le contenu partagé
- Utilisez les requêtes de base de données plutôt que la recherche, Les requêtes sont plus rapides et plus fiables pour les bases connues
- Mappez les types de propriétés avec soin, Notion a de nombreux types de propriétés ; faites-les correspondre aux types d’attributs Brevo
- Gérez la pagination, Itérez toujours sur toutes les pages du curseur pour des données complètes
- Synchronisez de manière incrémentale, Utilisez des filtres
last_edited_timepour ne synchroniser que les entrées modifiées - Mettez en place une planification de polling, Notion ne prend pas en charge les webhooks nativement ; interrogez à intervalles réguliers
Sécurité
- Authentification par Bearer Token, Secrets d’intégration et tokens OAuth
- HTTPS uniquement, Toutes les communications API chiffrées via TLS 1.2+
- Accès à portée limitée, Les intégrations n’accèdent qu’au contenu explicitement partagé
- OAuth 2.0, Flux d’autorisation sécurisé pour les intégrations publiques
- Stockage chiffré, Tokens chiffrés au repos dans Tajo
- Isolation de workspace, Chaque intégration est limitée à un workspace unique