Workflow n8n

Automatisation Typeform avec n8n : gestion des contacts Airtable

Ce workflow n8n a pour objectif d'automatiser la gestion des contacts collectés via Typeform en les intégrant dans Airtable et en les notifiant sur Slack. Dans un contexte où la gestion des leads est cruciale pour les entreprises, ce processus permet de gagner un temps précieux tout en réduisant les erreurs manuelles. Par exemple, une entreprise qui utilise Typeform pour recueillir des informations sur ses clients peut facilement transférer ces données dans sa base de contacts Airtable, tout en étant informée en temps réel via Slack des nouvelles entrées.

  • Étape 1 : Le workflow débute avec un déclencheur Typeform qui active le processus dès qu'un nouveau formulaire est soumis.
  • Étape 2 : Les données recueillies sont ensuite envoyées à Airtable pour vérifier si le contact existe déjà.
  • Étape 3 : Si le contact est absent, le workflow crée un nouvel enregistrement dans Airtable.
  • Étape 4 : Si le contact existe, il est mis à jour avec les nouvelles informations. Parallèlement, des notifications sont envoyées sur Slack pour tenir l'équipe informée des mises à jour. Les bénéfices business de ce workflow sont significatifs : il permet non seulement d'automatiser la collecte et la mise à jour des contacts, mais aussi de garantir que l'équipe reste informée des changements en temps réel. Cela réduit le risque d'erreurs et améliore l'efficacité opérationnelle, ce qui est essentiel pour toute agence d'automatisation souhaitant optimiser ses processus.
Tags clés :automatisationTypeformAirtableSlackworkflow
Catégorie: Webhook · Tags: automatisation, Typeform, Airtable, Slack, workflow0

Workflow n8n Typeform, Airtable, Slack : vue d'ensemble

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

Workflow n8n Typeform, Airtable, Slack : détail des nœuds

  • Typeform Trigger

    Ce noeud déclenche le workflow lorsqu'un nouveau formulaire est soumis sur Typeform.

  • Slack1

    Ce noeud envoie un message sur Slack avec le texte et les options spécifiés.

  • Airtable - Contact List

    Ce noeud récupère la liste des contacts depuis une table Airtable.

  • Airtable - Update Contacts1

    Ce noeud met à jour les contacts dans Airtable en fonction des champs spécifiés.

  • Slack

    Ce noeud envoie un message sur Slack avec le texte et les options spécifiés.

  • Set - Contacts to update

    Ce noeud définit les valeurs des contacts à mettre à jour dans le workflow.

  • Dropcontact

    Ce noeud utilise Dropcontact pour enrichir les données d'un contact à partir de son adresse email.

  • Contact ID empty ?

    Ce noeud vérifie si l'identifiant du contact est vide pour décider du chemin à suivre.

  • Airtable - Create Contacts

    Ce noeud crée de nouveaux contacts dans Airtable selon les options spécifiées.

  • Set - Contacts to create

    Ce noeud définit les valeurs des contacts à créer dans le workflow.

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "nodes": [
    {
      "name": "Typeform Trigger",
      "type": "n8n-nodes-base.typeformTrigger",
      "position": [
        140,
        200
      ],
      "webhookId": "",
      "parameters": {
        "formId": ""
      },
      "credentials": {
        "typeformApi": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Slack1",
      "type": "n8n-nodes-base.slack",
      "position": [
        1360,
        300
      ],
      "parameters": {
        "text": "🥳 An existing lead has just subscribed!",
        "channel": "",
        "attachments": [],
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Airtable - Contact List",
      "type": "n8n-nodes-base.airtable",
      "position": [
        540,
        200
      ],
      "parameters": {
        "table": "Contacts",
        "operation": "list",
        "returnAll": false,
        "application": "",
        "additionalOptions": {
          "fields": [],
          "filterByFormula": "=fullName=\"{{$json[\"full_name\"]}}\""
        }
      },
      "credentials": {
        "airtableApi": {
          "id": "",
          "name": ""
        }
      },
      "executeOnce": false,
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "name": "Airtable - Update Contacts1",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1150,
        300
      ],
      "parameters": {
        "id": "={{$node[\"Airtable - Contact List\"].json[\"id\"]}}",
        "table": "Contacts",
        "fields": [
          "firstName",
          "lastName",
          "linkedInProfile",
          "Email",
          "Phone",
          "website",
          "LinkedIn Company",
          "Industry",
          "Address"
        ],
        "options": {
          "typecast": true
        },
        "operation": "update",
        "application": "",
        "updateAllFields": false
      },
      "credentials": {
        "airtableApi": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        1360,
        100
      ],
      "parameters": {
        "text": "=🎉 A new lead has just subscribed!",
        "channel": "",
        "attachments": [],
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Set - Contacts to update",
      "type": "n8n-nodes-base.set",
      "position": [
        940,
        100
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "firstName",
              "value": "={{$node[\"Dropcontact\"].json[\"first_name\"]}}"
            },
            {
              "name": "lastName",
              "value": "={{$node[\"Dropcontact\"].json[\"last_name\"]}}"
            },
            {
              "name": "linkedInProfile",
              "value": "={{$node[\"Dropcontact\"].json[\"linkedin\"]}}"
            },
            {
              "name": "Email",
              "value": "={{$node[\"Dropcontact\"].json[\"email\"][0][\"email\"]}}"
            },
            {
              "name": "Phone",
              "value": "={{$node[\"Dropcontact\"].json[\"phone\"]}}"
            },
            {
              "name": "website",
              "value": "={{$node[\"Dropcontact\"].json[\"website\"]}}"
            },
            {
              "name": "LinkedIn Company",
              "value": "={{$node[\"Dropcontact\"].json[\"company_linkedin\"]}}"
            },
            {
              "name": "Industry",
              "value": "={{$node[\"Dropcontact\"].json[\"naf5_des\"]}}"
            },
            {
              "name": "Address",
              "value": "={{$node[\"Dropcontact\"].json[\"siret_address\"]}}, {{$node[\"Dropcontact\"].json[\"siret_zip\"]}} {{$node[\"Dropcontact\"].json[\"siret_city\"]}}"
            }
          ]
        },
        "options": {
          "dotNotation": true
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Dropcontact",
      "type": "n8n-nodes-base.dropcontact",
      "position": [
        340,
        200
      ],
      "parameters": {
        "email": "=",
        "options": {
          "siren": true,
          "language": "fr"
        },
        "additionalFields": {
          "company": "={{$json[\"and your company ?\"]}}",
          "website": "={{$node[\"Typeform Trigger\"].json[\"tell me more... What's your website ?\"]}}",
          "last_name": "={{$json[\"Hi [field:1c6436830dfffbf1], what's your last name ?\"]}}",
          "first_name": "={{$json[\"First, what's your name?\"]}}"
        }
      },
      "credentials": {
        "dropcontactApi": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Contact ID empty ?",
      "type": "n8n-nodes-base.if",
      "position": [
        730,
        200
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$json[\"id\"]}}",
              "operation": "isEmpty"
            }
          ]
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "name": "Airtable - Create Contacts",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1150,
        100
      ],
      "parameters": {
        "table": "Contacts",
        "options": {
          "typecast": true
        },
        "operation": "append",
        "application": ""
      },
      "credentials": {
        "airtableApi": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Set - Contacts to create",
      "type": "n8n-nodes-base.set",
      "position": [
        940,
        300
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "firstName",
              "value": "={{$node[\"Dropcontact\"].json[\"first_name\"]}}"
            },
            {
              "name": "lastName",
              "value": "={{$node[\"Dropcontact\"].json[\"last_name\"]}}"
            },
            {
              "name": "linkedInProfile",
              "value": "={{$node[\"Dropcontact\"].json[\"linkedin\"]}}"
            },
            {
              "name": "Email",
              "value": "={{$node[\"Dropcontact\"].json[\"email\"][0][\"email\"]}}"
            },
            {
              "name": "Phone",
              "value": "={{$node[\"Dropcontact\"].json[\"phone\"]}}"
            },
            {
              "name": "website",
              "value": "={{$node[\"Dropcontact\"].json[\"website\"]}}"
            },
            {
              "name": "LinkedIn Company",
              "value": "={{$node[\"Dropcontact\"].json[\"company_linkedin\"]}}"
            },
            {
              "name": "Industry",
              "value": "={{$node[\"Dropcontact\"].json[\"naf5_des\"]}}"
            },
            {
              "name": "Address",
              "value": "={{$node[\"Dropcontact\"].json[\"siret_address\"]}}, {{$node[\"Dropcontact\"].json[\"siret_zip\"]}} {{$node[\"Dropcontact\"].json[\"siret_city\"]}}"
            }
          ]
        },
        "options": {
          "dotNotation": true
        }
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Dropcontact": {
      "main": [
        [
          {
            "node": "Airtable - Contact List",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Typeform Trigger": {
      "main": [
        [
          {
            "node": "Dropcontact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Contact ID empty ?": {
      "main": [
        [
          {
            "node": "Set - Contacts to update",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set - Contacts to create",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable - Contact List": {
      "main": [
        [
          {
            "node": "Contact ID empty ?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set - Contacts to create": {
      "main": [
        [
          {
            "node": "Airtable - Update Contacts1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set - Contacts to update": {
      "main": [
        [
          {
            "node": "Airtable - Create Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable - Create Contacts": {
      "main": [
        [
          {
            "node": "Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable - Update Contacts1": {
      "main": [
        [
          {
            "node": "Slack1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n Typeform, Airtable, Slack : pour qui est ce workflow ?

Ce workflow s'adresse aux entreprises qui utilisent Typeform pour collecter des données clients et qui souhaitent automatiser leur gestion de contacts dans Airtable. Il est idéal pour les équipes marketing et commerciales, ainsi que pour les startups et PME souhaitant optimiser leur processus de gestion des leads sans nécessiter de compétences techniques avancées.

Workflow n8n Typeform, Airtable, Slack : problème résolu

Ce workflow résout le problème de la gestion manuelle des contacts, souvent source d'erreurs et de pertes de temps. En automatisant le transfert des données de Typeform vers Airtable, il élimine les tâches répétitives et réduit le risque de doublons. Les utilisateurs bénéficient ainsi d'une base de données toujours à jour, ce qui améliore la réactivité de l'équipe face aux nouvelles opportunités.

Workflow n8n Typeform, Airtable, Slack : étapes du workflow

Étape 1 : Le déclencheur Typeform active le workflow lors de la soumission d'un formulaire.

  • Étape 1 : Les données sont envoyées à Airtable pour vérifier l'existence du contact.
  • Étape 2 : Si le contact n'existe pas, un nouvel enregistrement est créé dans Airtable.
  • Étape 3 : Si le contact est déjà présent, ses informations sont mises à jour.
  • Étape 4 : Les notifications sont envoyées sur Slack pour informer l'équipe des nouvelles entrées ou mises à jour.

Workflow n8n Typeform, Airtable, Slack : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'ID du formulaire Typeform dans le déclencheur, ainsi que les paramètres de connexion à Airtable pour spécifier la table et les champs à utiliser. Il est également possible d'ajuster les messages envoyés sur Slack pour qu'ils correspondent à votre ton de communication. Pensez à vérifier les permissions d'accès aux données dans Airtable et à configurer les options de sécurité pour protéger les informations sensibles.