Aller au contenu

Comment synchroniser HubSpot et Notion avec n8n ?

Si votre équipe stocke ses données CRM dans HubSpot et le contexte de ses projets dans Notion, les synchroniser à la main fait perdre un temps constant. Ce guide explique comment créer dans n8n des workflows automatisés qui relient les deux outils : les mises à jour des deals arrivent dans Notion et les notes de réunion remontent dans HubSpot, sans aucun copier-coller. Aucun code personnalisé n'est nécessaire, seulement les nœuds natifs de n8n et un peu de configuration.

Contribution de

SaaS Hackers
Blog

Réponse rapide : vous pouvez synchroniser HubSpot et Notion avec n8n en créant des workflows automatisés qui se déclenchent sur des événements CRM (nouveau contact, deal mis à jour, deal gagné) et écrivent des données structurées dans des bases Notion, et inversement. La configuration prend moins d'une heure et ne demande aucun code personnalisé, seulement les nœuds natifs HubSpot et Notion de n8n.

HubSpot contient vos données CRM. Notion contient la réflexion de votre équipe. Sans connexion entre les deux, vos account managers copient-collent les détails des deals dans leurs notes de réunion, et votre équipe ops court après un contexte qui existe déjà ailleurs.

Ce tutoriel vous montre précisément comment créer une synchronisation bidirectionnelle entre HubSpot et Notion avec n8n, pour les fiches comptes et les notes. À la fin, vous disposerez d'un workflow opérationnel qui garde les deux outils synchronisés automatiquement, sans payer pour une intégration native qui ne fait que la moitié du travail.

Ce qu'il vous faut avant de commencer

Avant de construire quoi que ce soit, réunissez ces trois éléments :

  • Une instance n8n (auto-hébergée ou n8n Cloud, les deux conviennent)
  • Un compte HubSpot avec l'accès API activé (n'importe quelle offre payante, ou un sandbox développeur)
  • Un espace de travail Notion avec au moins une base de données configurée pour les comptes ou les contacts

Vous devrez aussi créer des identifiants dans n8n pour les deux outils. HubSpot utilise OAuth2 ou un jeton d'application privée. Notion utilise un secret d'intégration lié à un espace de travail précis.

Configurer vos identifiants HubSpot dans n8n

  1. Dans votre compte HubSpot, allez dans Paramètres > Intégrations > Applications privées
  2. Créez une nouvelle application privée et accordez-lui les autorisations pour crm.objects.contacts.read, crm.objects.deals.read, et crm.objects.companies.read (ajoutez les autorisations d'écriture si vous prévoyez de renvoyer des données vers HubSpot)
  3. Copiez le jeton d'accès
  4. Dans n8n, allez dans Credentials > New > HubSpot API et collez le jeton

Configurer vos identifiants Notion dans n8n

  1. Rendez-vous sur notion.so/my-integrations et créez une nouvelle intégration
  2. Donnez-lui un nom (par exemple « n8n Sync ») et sélectionnez l'espace de travail que vous souhaitez connecter
  3. Copiez le secret d'intégration
  4. Dans n8n, allez dans Credentials > New > Notion API et collez le secret
  5. De retour dans Notion, ouvrez la base de données à synchroniser et cliquez sur Partager > Inviter votre intégration par son nom

Workflow 1 : de HubSpot vers Notion (synchronisation des comptes)

Ce workflow se déclenche chaque fois qu'une fiche entreprise est créée ou mise à jour dans HubSpot et écrit les données dans une base Notion.

Étape 1 : ajouter un nœud HubSpot Trigger

  1. Créez un nouveau workflow dans n8n
  2. Ajoutez un nœud HubSpot Trigger comme point de départ
  3. Définissez l'événement sur company.creation ou company.propertyChange selon que vous souhaitez capter les nouvelles fiches, les mises à jour, ou les deux
  4. Authentifiez-vous avec les identifiants configurés plus haut

Si vous utilisez une instance auto-hébergée sans URL de webhook publique, utilisez plutôt le nœud HubSpot en mode polling et définissez un déclencheur planifié (toutes les 15 minutes conviennent à la plupart des équipes). Si vous concevez un dispositif de reporting plus large autour de ce workflow, il est utile de réfléchir aussi à l'attribution et au suivi des sources, surtout si vous souhaitez suivre le trafic provenant des outils d'IA en parallèle de l'activité CRM.

Étape 2 : ajouter un nœud HubSpot pour récupérer les données complètes de l'entreprise

Le déclencheur ne transmet que l'ID de l'entreprise. Il faut un second nœud pour récupérer la fiche complète.

  1. Ajoutez un nœud HubSpot après le déclencheur
  2. Définissez Resource sur Company et Operation sur Get
  3. Associez l'ID de l'entreprise issu de la sortie du déclencheur à l'aide d'une expression : {{ $json.objectId }}
  4. Sélectionnez les propriétés souhaitées : nom de l'entreprise, domaine, propriétaire, étape du deal, chiffre d'affaires annuel et tous les champs personnalisés utilisés par votre équipe

Étape 3 : ajouter un nœud Notion pour créer ou mettre à jour une page

  1. Ajoutez un nœud Notion
  2. Définissez Resource sur Database Page et Operation sur Create
  3. Sélectionnez votre base de données de comptes
  4. Associez les champs HubSpot aux propriétés Notion :
Champ HubSpotPropriété Notion
nameName (titre)
domainWebsite (URL)
hubspot_owner_idOwner (texte ou relation)
annualrevenueARR (nombre)
hs_lastmodifieddateLast Updated (date)

Pour les mises à jour plutôt que les créations, vous devez d'abord vérifier si une page existe déjà. Ajoutez un nœud Notion supplémentaire avant l'étape de création, défini sur Search avec un filtre sur le domaine ou sur l'ID d'entreprise HubSpot stocké comme propriété Notion. Si un résultat revient, passez à une opération Update en utilisant l'ID de page renvoyé.

Étape 4 : ajouter un nœud IF pour gérer la logique création ou mise à jour

  1. Ajoutez un nœud IF entre la recherche et l'écriture
  2. Condition : {{ $json.results.length }} est supérieur à 0
  3. Branche True : connectez-la à un nœud Notion Update
  4. Branche False : connectez-la à un nœud Notion Create

Cela évite les pages en double et garde votre base Notion propre.

Workflow 2 : de Notion vers HubSpot (notes et comptes rendus de réunion)

Ce workflow s'exécute lorsqu'une nouvelle page est ajoutée à une base de notes de réunion Notion, puis renvoie une note ou un engagement vers la fiche entreprise HubSpot concernée.

Étape 1 : ajouter un Schedule Trigger

Notion ne prend pas en charge nativement les webhooks sortants, donc n8n interroge la base à intervalles réguliers.

  1. Ajoutez un nœud Schedule Trigger
  2. Réglez-le pour qu'il s'exécute toutes les 10 ou 15 minutes
  3. C'est votre point d'entrée

Étape 2 : interroger la base Notion pour trouver les nouvelles pages

  1. Ajoutez un nœud Notion
  2. Définissez Resource sur Database et Operation sur Get Many
  3. Sélectionnez votre base de notes de réunion
  4. Ajoutez un filtre : Created Time est postérieur à {{ $now.minus(15, 'minutes').toISO() }}

Cela ne récupère que les pages créées au cours des 15 dernières minutes, ce qui correspond à votre intervalle de polling.

Étape 3 : extraire l'ID d'entreprise HubSpot depuis Notion

Pour que cela fonctionne, votre modèle de notes de réunion Notion doit contenir une propriété qui stocke l'ID d'entreprise HubSpot. Ajoutez une propriété de type Number ou Text nommée « HubSpot ID » à votre modèle Notion et intégrez-la au processus de prise de notes standard de votre équipe.

Associez-la dans n8n : {{ $json.properties['HubSpot ID'].number }}

Étape 4 : créer un engagement dans HubSpot

  1. Ajoutez un nœud HTTP Request (le nœud HubSpot natif ne couvre pas tous les types d'engagements, utilisez donc directement l'API ici)
  2. Méthode : POST
  3. URL : https://api.hubapi.com/engagements/v1/engagements
  4. Authentification : Header Auth avec votre jeton d'application privée HubSpot
  5. Corps (JSON) :
{
  "engagement": {
    "active": true,
    "type": "NOTE"
  },
  "associations": {
    "companyIds": ["{{ $json.properties['HubSpot ID'].number }}"]
  },
  "metadata": {
    "body": "{{ $json.properties.Name.title[0].plain_text }}\n\n{{ $json.properties.Summary.rich_text[0].plain_text }}"
  }
}

Cela crée une note dans la chronologie d'activité de HubSpot, rattachée à la bonne entreprise, avec le titre de la page et un champ de résumé récupéré depuis Notion.

Comment gérer les erreurs et éviter les synchronisations en double

Les synchronisations bidirectionnelles échouent de manière prévisible. Voici comment éviter les problèmes les plus courants.

Éviter les boucles infinies : Quand n8n écrit une fiche dans HubSpot, HubSpot renvoie un webhook à n8n, qui tente d'écrire dans Notion, que vous interrogez ensuite à nouveau. Ajoutez une propriété de métadonnées (par exemple synced_by_n8n: true) à toute fiche créée par votre workflow, puis ajoutez au début de chaque workflow un nœud IF qui ignore les fiches portant ce marqueur.

Gérer proprement les champs manquants : Utilisez les nœuds n8n IF et Set pour définir des valeurs de repli pour toute propriété facultative. Si annualrevenue est null dans HubSpot, définissez-le sur 0 avant de le transmettre à Notion, plutôt que de laisser le workflow échouer.

Consigner les échecs dans une base Notion d'erreurs : ajoutez dans n8n un workflow d'erreur (Settings > Error Workflow) qui écrit les exécutions échouées dans une page Notion dédiée. Votre équipe gagne ainsi en visibilité sans avoir à surveiller n8n directement. Si cette synchronisation s'intègre à un dispositif de revenus plus vaste, vous pouvez aussi vous faire accompagner par des agences de marketing ops B2B SaaS spécialisées dans la gouvernance des workflows, l'attribution et la conception des processus CRM.

Comment nous avons construit et testé cette configuration

Ce workflow a été construit et testé sur n8n Cloud (v1.x) avec un sandbox développeur HubSpot et un espace de travail Notion comprenant trois bases de données : Accounts, Meeting Notes et Sync Errors. La synchronisation bidirectionnelle a fonctionné sans doublon sur 50 fiches de test et a correctement renvoyé 12 notes de réunion vers HubSpot sous forme d'engagements.

La configuration décrite ici suit le même schéma que celui utilisé par SaaS Hackers pour créer des workflows d'automatisation CRM destinés aux équipes B2B SaaS qui veulent connecter leur stack GTM sans middleware coûteux.

FAQ

n8n prend-il en charge une intégration native entre HubSpot et Notion sans code personnalisé ?

Oui. n8n inclut des nœuds natifs pour HubSpot et pour Notion. Vous pouvez créer un workflow de synchronisation fonctionnel uniquement avec les éditeurs de nœuds, sans écrire de code. Pour les types d'engagements avancés dans HubSpot (comme les notes), il se peut que vous ayez besoin d'un nœud HTTP Request pointant directement vers l'API HubSpot, mais aucun script personnalisé n'est requis.

Quelle est la différence entre une synchronisation HubSpot Notion unidirectionnelle et bidirectionnelle ?

Une synchronisation unidirectionnelle envoie les données dans un seul sens, généralement de HubSpot vers Notion. Une synchronisation bidirectionnelle lit les changements des deux outils et les écrit dans l'autre. L'approche bidirectionnelle maintient les fiches comptes à jour dans Notion et renvoie les notes de réunion ou les mises à jour dans la chronologie d'activité de HubSpot, de sorte que les deux outils reflètent la même réalité.

À quelle fréquence la synchronisation HubSpot Notion avec n8n se met-elle à jour ?

Cela dépend de la configuration de vos déclencheurs. Les webhooks HubSpot se déclenchent quasiment en temps réel (quelques secondes après une modification). Notion, qui ne prend pas en charge les webhooks sortants, repose sur le polling. Un intervalle de 10 à 15 minutes est un réglage par défaut pratique pour la plupart des équipes. Si vous avez besoin de mises à jour plus rapides de Notion vers HubSpot, envisagez un formulaire connecté à l'API Notion ou un bouton de déclenchement manuel dans votre modèle Notion.

Cette synchronisation HubSpot Notion est-elle gratuite ?

La version auto-hébergée de n8n est gratuite et open source. n8n Cloud propose une offre gratuite avec un nombre d'exécutions limité. L'API des applications privées de HubSpot est disponible dans toutes les offres, y compris la gratuite. L'API de Notion est disponible dans tous les forfaits. Le seul coût est l'hébergement de n8n si vous l'hébergez vous-même, ou votre abonnement à n8n Cloud dans le cas contraire.

Que se passe-t-il si une synchronisation échoue en cours de route ?

n8n consigne chaque exécution avec ses données d'entrée, de sortie et son état d'erreur. Vous pouvez examiner les exécutions en échec directement dans le journal d'exécution. Ajouter un workflow d'erreur qui enregistre les échecs dans une base de données d'erreurs Notion (comme décrit ci-dessus) permet à votre équipe de repérer et de corriger plus vite les synchronisations défaillantes, sans avoir à se connecter à n8n à chaque fois.

Contribution de

SaaS Hackers

Trouver un expert B2B SaaS

Nous avons constitué un annuaire d'experts et d'agences B2B SaaS que nous avons évalués et classés par service et par spécialité, pour que vous puissiez les consulter.

Trouver un expert
Tout voir