Workflow n8n

Automatisation HubSpot avec n8n : gestion des emails entrants

Ce workflow n8n a pour objectif d'automatiser la gestion des emails entrants en intégrant des outils comme HubSpot et OpenAI. Dans un contexte où la réactivité et la personnalisation des réponses sont essentielles, ce processus permet aux équipes commerciales et marketing de gagner un temps précieux tout en améliorant l'engagement client. Par exemple, lorsqu'un email est reçu, le workflow déclenche une série d'actions pour analyser le contenu et déterminer si le contact existe déjà dans la base de données HubSpot.

  • Étape 1 : le déclencheur 'When an email is received' capte les nouveaux messages.
  • Étape 2 : le workflow utilise le noeud 'Search for the contact via email' pour vérifier l'existence du contact dans HubSpot.
  • Étape 3 : si le contact existe, le workflow passe à l'étape suivante ; sinon, il crée un nouveau contact avec le noeud 'Creates contact'.
  • Étape 4 : le contenu de l'email est analysé par le modèle de langage d'OpenAI via le noeud 'OpenAI Chat Model', permettant d'extraire des informations pertinentes. Enfin, le résultat est formaté et renvoyé à l'utilisateur. Grâce à cette automatisation n8n, les entreprises peuvent réduire les délais de réponse, améliorer la satisfaction client et optimiser leur processus de gestion des emails.
Tags clés :automatisationHubSpotemailn8nOpenAI
Catégorie: Webhook · Tags: automatisation, HubSpot, email, n8n, OpenAI0

Workflow n8n HubSpot, email, OpenAI : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n HubSpot, email, OpenAI : détail des nœuds

  • Creates an email engagement

    Ce noeud crée un engagement par email dans HubSpot.

  • OpenAI Chat Model

    Ce noeud utilise le modèle de chat OpenAI pour générer des réponses.

  • Search for the contact via email

    Ce noeud recherche un contact dans HubSpot en utilisant son adresse email.

  • Parse the mail with AI

    Ce noeud analyse le contenu d'un email en utilisant l'intelligence artificielle.

  • When an email is received

    Ce noeud déclenche le workflow lorsqu'un email est reçu via IMAP.

  • Sticky Note

    Ce noeud crée une note autocollante avec des paramètres de couleur et de contenu.

  • Set the output Json

    Ce noeud définit la sortie au format JSON structuré.

  • Sticky Note1

    Ce noeud crée une note autocollante supplémentaire avec des paramètres de couleur et de contenu.

  • Sticky Note2

    Ce noeud crée une autre note autocollante avec des paramètres de couleur et de contenu.

  • contact exists?

    Ce noeud vérifie si un contact existe déjà dans le système.

  • Edit Fields

    Ce noeud modifie les champs d'un objet en fonction des assignations spécifiées.

  • Creates contact

    Ce noeud crée un nouveau contact dans HubSpot avec les informations fournies.

  • Sticky Note7

    Ce noeud crée une note autocollante supplémentaire avec des paramètres de taille et de contenu.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "nodes": [
    {
      "id": "9f2dc93f-bae5-4419-8411-d2fff4b31f5e",
      "name": "Creates an email engagement",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        916,
        -260
      ],
      "parameters": {
        "type": "email",
        "metadata": {
          "html": "={{ $('When an email is received').item.json.textHtml || $('When an email is received').item.json.textPlain}}",
          "subject": "={{ $('When an email is received').item.json.subject }}",
          "toEmail": [
            "={{ $('When an email is received').item.json.to }}"
          ],
          "fromEmail": "={{ $('When an email is received').item.json.from }}"
        },
        "resource": "engagement",
        "authentication": "oAuth2",
        "additionalFields": {
          "associations": {
            "contactIds": "={{ $json.vid }}"
          }
        }
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "id": "JxzF93M0SJ00jDD9",
          "name": "HubSpot account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "0a56ec28-afc6-40a9-bf42-4d8742e48eb4",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -140,
        -40
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "1IOLtYX7aTspCAN8",
          "name": "OpenAI Pollup"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8e53aeb6-7d84-4739-b482-b8cd844b89ac",
      "name": "Search for the contact via email",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        256,
        -260
      ],
      "parameters": {
        "operation": "search",
        "authentication": "oAuth2",
        "filterGroupsUi": {
          "filterGroupsValues": [
            {
              "filtersUi": {
                "filterValues": [
                  {
                    "value": "={{ $json.output.contact_info.email }}",
                    "propertyName": "email|string"
                  }
                ]
              }
            }
          ]
        },
        "additionalFields": {}
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "id": "JxzF93M0SJ00jDD9",
          "name": "HubSpot account"
        }
      },
      "typeVersion": 2.1,
      "alwaysOutputData": true
    },
    {
      "id": "19e54445-d0cb-40f2-a11f-5e4cb22ad7ec",
      "name": "Parse the mail with AI",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -120,
        -260
      ],
      "parameters": {
        "text": "=Get all important info from this email like first name, last name, email, phone number, name of the company, country, Postal code, city, etc. Return it as a json.  The email content:  {{ $json.textHtml || $json.textPlain}} \nFrom: {{ $json.from }} \nSubject: {{ $json.subject }}\nDate sent:  {{ $json.date }}",
        "messages": {
          "messageValues": [
            {
              "message": "=You are a professional Email parser"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "8b257214-0001-46aa-84df-cad844e3130b",
      "name": "When an email is received",
      "type": "n8n-nodes-base.emailReadImap",
      "position": [
        -340,
        -260
      ],
      "parameters": {
        "options": {
          "forceReconnect": 3
        }
      },
      "credentials": {
        "imap": {
          "id": "g7C5Z9V9vQUbsLIw",
          "name": "IMAP account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "32820b69-3918-4951-9ddc-45bdbcb60aca",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -440,
        -400
      ],
      "parameters": {
        "color": 4,
        "width": 280,
        "height": 300,
        "content": "## Set receiving email account\n- Ddefaults to an IMAP account node, but you can put a gmail account or any  email trigger"
      },
      "typeVersion": 1
    },
    {
      "id": "adbed044-08ae-4744-9b0c-09a225860267",
      "name": "Set the output Json",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        80,
        -40
      ],
      "parameters": {
        "jsonSchemaExample": "{\"contact_info\": \n{\n\"first name\": \n\"Thomas\",\n\"last name\": \"Vie\",\n\"position\": \n\"CTO\",\n\"company\": \n\"Pollup Data Services\",\n\"email\": \n\"Thomas@pollup.net\",\n\"phone\": \n\"+34 673626552\",\n\"website\": \n\"https://pollup.net\",\n\"address\": \n{\n\"street\": \n\"Oppelner Str. 32\",\n\"postal_code\": \n\"10997\",\n\"city\": \n\"Berlin\",\n\"country\": \n\"Germany\"\n}}}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "e58575ee-6ac8-4de1-b4db-8525146efd74",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -140,
        -400
      ],
      "parameters": {
        "color": 4,
        "width": 320,
        "height": 300,
        "content": "## Upgrade the prompt!\nThis is a very simple prompt but oit does the job. Improve it and send it to me!"
      },
      "typeVersion": 1
    },
    {
      "id": "23465910-0a89-45f7-9bbf-fb17abadc5de",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        200,
        -400
      ],
      "parameters": {
        "color": 4,
        "width": 840,
        "height": 400,
        "content": "## Hubspot integration\n- Search for the contact in hubspot\n- If it is present creates an egagement\n- It it is not, creates it and adds an engagement"
      },
      "typeVersion": 1
    },
    {
      "id": "f5573c22-85f3-4eda-ba5a-172567827991",
      "name": "contact exists?",
      "type": "n8n-nodes-base.if",
      "position": [
        476,
        -260
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "554c2aa3-dbdb-4955-8510-6b09bc762f63",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.id }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "914f2e6b-7a5f-4c9c-bd3b-4bfb2693728d",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        696,
        -360
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "75c8fc2d-dc8e-4b6c-a853-1dbd8d72f779",
              "name": "vid",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "4c8fa2d1-e3b4-4323-bdc8-3a4e2bbc706d",
      "name": "Creates contact",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        696,
        -160
      ],
      "parameters": {
        "email": "={{ $('Parse the mail with AI').item.json.output.contact_info.email }}",
        "options": {},
        "authentication": "oAuth2",
        "additionalFields": {
          "city": "={{ $('Parse the mail with AI').item.json.output.contact_info.address.city }}",
          "country": "={{ $('Parse the mail with AI').item.json.output.contact_info.address.country }}",
          "jobTitle": "={{ $('Parse the mail with AI').item.json.output.contact_info.position }}",
          "lastName": "={{ $('Parse the mail with AI').item.json.output.contact_info['last name'] }}",
          "postalCode": "={{ $('Parse the mail with AI').item.json.output.contact_info.address.postal_code }}",
          "websiteUrl": "={{ $('Parse the mail with AI').item.json.output.contact_info.website }}",
          "companyName": "={{ $('Parse the mail with AI').item.json.output.contact_info.company }}",
          "phoneNumber": "={{ $('Parse the mail with AI').item.json.output.contact_info.phone }}",
          "streetAddress": "={{ $('Parse the mail with AI').item.json.output.contact_info.address.street }}"
        }
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "id": "JxzF93M0SJ00jDD9",
          "name": "HubSpot account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "5f94ba18-49db-4bc0-9f0a-16a9d05ca6b0",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -440,
        -620
      ],
      "parameters": {
        "width": 460,
        "height": 200,
        "content": "## Contact me\n- If you need any modification to this workflow\n- if you need some help with this workflow\n- Or if you need any workflow in n8n, Make, or Langchain / Langgraph\n\nWrite to me: [thomas@pollup.net](mailto:thomas@pollup.net)"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Creates an email engagement",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Creates contact": {
      "main": [
        [
          {
            "node": "Creates an email engagement",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "contact exists?": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Creates contact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Parse the mail with AI",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Set the output Json": {
      "ai_outputParser": [
        [
          {
            "node": "Parse the mail with AI",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Parse the mail with AI": {
      "main": [
        [
          {
            "node": "Search for the contact via email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When an email is received": {
      "main": [
        [
          {
            "node": "Parse the mail with AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search for the contact via email": {
      "main": [
        [
          {
            "node": "contact exists?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n HubSpot, email, OpenAI : pour qui est ce workflow ?

Ce workflow s'adresse aux équipes marketing et commerciales des PME et grandes entreprises qui utilisent HubSpot pour la gestion de leurs contacts et souhaitent automatiser le traitement des emails entrants. Un niveau technique intermédiaire est recommandé pour la mise en place et la personnalisation du workflow.

Workflow n8n HubSpot, email, OpenAI : problème résolu

Ce workflow résout le problème de la gestion manuelle des emails entrants, qui peut être chronophage et source d'erreurs. En automatisant la recherche de contacts et l'analyse des emails, les utilisateurs évitent les pertes de temps liées à la saisie manuelle et à la recherche d'informations. Le résultat est une réponse plus rapide et personnalisée aux clients, ce qui améliore l'engagement et la satisfaction.

Workflow n8n HubSpot, email, OpenAI : étapes du workflow

Étape 1 : le workflow commence par le déclencheur 'When an email is received', qui capte les nouveaux messages entrants.

  • Étape 1 : il utilise le noeud 'Search for the contact via email' pour vérifier si le contact existe déjà dans HubSpot.
  • Étape 2 : si le contact est trouvé, le flux passe à l'étape suivante ; sinon, il crée un nouveau contact avec le noeud 'Creates contact'.
  • Étape 3 : le contenu de l'email est ensuite analysé par le noeud 'OpenAI Chat Model', qui utilise l'intelligence artificielle pour extraire des informations pertinentes.
  • Étape 4 : le résultat est formaté et renvoyé à l'utilisateur via le noeud 'Set the output Json'.

Workflow n8n HubSpot, email, OpenAI : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier les paramètres du noeud 'When an email is received' pour spécifier les comptes email à surveiller. Dans le noeud 'Search for the contact via email', ajustez les critères de recherche selon vos besoins. Le noeud 'OpenAI Chat Model' peut être configuré pour utiliser différents modèles ou options d'analyse. Assurez-vous également de vérifier les paramètres d'authentification pour HubSpot afin de garantir un accès correct aux données. Enfin, vous pouvez ajouter des noeuds supplémentaires pour intégrer d'autres outils ou services selon vos besoins.