Workflow de aprobación de citas de instalación con Slack y Gmail

Intermedio

Este es unTicket Management, Multimodal AIflujo de automatización del dominio deautomatización que contiene 13 nodos.Utiliza principalmente nodos como If, Set, Gmail, Slack, FormTrigger. Automatizar la aprobación de citas de instalación con formularios de Slack y Gmail

Requisitos previos
  • Cuenta de Google y credenciales de API de Gmail
  • Bot Token de Slack o URL de Webhook
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "F3ZBYce4AMuybZcF",
  "meta": {
    "instanceId": "efe08e2da7cae43f565dfacaafdb0e67025886141ccd3ddbe001880f7b5ecf5b"
  },
  "name": "Installation Booking Approval Workflow with Slack and Gmail",
  "tags": [],
  "nodes": [
    {
      "id": "57b8a226-402b-42cf-b6bb-090195a862d9",
      "name": "Disparador de formulario: Reserva de instalación",
      "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": "Establecer campos: Variables de configuración",
      "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: Solicitar aprobación",
      "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: Verificar estado de aprobación",
      "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: Enviar correo de confirmación",
      "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: Enviar correo de reprogramación",
      "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": "Nota adhesiva",
      "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": "Nota adhesiva1",
      "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": "Nota adhesiva2",
      "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": "Nota adhesiva3",
      "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": "Nota adhesiva4",
      "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": "Nota adhesiva5",
      "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": "Nota adhesiva6",
      "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
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - Gestión de tickets, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos13
Categoría2
Tipos de nodos6
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Chris Rudy

Chris Rudy

@chrisrudy

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

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34