Workflow d'approbation des rendez-vous d'installation avec Slack et Gmail

Intermédiaire

Ceci est unTicket Management, Multimodal AIworkflow d'automatisation du domainecontenant 13 nœuds.Utilise principalement des nœuds comme If, Set, Gmail, Slack, FormTrigger. Automatiser l'approbation des rendez-vous d'installation avec Slack et les formulaires Gmail

Prérequis
  • Compte Google et informations d'identification Gmail API
  • Token Bot Slack ou URL Webhook
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "F3ZBYce4AMuybZcF",
  "meta": {
    "instanceId": "efe08e2da7cae43f565dfacaafdb0e67025886141ccd3ddbe001880f7b5ecf5b"
  },
  "name": "Installation Booking Approval Workflow with Slack and Gmail",
  "tags": [],
  "nodes": [
    {
      "id": "57b8a226-402b-42cf-b6bb-090195a862d9",
      "name": "Déclencheur Formulaire : Réservation d'installation",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -16,
        496
      ],
      "webhookId": "711021d0-5405-4e16-a638-16e32c093f39",
      "parameters": {
        "options": {},
        "formTitle": "Installation Schedule Booking Form",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Full Name",
              "requiredField": true
            },
            {
              "fieldType": "email",
              "fieldLabel": "Email Address",
              "requiredField": true
            },
            {
              "fieldLabel": "Phone Number",
              "requiredField": true
            },
            {
              "fieldType": "=date",
              "fieldLabel": "Booking Date",
              "fieldOptions": {
                "values": [
                  {}
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Preferred Time (PST)",
              "fieldOptions": {
                "values": [
                  {
                    "option": "09:00"
                  },
                  {
                    "option": "11:00"
                  },
                  {
                    "option": "14:00"
                  },
                  {
                    "option": "16:00"
                  }
                ]
              },
              "requiredField": true
            }
          ]
        },
        "formDescription": "Installation Schedule Booking Form"
      },
      "typeVersion": 2.2
    },
    {
      "id": "9f165f71-d038-49d0-8277-41c42a8ab0af",
      "name": "Définir les champs : Variables de configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        240,
        496
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1c5bdf30-d39c-42ac-a780-dc5c35a6aa17",
              "name": "CUSTOMER_NAME",
              "type": "string",
              "value": "={{ $('Form Trigger: Installation Booking').item.json['Full Name'] }}"
            },
            {
              "id": "3b70d00a-c884-4721-b9cb-018ed47e4818",
              "name": "CUSTOMER_EMAIL",
              "type": "string",
              "value": "={{ $('Form Trigger: Installation Booking').item.json['Email Address'] }}"
            },
            {
              "id": "4c70d00a-c884-4721-b9cb-018ed47e4819",
              "name": "CUSTOMER_PHONE",
              "type": "string",
              "value": "={{ $('Form Trigger: Installation Booking').item.json['Phone Number'] }}"
            },
            {
              "id": "5c70d00a-c884-4721-b9cb-018ed47e4820",
              "name": "BOOKING_DATE",
              "type": "string",
              "value": "={{ $('Form Trigger: Installation Booking').item.json['Booking Date'] }}"
            },
            {
              "id": "6c70d00a-c884-4721-b9cb-018ed47e4821",
              "name": "BOOKING_TIME",
              "type": "string",
              "value": "={{ $('Form Trigger: Installation Booking').item.json['Preferred Time (PST)'] }}"
            },
            {
              "id": "7c70d00a-c884-4721-b9cb-018ed47e4822",
              "name": "SLACK_CHANNEL_ID",
              "type": "string",
              "value": "#installations"
            },
            {
              "id": "8c70d00a-c884-4721-b9cb-018ed47e4823",
              "name": "COMPANY_NAME",
              "type": "string",
              "value": "Your Company Name"
            },
            {
              "id": "9c70d00a-c884-4721-b9cb-018ed47e4824",
              "name": "CONTACT_PERSON",
              "type": "string",
              "value": "Your Name"
            },
            {
              "id": "10c70d00a-c884-4721-b9cb-018ed47e4825",
              "name": "RESCHEDULE_LINK",
              "type": "string",
              "value": "https://your-booking-form-url.com"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9242d614-bc41-4dd9-9b68-ff2938d128d4",
      "name": "Slack : Demande d'approbation",
      "type": "n8n-nodes-base.slack",
      "position": [
        496,
        496
      ],
      "webhookId": "99741701-02dc-46e6-b578-d492b7de6983",
      "parameters": {
        "select": "channel",
        "message": "=🔧 **New Installation Request**\n\n👤 **Customer:** {{ $json.CUSTOMER_NAME }}\n📧 **Email:** {{ $json.CUSTOMER_EMAIL }}\n📞 **Phone:** {{ $json.CUSTOMER_PHONE }}\n\n📅 **Requested Date/Time:** {{ $json.BOOKING_DATE }} at {{ $json.BOOKING_TIME }} PST\n\n❓ **Do we have an available installer for this slot?**",
        "options": {},
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double",
            "disapproveLabel": "No installer available"
          }
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "7331465f-d0d0-47a2-8451-5aab04607305",
      "name": "Si : Vérifier le statut d'approbation",
      "type": "n8n-nodes-base.if",
      "position": [
        736,
        496
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d0117e5a-8b9a-407a-8412-1c7decbdd759",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.data.approved }}",
              "rightValue": "Approve"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a751b5f3-ed2e-4a93-b061-539688520478",
      "name": "Gmail : Envoyer un e-mail de confirmation",
      "type": "n8n-nodes-base.gmail",
      "position": [
        992,
        384
      ],
      "webhookId": "3052ddc4-ba25-47ca-bb42-c7a55652901a",
      "parameters": {
        "sendTo": "={{ $('Set Fields: Configuration Variables').item.json.CUSTOMER_EMAIL }}",
        "message": "=Hi {{ $('Set Fields: Configuration Variables').item.json.CUSTOMER_NAME }},\n\nGreat news! We've confirmed your installation appointment.\n\n📅 **Date:** {{ $('Set Fields: Configuration Variables').item.json.BOOKING_DATE }}\n⏰ **Time:** {{ $('Set Fields: Configuration Variables').item.json.BOOKING_TIME }} PST\n\nOur installer will contact you shortly to confirm final details and provide any preparation instructions.\n\nIf you need to make any changes, please contact us as soon as possible.\n\nBest regards,\n{{ $('Set Fields: Configuration Variables').item.json.CONTACT_PERSON }}\n{{ $('Set Fields: Configuration Variables').item.json.COMPANY_NAME }}",
        "options": {},
        "subject": "=✅ Installation Confirmed - {{ $('Set Fields: Configuration Variables').item.json.BOOKING_DATE }}",
        "emailType": "text"
      },
      "typeVersion": 2.1
    },
    {
      "id": "852c2a56-3558-44ac-9af9-1cd28bedb52b",
      "name": "Gmail : Envoyer un e-mail de replanification",
      "type": "n8n-nodes-base.gmail",
      "position": [
        992,
        592
      ],
      "webhookId": "13839f70-e63f-4ec3-b526-00aa455fd899",
      "parameters": {
        "sendTo": "={{ $('Set Fields: Configuration Variables').item.json.CUSTOMER_EMAIL }}",
        "message": "=Hi {{ $('Set Fields: Configuration Variables').item.json.CUSTOMER_NAME }},\n\nThank you for your interest in our installation services.\n\nUnfortunately, we don't have an installer available for your requested time slot:\n📅 **Date:** {{ $('Set Fields: Configuration Variables').item.json.BOOKING_DATE }}\n⏰ **Time:** {{ $('Set Fields: Configuration Variables').item.json.BOOKING_TIME }} PST\n\nPlease reschedule your appointment using this link:\n🔗 {{ $('Set Fields: Configuration Variables').item.json.RESCHEDULE_LINK }}\n\nWe apologize for any inconvenience and look forward to serving you at a different time.\n\nBest regards,\n{{ $('Set Fields: Configuration Variables').item.json.CONTACT_PERSON }}\n{{ $('Set Fields: Configuration Variables').item.json.COMPANY_NAME }}",
        "options": {},
        "subject": "=⏰ Please Reschedule Your Installation",
        "emailType": "text"
      },
      "typeVersion": 2.1
    },
    {
      "id": "665cac83-98f4-4789-ab7a-11754f9bc0fa",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        -208
      ],
      "parameters": {
        "width": 736,
        "height": 672,
        "content": "## 🔧 Installation Booking Approval Workflow\n\n**What this workflow does:**\nAutomates the approval process for installation bookings by collecting form submissions, requesting team approval via Slack, and sending automated email responses.\n\n**Who's it for:**\nService businesses that need to:\n- Collect installation booking requests\n- Get team approval before confirming appointments\n- Send automated email confirmations or reschedule requests\n\n**How it works:**\n1. Customer fills out installation booking form\n2. Team gets notified via Slack with approval buttons\n3. Based on approval/rejection, customer receives confirmation or reschedule email\n\n**Setup Requirements:**\n- Slack workspace with channel for notifications\n- Gmail account for sending emails\n- Form trigger URL to embed on your website\n\n**Configuration:**\nUpdate the variables in the \"Set Fields\" node:\n- SLACK_CHANNEL_ID: Your Slack channel\n- COMPANY_NAME: Your business name\n- CONTACT_PERSON: Your name\n- RESCHEDULE_LINK: Link to your booking form\n\n**Security Note:**\nNo API keys are hardcoded - all credentials are managed through n8n's secure connection system."
      },
      "typeVersion": 1
    },
    {
      "id": "0abbb78d-aaac-41ca-aab5-ca1653b43b2c",
      "name": "Note adhésive 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        672
      ],
      "parameters": {
        "width": 200,
        "height": 140,
        "content": "**Step 1**\nCustomer submits installation booking form with contact details and preferred date/time"
      },
      "typeVersion": 1
    },
    {
      "id": "faf5a165-9a69-42c9-be57-abb67e209269",
      "name": "Note adhésive 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        672
      ],
      "parameters": {
        "width": 200,
        "height": 140,
        "content": "**Step 2**\nSet up configuration variables that can be easily customized for your business"
      },
      "typeVersion": 1
    },
    {
      "id": "a89a9974-8b5a-4c5c-b79f-88df7961493a",
      "name": "Note adhésive 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        672
      ],
      "parameters": {
        "width": 200,
        "height": 140,
        "content": "**Step 3**\nSend formatted message to Slack channel with approval buttons for the team"
      },
      "typeVersion": 1
    },
    {
      "id": "5cf683dc-bbdc-4f59-ac2b-aacb72efe823",
      "name": "Note adhésive 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        672
      ],
      "parameters": {
        "width": 200,
        "height": 140,
        "content": "**Step 4**\nCheck if the team approved or rejected the booking request"
      },
      "typeVersion": 1
    },
    {
      "id": "4d48f4a4-d01b-4e39-b3f5-23e6d101bd06",
      "name": "Note adhésive 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        272
      ],
      "parameters": {
        "width": 200,
        "height": 140,
        "content": "**Step 5A**\nSend confirmation email if approved with appointment details"
      },
      "typeVersion": 1
    },
    {
      "id": "c8f5c8fc-9fb0-481a-9070-5b4f285aa97e",
      "name": "Note adhésive 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        768
      ],
      "parameters": {
        "width": 200,
        "height": 140,
        "content": "**Step 5B**\nSend reschedule email if rejected with link to book new time"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "bb882f11-e83f-4520-ae9a-c62690c0abf2",
  "connections": {
    "9242d614-bc41-4dd9-9b68-ff2938d128d4": {
      "main": [
        [
          {
            "node": "7331465f-d0d0-47a2-8451-5aab04607305",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7331465f-d0d0-47a2-8451-5aab04607305": {
      "main": [
        [
          {
            "node": "a751b5f3-ed2e-4a93-b061-539688520478",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "852c2a56-3558-44ac-9af9-1cd28bedb52b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "57b8a226-402b-42cf-b6bb-090195a862d9": {
      "main": [
        [
          {
            "node": "9f165f71-d038-49d0-8277-41c42a8ab0af",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9f165f71-d038-49d0-8277-41c42a8ab0af": {
      "main": [
        [
          {
            "node": "9242d614-bc41-4dd9-9b68-ff2938d128d4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Intermédiaire - Gestion des tickets, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds13
Catégorie2
Types de nœuds6
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Auteur
Chris Rudy

Chris Rudy

@chrisrudy

DTC Marketing consultant with over 6 years of experience and over $25m in ad spend managed

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34