FlowKit

Connecter Attio à n8n : synchroniser et enrichir son CRM par l'API

Publié le 15 août 2026 · 6 min de lecture

Attio s'est fait une place parmi les CRM privilégiés par les équipes qui automatisent déjà leur stack : modèle de données flexible (les « objects » se personnalisent sans passer par un configurateur figé), API REST complète en v2, et une base pensée pour être pilotée par du code ou des workflows plutôt que remplie à la main. Le revers de cette flexibilité : n8n ne propose pas encore de node natif Attio, seulement un node communautaire tiers. Ce n'est pas un obstacle sérieux — le node HTTP Request couvre l'intégralité de l'API en quelques minutes de configuration — mais ça change la façon d'aborder l'intégration par rapport à un CRM comme HubSpot ou Salesforce, où tout est déjà encapsulé dans une interface à formulaires.

Automatiser cette couche de synchronisation n'est pas un détail cosmétique. Une méta-analyse de Romoli, Oduro, Cardinali, Mainolfi et De Nisco publiée en 2026 dans le Journal of Business & Industrial Marketing (voir sur Google Scholar), portant sur 62 études et plus de 23 000 observations, montre que les technologies de vente (CRM, automatisation commerciale, social selling) améliorent la performance commerciale, mais avec un effet mesuré comme modéré — et les auteurs soulignent que ce gain dépend fortement de l'intégration réelle de l'outil dans les routines de travail plutôt que de sa seule adoption. Un CRM qui reçoit ses données en retard ou à la main reste un simple journal ; un CRM alimenté et interrogé automatiquement par n8n devient la source de vérité qui déclenche l'action.

Pourquoi Attio n'a pas (encore) de node natif dans n8n

n8n privilégie ses nodes natifs pour les outils les plus demandés, mais la couverture n'est jamais exhaustive à l'instant T — voir notre guide des nodes communautaires pour la mécanique générale. Pour Attio, deux options existent aujourd'hui :

  • Le node communautaire n8n-nodes-attio : un package tiers non officiel qui encapsule l'essentiel de l'API OpenAPI d'Attio (objects, records, listes, notes, tâches, webhooks) dans une interface classique. Il s'installe uniquement sur une instance self-hosted, via Community Nodes, et peut être branché comme outil sur un node AI Agent en activant la variable d'environnement N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE.
  • Le node HTTP Request : la voie la plus portable, disponible aussi bien sur n8n Cloud (où les nodes communautaires restent limités à une liste validée) qu'en self-hosted, et qui ne dépend d'aucun mainteneur tiers susceptible d'abandonner le projet.

Ce guide couvre la seconde option, réutilisable telle quelle que vous soyez sur Cloud ou sur une instance auto-hébergée — voir nos guides pour choisir un VPS pour n8n self-hosted si vous démarrez tout juste.

Authentification : jeton d'accès et scopes

Attio expose deux modes d'authentification, mais pour un usage interne à une seule entreprise, l'API Key suffit largement :

  1. Dans Attio, ouvrez Workspace Settings → Developers → Create a new integration, nommez l'intégration (par exemple « n8n ») et cochez uniquement les scopes nécessaires : object_configuration:read pour lire la structure des objects, record_permission:read pour lire des records, et record_permission:read-write si le workflow doit aussi en créer ou en modifier.
  2. Générez le jeton d'accès et copiez-le immédiatement — il ne sera plus affiché en clair ensuite.
  3. Dans n8n, créez un credential de type Generic Credential Type → Header Auth, avec l'en-tête Authorization et la valeur Bearer <votre_jeton>.

Tous les nodes HTTP Request qui appellent l'API Attio réutilisent ensuite ce même credential. Traitez ce jeton comme n'importe quel secret d'API — notre guide de sécurisation des credentials détaille les bonnes pratiques de stockage et de rotation, particulièrement utiles si plusieurs workflows partagent le même accès.

Le modèle de données Attio : objects et records

L'API Attio organise tout autour d'objects (people, companies, deals, ou des objects personnalisés créés dans le workspace) et de records, les entrées individuelles de chaque object. Trois appels couvrent la quasi-totalité des besoins d'un workflow n8n :

  • Lister ou filtrer : POST https://api.attio.com/v2/objects/{object}/records/query, avec un corps JSON qui définit les filtres et le tri. Les résultats volumineux sont paginés — le même principe de curseur que celui détaillé dans notre guide de pagination avec HTTP Request.
  • Créer : POST https://api.attio.com/v2/objects/{object}/records, avec les valeurs d'attributs dans le corps.
  • Upsert (créer ou mettre à jour) : PUT https://api.attio.com/v2/objects/{object}/records?matching_attribute=domain (ou email_address pour une personne) — Attio met à jour le record existant qui correspond sur cet attribut, ou en crée un nouveau si aucun ne correspond.

Ce dernier point compte particulièrement dans un pipeline n8n : un Schedule Trigger ou un webhook qui se redéclenche par erreur ne doit jamais créer de doublon. L'upsert avec matching_attribute rend l'appel naturellement idempotent, sur le même principe que celui détaillé dans notre guide sur l'idempotence des webhooks — sauf qu'ici, c'est l'API elle-même qui porte cette garantie, sans logique de déduplication à écrire côté n8n.

Exemple : pousser un lead qualifié et enrichi dans Attio

Un pipeline complet illustre bien l'intérêt de cette approche :

  1. Réception du lead : un formulaire ou un webhook capture un email professionnel et un message, comme décrit dans notre guide d'enrichissement automatique de leads.
  2. Enrichissement : extraction du domaine, visite du site de l'entreprise, et interrogation d'une API d'enrichissement ou de l'API Recherche d'entreprises pour le secteur et la taille — la même mécanique que l'article ci-dessus.
  3. Qualification par IA : un node AI Agent attribue un score et une justification, en s'appuyant sur les principes de notre guide de qualification de leads entrants par IA. Verrouillez le format de sortie avec un Structured Output Parser — un score dans un champ mal formé casserait silencieusement l'appel suivant vers Attio.
  4. Upsert dans Attio : deux appels HTTP Request en PUT, l'un sur l'object companies (matching sur domain), l'autre sur people (matching sur email_address), avec le score et le résumé IA écrits dans des attributs personnalisés créés au préalable dans le workspace Attio.

Si votre équipe a déjà construit sa logique de tri et de scoring par IA pour une boîte mail avec le Pack Inbox IA (79 €), le même prompt de scoring se transpose directement à ce pipeline : seule la destination finale change, d'un digest Slack vers un record CRM.

Déclencher un workflow depuis Attio : webhooks plutôt que polling

Plutôt que d'interroger records/query sur un Schedule Trigger pour détecter un nouveau lead ou une mise à jour, Attio propose de vrais webhooks : configurables depuis les paramètres de l'intégration ou par l'API, ils envoient un événement (record.created, record.updated, entre autres) à une URL cible dès qu'il survient, avec l'ID du workspace, de l'object et du record concernés. Un node Webhook n8n en réception, suivi d'un appel GET pour récupérer le détail complet du record modifié, remplace avantageusement le polling — voir notre guide sur les intégrations sans webhook pour comprendre pourquoi cette différence compte, notamment sur le nombre d'appels consommés et la fraîcheur des données.

Fiabiliser l'intégration en production

Deux réflexes à intégrer dès le premier workflow en production :

  • Retry et timeout : comme toute API SaaS, Attio applique une limite de requêtes par workspace. Un Loop Over Items avec un léger délai pour les imports en rafale, combiné aux réglages détaillés dans notre guide retry et timeout du node HTTP Request, évite qu'un pic d'appels (import initial d'une base de leads, par exemple) déclenche des erreurs 429 en cascade.
  • Filet de sécurité : un Error Workflow dédié capture les échecs d'appel vers Attio (jeton expiré, attribut personnalisé renommé côté workspace) et notifie plutôt que de laisser un lead enrichi disparaître silencieusement faute d'avoir pu être écrit dans le CRM.

Pour aller plus loin

Connecter Attio à n8n ne demande ni node officiel ni contournement complexe : un credential Header Auth et trois appels HTTP Request (query, create, upsert) couvrent l'essentiel des besoins de synchronisation. La vraie valeur se joue en amont, dans la qualité du pipeline qui alimente ces appels — enrichissement, scoring, déduplication — exactement le type de brique déjà détaillée dans nos guides sur les leads entrants et disponible clé en main dans le Pack Inbox IA (79 €). Commencez par un seul object (people ou companies) et un seul déclencheur avant d'étendre la synchronisation au reste du workspace.

FAQ

Questions fréquentes

Faut-il installer le node communautaire n8n-nodes-attio ou passer par HTTP Request ?

Le node communautaire (non officiel, maintenu par un tiers) simplifie l'écriture pour un usage self-hosted, où l'installation de packages tiers est possible. Sur n8n Cloud, les nodes communautaires sont restreints à une liste validée par n8n et Attio n'en fait pas partie à ce jour : le node HTTP Request avec un credential Header Auth reste donc la voie la plus portable, fonctionne à l'identique en Cloud et en self-hosted, et ne dépend d'aucun mainteneur tiers.

Comment fonctionne l'upsert idempotent sur un record Attio ?

L'endpoint PUT /v2/objects/{object}/records accepte un paramètre matching_attribute (par exemple domain pour une entreprise, ou email_address pour une personne) : si un record existant correspond sur cet attribut, Attio le met à jour ; sinon, il en crée un nouveau. Rejouer le même appel plusieurs fois ne duplique donc jamais l'entrée, contrairement à un simple POST /records répété.

Quels scopes minimum pour lire et écrire des records depuis n8n ?

Pour lire, record_permission:read et object_configuration:read suffisent. Pour créer ou mettre à jour, il faut record_permission:read-write en plus de object_configuration:read. Ces scopes se cochent au moment de créer l'intégration dans Workspace Settings → Developers, et déterminent le jeton généré — inutile d'accorder plus large que ce que le workflow utilise réellement.

Attio propose-t-il des webhooks temps réel ou faut-il interroger l'API en polling ?

Attio propose de vrais webhooks, configurables depuis les paramètres de l'intégration ou par l'API elle-même, avec des événements comme record.created et record.updated envoyés à une URL cible dès qu'ils surviennent. C'est la méthode recommandée pour déclencher un workflow n8n : elle évite d'interroger l'API à intervalles réguliers pour détecter un changement qui n'a peut-être pas eu lieu.

Bundle FlowKit Complet

269 €