{
  "name": "Nouveau contact : fiche CRM, e-mail de bienvenue et alerte équipe",
  "nodes": [
    {
      "id": "0389f15a-a4fd-43ab-8f46-8ae103612410",
      "name": "Formulaire de contact",
      "type": "n8n-nodes-base.formTrigger",
      "typeVersion": 2.6,
      "position": [
        100,
        300
      ],
      "parameters": {
        "formTitle": "Contactez-nous",
        "formDescription": "Laissez-nous vos coordonnées, nous revenons vers vous rapidement.",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Nom",
              "fieldType": "text",
              "placeholder": "Julie Martin",
              "requiredField": true
            },
            {
              "fieldLabel": "E-mail",
              "fieldType": "email",
              "placeholder": "julie@atelier-martin.fr",
              "requiredField": true
            },
            {
              "fieldLabel": "Entreprise",
              "fieldType": "text",
              "placeholder": "Atelier Martin"
            },
            {
              "fieldLabel": "Message",
              "fieldType": "textarea",
              "placeholder": "Votre besoin en quelques mots"
            }
          ]
        },
        "responseMode": "onReceived",
        "options": {
          "appendAttribution": false,
          "buttonLabel": "Envoyer",
          "path": "contact",
          "respondWithOptions": {
            "values": {
              "respondWith": "text",
              "formSubmittedText": "Merci, votre message est bien reçu. Nous revenons vers vous sous 24 h ouvrées."
            }
          }
        }
      },
      "webhookId": "cf1f235b-78b5-4e49-9f64-a38e6c801b59"
    },
    {
      "id": "0e95fbe7-7dc1-46d9-9d92-7c4127e72431",
      "name": "Normaliser le contact",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.5,
      "position": [
        300,
        300
      ],
      "parameters": {
        "mode": "manual",
        "includeOtherFields": false,
        "assignments": {
          "assignments": [
            {
              "id": "nom",
              "name": "nom",
              "value": "={{ ($json.Nom ?? \"\").trim() }}",
              "type": "string"
            },
            {
              "id": "email",
              "name": "email",
              "value": "={{ ($json[\"E-mail\"] ?? \"\").trim().toLowerCase() }}",
              "type": "string"
            },
            {
              "id": "entreprise",
              "name": "entreprise",
              "value": "={{ ($json.Entreprise ?? \"\").trim() }}",
              "type": "string"
            },
            {
              "id": "message",
              "name": "message",
              "value": "={{ ($json.Message ?? \"\").trim() }}",
              "type": "string"
            },
            {
              "id": "prenom",
              "name": "prenom",
              "value": "={{ ($json.Nom ?? \"\").trim().split(\" \")[0] }}",
              "type": "string"
            },
            {
              "id": "date",
              "name": "date",
              "value": "={{ $now.toFormat(\"yyyy-MM-dd HH:mm\") }}",
              "type": "string"
            },
            {
              "id": "source",
              "name": "source",
              "value": "Formulaire site",
              "type": "string"
            }
          ]
        }
      }
    },
    {
      "id": "d99deb6f-5f7c-4adf-b072-b2b05138668c",
      "name": "Enregistrer dans le CRM",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        500,
        300
      ],
      "parameters": {
        "resource": "sheet",
        "operation": "append",
        "authentication": "oAuth2",
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultName": "Tableur CRM (à choisir)"
        },
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Contacts"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Date": "={{ $json.date }}",
            "Nom": "={{ $json.nom }}",
            "E-mail": "={{ $json.email }}",
            "Entreprise": "={{ $json.entreprise }}",
            "Message": "={{ $json.message }}",
            "Source": "={{ $json.source }}"
          },
          "schema": [
            {
              "id": "Date",
              "displayName": "Date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Nom",
              "displayName": "Nom",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "E-mail",
              "displayName": "E-mail",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Entreprise",
              "displayName": "Entreprise",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Message",
              "displayName": "Message",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Source",
              "displayName": "Source",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ]
        },
        "options": {}
      },
      "credentials": {},
      "onError": "continueRegularOutput"
    },
    {
      "id": "5f7d136e-8402-4dc3-9441-296c5bc8e448",
      "name": "Envoyer l'e-mail de bienvenue",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [
        500,
        450
      ],
      "parameters": {
        "operation": "send",
        "fromEmail": "À REMPLIR : Adresse expéditeur, par exemple Atelier Martin <contact@atelier-martin.fr>",
        "toEmail": "={{ $json.email }}",
        "subject": "Merci pour votre message",
        "emailFormat": "text",
        "text": "=Bonjour {{ $json.prenom }},\n\nMerci pour votre message, il est bien arrivé. Nous le lisons avec attention et revenons vers vous sous 24 h ouvrées.\n\nPour rappel, voici ce que vous nous avez écrit :\n{{ $json.message }}\n\nBelle journée,\nL'équipe",
        "options": {
          "appendAttribution": false
        }
      },
      "credentials": {},
      "onError": "continueRegularOutput"
    },
    {
      "id": "0d1a4102-55c2-4ddd-8d60-604a20996ac6",
      "name": "Prévenir l'équipe sur Slack",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.6,
      "position": [
        500,
        600
      ],
      "parameters": {
        "resource": "message",
        "operation": "post",
        "authentication": "accessToken",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultName": "Canal équipe (à choisir)"
        },
        "messageType": "text",
        "text": "=:wave: Nouveau contact via le formulaire\n*{{ $json.nom }}* ({{ $json.entreprise || \"entreprise non précisée\" }})\n{{ $json.email }}\n> {{ $json.message }}",
        "otherOptions": {
          "includeLinkToWorkflow": false
        }
      },
      "credentials": {},
      "onError": "continueRegularOutput"
    },
    {
      "id": "0c934c5a-d296-4c18-8d63-4ef7c60114e4",
      "name": "À configurer",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        64,
        208
      ],
      "parameters": {
        "content": "## À configurer\n- **Google Sheets** : connectez votre compte puis choisissez votre tableur. L'onglet doit s'appeler « Contacts » avec les colonnes Date, Nom, E-mail, Entreprise, Message, Source.\n- **SMTP** : renseignez votre serveur d'envoi et l'adresse expéditeur.\n- **Slack** : connectez votre espace puis choisissez le canal de l'équipe.\n- Activez le workflow et partagez l'URL de production du formulaire.",
        "color": 4,
        "width": 368,
        "height": 224
      }
    },
    {
      "id": "0354055f-5a64-4006-b2c3-ffad74f3a04e",
      "name": "L'idée",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        464,
        208
      ],
      "parameters": {
        "content": "## L'idée\nChaque demande reçue par le formulaire est rangée dans le CRM, le contact reçoit un e-mail de bienvenue et l'équipe est prévenue sur Slack. Si une action échoue, les autres continuent.",
        "color": 7,
        "width": 160,
        "height": 528
      }
    }
  ],
  "connections": {
    "Formulaire de contact": {
      "main": [
        [
          {
            "node": "Normaliser le contact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normaliser le contact": {
      "main": [
        [
          {
            "node": "Enregistrer dans le CRM",
            "type": "main",
            "index": 0
          },
          {
            "node": "Envoyer l'e-mail de bienvenue",
            "type": "main",
            "index": 0
          },
          {
            "node": "Prévenir l'équipe sur Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}