Intégration Drupal et n8n: relier formulaires, contenus et systèmes métier
Imaginons qu’un visiteur envoie une demande de produit sur votre site. Avec une intégration Drupal et n8n, cette demande peut arriver dans votre CRM, prévenir l’équipe commerciale concernée et renvoyer une référence pour le suivi. Votre équipe passe alors moins de temps à copier des données et plus de temps à répondre.
La connexion fonctionne aussi dans l’autre sens. Un article validé dans un autre système peut devenir un brouillon dans Drupal, et une date d’événement modifiée peut mettre à jour une page existante.
Drupal apporte les formulaires, les contenus structurés, la validation et le contrôle de la publication. n8n transmet les données entre les systèmes et les transforme. Ensemble, ils relient votre site aux opérations qui ont lieu avant et après la visite d’une page.
Dans cet article:
- Que peuvent faire Drupal et n8n ensemble?
- Comment les webhooks et les API relient-ils les deux systèmes?
- Comment un formulaire Drupal peut-il créer ou mettre à jour une fiche CRM?
- Comment un événement externe peut-il créer ou mettre à jour des contenus Drupal?
- Comment des changements dans Drupal peuvent-ils déclencher des tâches dans d’autres systèmes?
- Pourquoi le modèle d’entités de Drupal rend-il les intégrations réutilisables?
- Quel composant prend en charge quelle tâche?
- Qu’est-ce qui rend les workflows fiables?
Que peuvent faire Drupal et n8n ensemble?
Les intégrations les plus utiles remplacent une étape manuelle précise: télécharger les envois de formulaires, copier le texte d’un article ou prévenir une autre équipe après une publication.
Trois modèles couvrent de nombreux besoins courants:
- Des formulaires vers les systèmes métier: envoyer une demande à un CRM, transmettre une demande d’assistance ou inscrire une personne à un événement.
- Des systèmes externes vers Drupal: créer un brouillon à partir d’un contenu source validé ou mettre à jour une fiche technique produit.
- De Drupal vers les systèmes externes: prévenir une équipe lorsqu’un contenu est publié ou envoyer des informations modifiées vers un catalogue externe.
Chaque modèle demande des correspondances de champs et des règles convenues. Relier les systèmes ne décide pas automatiquement quelle fiche CRM mettre à jour ni qui a le droit de publier un article importé.
La responsabilité des données reste clairement définie. Drupal peut rester la source de référence pour les contenus du site, tandis qu’un CRM gère les données clients et un système PIM les fiches techniques produits. n8n coordonne les transferts au lieu de devenir un dépôt de contenus supplémentaire.
Pour une vue plus large sur la planification de ces connexions, consultez l’article Intégration CMS avec des systèmes et bases de données externes - ce que vous devez savoir.
Comment les webhooks et les API relient-ils les deux systèmes?
Ces exemples ne demandent pas de connecteur Drupal dédié. Les nodes standard Webhook et HTTP Request de n8n assurent la connexion.
De Drupal vers n8n: Drupal envoie une requête HTTP lorsqu’un événement configuré se produit. Le node Webhook reçoit les données transmises (payload) et lance un workflow.
De n8n vers Drupal: le node HTTP Request appelle une API Drupal pour lire, créer ou mettre à jour des enregistrements dans la limite des permissions du compte d’intégration. Si un système source ne peut pas envoyer d’événements, n8n peut aussi récupérer les enregistrements selon une planification.
Formulaire Drupal ou événement de contenu
→ webhook n8n → traitement et routage → CRM / helpdesk / autre API
Événement externe ou contenu validé
→ workflow n8n → Drupal JSON:API → contenu nouveau ou mis à jour
Réception ne veut pas dire achèvement. Une réponse du webhook peut confirmer que n8n a accepté une requête, alors qu’une action CRM ultérieure peut quand même échouer. Surveillez séparément l’échange HTTP et le résultat métier réel.
Comment un formulaire Drupal peut-il créer ou mettre à jour une fiche CRM?
Imaginons que votre formulaire de demande recueille des coordonnées, un message, le produit souhaité et la région. Dans le workflow proposé, Drupal valide l’envoi, transmet les valeurs sélectionnées à n8n, et le workflow cherche un contact correspondant dans le CRM.
S’il trouve une correspondance, n8n met à jour les champs autorisés et rattache la demande. Sinon, n8n crée un nouveau contact. Une règle de routage convenue transmet ensuite la demande à une file commerciale régionale ou crée un ticket d’assistance.
Choisir le composant sortant côté Drupal
Pour les formulaires créés avec le module communautaire Webform, le Remote Post Handler offre une voie directe pour les requêtes sortantes. Ce handler fait partie de Webform et non de la Form API du cœur de Drupal. Vérifiez les options de votre version installée avant de définir la payload et l’authentification.
Le projet optionnel Webform Remote Handlers fournit des handlers REST et SOAP avec une payload et une authentification configurables. Voyez-le comme une alternative pour des besoins précis, pas comme une dépendance pour chaque intégration.
Pour un formulaire Drupal personnalisé, un submit handler peut transmettre les valeurs validées à un service d’intégration ou à une file d’attente. Les formulaires d’entités existants se raccordent souvent plus facilement par les événements d’entités qu’en adaptant chaque formulaire séparément.
Aligner les champs sur le résultat métier
| Donnée dans Drupal | Traitement proposé dans n8n | Destination |
|---|---|---|
| E-mail du contact | Normaliser selon des règles convenues et chercher une correspondance | Contact CRM |
| Produit souhaité | Associer la valeur à une référence produit externe | Demande ou opportunité CRM |
| Type de demande ou région | Choisir la branche convenue | File commerciale ou système d’assistance |
| Identifiant de l’envoi | Conserver une clé d’intégration stable | Prévention des doublons et suivi de la livraison |
Clarifiez tôt les cas ambigus. Si une recherche renvoie plusieurs contacts, le workflow peut transmettre la demande pour vérification manuelle au lieu de deviner. Les consentements marketing demandent aussi une correspondance explicite: une personne qui envoie une demande commerciale ne consent pas automatiquement aux communications marketing.
Un identifiant d’envoi stable permet au système cible de reconnaître une livraison répétée. C’est important lorsqu’un délai d’attente dépassé déclenche une nouvelle tentative alors que le CRM a déjà enregistré la fiche.
Réduire l’attente pour les visiteurs
Pour les processus en plusieurs étapes, une livraison en arrière-plan évite aux visiteurs d’attendre chaque système connecté. Une file d’attente persistante et un mécanisme de nouvelles tentatives doivent être mis en place spécifiquement. Un Remote Post Handler seul ne fournit pas ce mécanisme.
La référence CRM peut aussi être renvoyée à Drupal, par exemple vers un endpoint créé pour cela ou vers un autre enregistrement sur lequel l’intégration a des permissions. Ne partez pas du principe que le module JSON:API du cœur de Drupal ouvre en écriture chaque élément d’un envoi Webform. Cela n’a aucun effet sur la livraison sortante.
Comment un événement externe peut-il créer ou mettre à jour des contenus Drupal?
Imaginons qu’un système éditorial externe marque un article comme validé. n8n reçoit l’événement, récupère l’enregistrement source, associe ses champs et crée dans Drupal un brouillon de type Article. Un rédacteur ou une rédactrice vérifie le contenu importé avant la publication.
Le même modèle convient aux contenus existants. Une plateforme d’événements peut par exemple gérer les dates, tandis que Drupal reste responsable de l’introduction sur le site et des liens associés. Un changement de date doit mettre à jour les champs de date sans écraser l’introduction de la rédaction.
Utiliser JSON:API pour les requêtes basées sur les entités
Le module du cœur JSON:API expose des ressources HTTP fondées sur le modèle d’entités et de champs du site.
Pour le type de contenu Article, les opérations courantes sont:
POST /jsonapi/node/articlepour créer un article.PATCH /jsonapi/node/article/{uuid}pour mettre à jour un article existant.
Ces noms de ressources dépendent du modèle réel du site. Le node HTTP Request de n8n envoie des requêtes authentifiées, et Drupal continue d’appliquer la validation et les contrôles d’accès.
JSON:API est en lecture seule par défaut. L’écriture doit être activée volontairement et demande une authentification ainsi qu’un compte aux permissions limitées. Activer l’écriture ne suffit pas à sécuriser une intégration. Nous décrivons plus en détail l’exposition des données Drupal par les API dans l’article Headless CMS. Comment exposer les données en utilisant les modules REST API et JSON API?
Enregistrez un identifiant source externe dans un champ convenu ou dans un enregistrement de correspondance. Lors des exécutions suivantes, n8n utilise cet identifiant pour trouver l’entité Drupal et récupérer son UUID. Sinon, chaque mise à jour dans la source pourrait créer un article supplémentaire.
Séparer les attributs et les relations
Une petite correspondance montre la différence:
Titre externe → attributes.title
Texte externe → attributes.body.value
ID source externe → attributes.field_source_id
Catégorie externe → relationships.field_tags
Image externe → relationships.field_image
Les noms des champs personnalisés ne sont ici que des exemples.
Les attributs contiennent des valeurs de champs. Les relations pointent vers d’autres entités, par exemple des termes de taxonomie ou des médias. Ces entités référencées doivent exister, et le workflow a besoin de leurs types de ressources et de leurs UUID. Un POST d’article ne crée pas automatiquement un terme manquant et ne téléverse pas une image dans une entité média.
Choisissez aussi un format de texte autorisé pour le corps du texte et validez le balisage entrant au lieu de faire confiance au HTML externe.
Traiter la publication comme une décision distincte
Créer, mettre à jour et publier sont trois actions différentes.
Lorsque les modules du cœur Workflows et
Content Moderation sont activés, l’intégration doit
respecter les états configurés, les permissions de transition et les
règles de relecture. Modifier status n’est pas un moyen
universel de contourner la modération.
Une publication automatique peut avoir du sens pour des mises à jour autorisées et validées, par exemple une date d’événement provenant de la source de référence. Les textes éditoriaux importés demandent en revanche souvent une relecture humaine. Fixez cette limite pour chaque workflow.
Pour une action ciblée qui touche plusieurs entités, un endpoint personnalisé peut être plus lisible que plusieurs écritures génériques. Il demande lui aussi une autorisation et une validation clairement définies.
Comment des changements dans Drupal peuvent-ils déclencher des tâches dans d’autres systèmes?
Imaginons que la publication d’un article doive prévenir une équipe communication et mettre à jour un catalogue externe. Drupal envoie un événement de publication à n8n, et n8n transmet les données utiles à chaque destination.
L’événement utile est “a été publié”, et non simplement “quelqu’un a enregistré l’article”. Les brouillons enregistrés et les modifications sans lien avec la publication ne doivent pas déclencher de notification de publication.
Choisir et envoyer l’événement dans Drupal
Le module communautaire ECA permet aux équipes de modéliser des événements, des conditions et des actions. Un modèle ECA peut détecter le changement pertinent et appeler une action de requête sortante, à condition que les modules d’intégration installés fournissent une telle action.
Vérifiez les plugins et les versions avant de planifier la configuration exacte. HTTP Client Manager est un module communautaire pour des opérations HTTP externes réutilisables, utilisé dans l’écosystème ECA. Il n’est pas nécessaire pour chaque requête sortante, et les actions disponibles dépendent de la configuration.
Un module personnalisé est une autre possibilité: des hooks lors de la création ou de la mise à jour d’entités peuvent placer un événement dans une file d’attente, et un worker l’envoie avec le client HTTP de Drupal. Cette approche convient lorsque le projet a besoin d’une logique de nouvelles tentatives clairement définie ou d’une détection précise des changements de statut.
L’Entity API de Drupal n’envoie pas de webhooks automatiquement. Le choix de l’événement, la payload, l’envoi et la gestion de la livraison doivent être configurés.
Envoyer assez de contexte pour agir en sécurité
Une payload d’événement exploitable contient un identifiant d’événement, l’UUID de l’entité, le type d’événement et les champs dont la destination a besoin. Si nécessaire, n8n peut récupérer d’autres données sur lesquelles il a des permissions.
La décision de publication de la rédaction peut servir de contrôle humain. Si les étapes suivantes comprennent l’envoi d’une campagne, une validation séparée peut tout de même être utile.
Évitez aussi les boucles. Si n8n réécrit une référence externe dans Drupal, cette mise à jour ne doit pas relancer sans cesse le même workflow. Des conditions peuvent vérifier si des champs pertinents ont changé et si la modification vient de l’intégration.
Pourquoi le modèle d’entités de Drupal rend-il les intégrations réutilisables?
Des champs définis vous évitent d’extraire les données métier du balisage des pages. Un workflow peut lire directement un champ de date, une référence produit ou une catégorie, au lieu de deviner où ils apparaissent dans le HTML affiché.
Deux notions de Drupal ont des rôles différents:
- Entity API est le modèle de programmation interne de Drupal pour les entités.
- JSON:API est une interface HTTP qui s’appuie sur l’Entity API et la Field API de Drupal.
n8n appelle l’interface HTTP, et non l’Entity API en PHP.
Une fois l’authentification, la correspondance des identifiants et la gestion des erreurs en place, un autre type de contenu bien modélisé peut réutiliser le même modèle d’intégration. Les opérations concrètes dépendent toujours de la prise en charge par l’entité, des permissions et d’éventuelles exigences liées aux traductions ou aux révisions.
Cette structure aide aussi dans le contexte des grands modèles de langage (LLM). Des champs cohérents peuvent alimenter les pages web, les flux, les API et les données structurées, et ainsi réduire les informations contradictoires d’un canal à l’autre. Les intégrations maintiennent les données sources à jour, mais ne garantissent pas que les assistants IA trouvent ou recommandent votre site.
Une étape d’IA reste optionnelle. n8n pourrait classer une demande ou préparer un brouillon, à condition que le traitement des données soit validé et qu’une relecture adaptée ait lieu. Transférer un envoi de formulaire validé vers un CRM ne demande pas de LLM.
Gardez la validation locale, les règles de contenu et la décision de publication dans Drupal. Utilisez n8n pour la transformation et la coordination entre les systèmes.
Quel composant prend en charge quelle tâche?
Vous n’avez pas besoin de tous les modules cités ci-dessous. Choisissez les composants adaptés à chaque connexion.
| Besoin | Côté Drupal | Côté n8n |
|---|---|---|
| Envoyer une demande Webform | Webform Remote Post Handler | Webhook et actions en aval |
| Envoyer les valeurs d’un formulaire personnalisé | Submit handler et service d’intégration ou file d’attente | Webhook |
| Réagir à un événement de contenu | Modèle ECA configuré ou hook personnalisé avec file d’attente | Webhook et routage |
| Lire ou écrire des contenus | JSON:API du cœur avec les droits d’accès adaptés | HTTP Request |
| Exécuter une action métier ciblée | Endpoint personnalisé avec validation et autorisation | HTTP Request |
| Coordonner les destinations externes | Payload d’événement définie | Branches et connecteurs ou API pris en charge |
Qu’est-ce qui rend les workflows fiables?
Une intégration utile rend les erreurs visibles et permet de relancer les livraisons échouées. Gardez ces points en tête dès la conception du workflow:
- Protéger les identifiants. Utilisez des comptes d’intégration séparés aux droits minimaux, des webhooks authentifiés et HTTPS. Stockez les secrets dans les fonctions Credentials de n8n ou dans un coffre de secrets validé, pas dans les payloads ni dans les définitions de workflows exportées. Planifiez leur rotation régulière.
- Limiter les données personnelles. N’envoyez que les champs nécessaires et fixez volontairement la durée de conservation des journaux d’exécution. Les exécutions échouées peuvent contenir des messages et des coordonnées.
- Sécuriser les nouvelles tentatives. Utilisez des identifiants stables, des contrôles de doublons et un nombre limité de nouvelles tentatives. Suivez chaque destination séparément pour qu’une notification répétée ne crée pas une nouvelle demande dans le CRM.
- Surveiller l’automatisation. Désignez une personne responsable, configurez des alertes pour les exécutions échouées ou bloquées et vérifiez que les workflows planifiés tournent réellement. Une réception de webhook réussie ne prouve pas que les étapes suivantes sont terminées.
- Respecter les limites d’édition. Limitez les mises à jour entrantes aux champs dont la source est responsable. Détectez les conflits lorsque la rédaction a modifié le même contenu et transmettez-les pour vérification.
Avec ces garde-fous, l’intégration fait réellement gagner du temps au lieu de créer du travail supplémentaire. L’article 5 problèmes que vous pouvez rencontrer lors de l’intégration de Drupal avec des logiciels tiers décrit les écueils typiques de cette étape.
Reliez votre site aux étapes de travail suivantes
Drupal et n8n peuvent relier trois transferts concrets: des données de formulaires qui atteignent les systèmes métier, des changements externes qui mettent à jour les contenus du site et des événements Drupal qui déclenchent des tâches en aval.
Les entités, les champs et les contrôles de publication définis dans Drupal forment la base des contenus. n8n relie cette base aux processus transverses, sans prendre la responsabilité des contenus.
Quel transfert coûte le plus de temps à votre équipe? Parlez avec Droptica des formulaires, des changements de contenus et des systèmes métier que vous souhaitez relier. Nous vous aidons à définir les accès API, les correspondances de champs et les points de contrôle dont vos workflows ont besoin. Pour en savoir plus sur notre travail, consultez la page de nos services de développement Drupal.