Automatización de marketing y reservas de restaurante con Excel y asistente de voz VAPI

Intermedio

Este es unLead Nurturing, AI Chatbotflujo de automatización del dominio deautomatización que contiene 11 nodos.Utiliza principalmente nodos como Set, Code, Webhook, HttpRequest, GoogleSheets. Usar Excel, asistente de voz VAPI y calendario para automatizar el marketing y reservas de restaurantes

Requisitos previos
  • Punto final de HTTP Webhook (n8n generará automáticamente)
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Credenciales de API de Google Sheets
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": "iD8sbZKww1NpC3At",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "Automate Restaurant Marketing & Booking via Excel and VAPI Voice Agent",
  "tags": [],
  "nodes": [
    {
      "id": "61f3ed14-9be9-42bb-ac7b-90072005ebc1",
      "name": "Disparador de Nuevo Lead (Excel)",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -20,
        -220
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1760068917,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1mkHJIhSFXdh1n65GKPwzEzFw0QasunyYm9BDglnXeiI/edit#gid=1760068917",
          "cachedResultName": "call_list"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1mkHJIhSFXdh1n65GKPwzEzFw0QasunyYm9BDglnXeiI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1mkHJIhSFXdh1n65GKPwzEzFw0QasunyYm9BDglnXeiI/edit?usp=drivesdk",
          "cachedResultName": "Vapi_real-estate"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "id": "BoDTTv5L67GVL3Fi",
          "name": "Google Sheets  - test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "de15cc25-830d-4efe-9265-685eef529094",
      "name": "Preparar Datos del Lead",
      "type": "n8n-nodes-base.set",
      "position": [
        200,
        -220
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a10873fa-0c01-46ed-a364-d31200e44e76",
              "name": "Phone",
              "type": "string",
              "value": "=+{{ $json.Phone }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "22384d76-3c0d-4d3b-9e85-4e9d6a005e7f",
      "name": "Recorrer Leads",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        420,
        -220
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "eea1ca56-260e-4f81-980a-6f2dd46e0667",
      "name": "Iniciar Llamada de Marketing (VAPI)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        640,
        -220
      ],
      "parameters": {
        "url": "https://api.vapi.ai/call",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"assistantId\": \"add_id_here\",\n  \"phoneNumberId\": \"add_id_here\",\n  \"customers\": [\n    {\n      \"number\":\"{{ $json.Phone }}\"\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "id": "JzfcNGi2NYJB6wll",
          "name": "Bearer Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9addff6d-2a29-4f02-94a8-d76406987569",
      "name": "Respuesta de Llamada VAPI Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -20,
        40
      ],
      "webhookId": "a34ac7ac-7ea4-4942-8dbf-f9ce3f0986e4",
      "parameters": {
        "path": "a34ac7ac-7ea4-4942-8dbf-f9ce3f0986e4",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2
    },
    {
      "id": "9797586c-4313-4ce1-b58b-ec3e31cb705e",
      "name": "Almacenar Respuesta del Usuario (Hoja)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        200,
        40
      ],
      "parameters": {
        "columns": {
          "value": {
            "next_step": "={{ $json.body.message.toolCalls[0].function.arguments.next_step }}",
            "call_notes": "={{ $json.body.message.toolCalls[0].function.arguments.call_notes }}",
            "website_url": "={{ $json.body.message.toolCalls[0].function.arguments.website_url }}",
            "call_outcome": "={{ $json.body.message.toolCalls[0].function.arguments.call_outcome }}",
            "company_name": "={{ $json.body.message.toolCalls[0].function.arguments.company_name }}",
            "phone_number": "={{ $json.body.message.toolCalls[0].function.arguments.phone_number }}",
            "email_address": "={{ $json.body.message.toolCalls[0].function.arguments.email_address }}",
            "prospect_name": "={{ $json.body.message.toolCalls[0].function.arguments.prospect_name }}",
            "prospect_role": "={{ $json.body.message.toolCalls[0].function.arguments.prospect_role }}",
            "follow_up_date": "={{ $json.body.message.toolCalls[0].function.arguments.follow_up_date }}",
            "interest_level": "={{ $json.body.message.toolCalls[0].function.arguments.interest_level }}",
            "website_strength": "={{ $json.body.message.toolCalls[0].function.arguments.website_strength }}",
            "biggest_challenge": "={{ $json.body.message.toolCalls[0].function.arguments.biggest_challenge }}",
            "objections_raised": "={{ $json.body.message.toolCalls[0].function.arguments.objections_raised }}",
            "opt_out_requested": "={{ $json.body.message.toolCalls[0].function.arguments.opt_out_requested }}",
            "appointment_datetime": "={{ $json.body.message.toolCalls[0].function.arguments.appointment_datetime }}",
            "current_marketing_methods": "={{ $json.body.message.toolCalls[0].function.arguments.current_marketing_methods }}",
            "previous_digital_marketing": "={{ $json.body.message.toolCalls[0].function.arguments.previous_digital_marketing }}"
          },
          "schema": [
            {
              "id": "prospect_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "prospect_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "prospect_role",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "prospect_role",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "website_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "website_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "website_strength",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "website_strength",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone_number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "phone_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email_address",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "email_address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "current_marketing_methods",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "current_marketing_methods",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "biggest_challenge",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "biggest_challenge",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "previous_digital_marketing",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "previous_digital_marketing",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "objections_raised",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "objections_raised",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "interest_level",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "interest_level",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "next_step",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "next_step",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "appointment_datetime",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "appointment_datetime",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "call_outcome",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "call_outcome",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "call_notes",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "call_notes",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "follow_up_date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "follow_up_date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "opt_out_requested",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "opt_out_requested",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "prospect_name"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1mkHJIhSFXdh1n65GKPwzEzFw0QasunyYm9BDglnXeiI/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1mkHJIhSFXdh1n65GKPwzEzFw0QasunyYm9BDglnXeiI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1mkHJIhSFXdh1n65GKPwzEzFw0QasunyYm9BDglnXeiI/edit?usp=drivesdk",
          "cachedResultName": "Vapi_real-estate"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "b5dbaaf8-c8e2-4dda-a3a0-862cf25bd659",
      "name": "Extraer Información de Reserva/Pedido",
      "type": "n8n-nodes-base.code",
      "position": [
        420,
        40
      ],
      "parameters": {
        "jsCode": "function formatIST(date) {\n  const options = {\n    timeZone: 'Asia/Kolkata',\n    year: 'numeric',\n    month: '2-digit',\n    day: '2-digit',\n    hour: '2-digit',\n    minute: '2-digit',\n    second: '2-digit',\n    hour12: false\n  };\n  const parts = new Intl.DateTimeFormat('en-GB', options).formatToParts(date);\n  const lookup = {};\n  parts.forEach(p => lookup[p.type] = p.value);\n  return `${lookup.year}-${lookup.month}-${lookup.day} ${lookup.hour}:${lookup.minute}:${lookup.second} IST`;\n}\n\nfor (const item of items) {\n  let dateStr = item.json.date_input?.toLowerCase?.() || 'today';\n  let timeStr = item.json.time_input || '17:00'; // default to 5 PM\n\n  // Step 1: base date\n  let baseDate = new Date();\n  if (dateStr === 'tomorrow') {\n    baseDate.setDate(baseDate.getDate() + 1);\n  } else if (dateStr !== 'today') {\n    baseDate = new Date(dateStr);\n  }\n\n  // Step 2: parse time\n  const [timePart, ampm] = timeStr.trim().split(/ (AM|PM)/i);\n  let [hours, minutes] = timePart.split(':').map(Number);\n  if (ampm?.toLowerCase() === 'pm' && hours < 12) hours += 12;\n  if (ampm?.toLowerCase() === 'am' && hours === 12) hours = 0;\n\n  baseDate.setHours(hours, minutes || 0, 0, 0);\n\n  // Step 3: set IST formatted times\n  const startIST = formatIST(baseDate);\n  const endIST = formatIST(new Date(baseDate.getTime() + 60 * 60 * 1000)); // +1 hour\n\n  item.json.appointment_datetime_parsed = startIST;\n  item.json.appointment_end_datetime = endIST;\n}\n\nreturn items;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "74ca51eb-c7c3-4965-839e-db0e80f8dc02",
      "name": "Programar Entrega/Reserva de Mesa",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        640,
        40
      ],
      "parameters": {
        "end": "={{ $json.appointment_end_datetime }}",
        "start": "={{ $json.appointment_datetime_parsed }}",
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "abc@gmail.com"
        },
        "additionalFields": {}
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "6ldLmzzYtaqng4pw",
          "name": "Google Calendar account - test"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "d34f8054-9d1c-48fe-a6df-35e12a0d09a1",
      "name": "Enviar Respuesta a VAPI",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        860,
        40
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "f1a84630-df6e-4f6f-8633-b60a712bbd82",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -540
      ],
      "parameters": {
        "color": 3,
        "width": 980,
        "height": 520,
        "content": "## Lead Management & Marketing Automation Workflow\n\n- New Lead Trigger: Excel triggers capture new leads when customers are added to the lead management spreadsheet\n\n- Lead Preparation: The system processes and formats lead data, extracting relevant details (name, phone, preferences, booking history)\n\n- Campaign Loop: Automated loop processes through multiple leads for batch marketing campaigns\n\n- Voice Marketing Call: VAPI initiates personalized voice calls to leads with tailored restaurant offers and booking invitations\n\n- Response Tracking: All call results and lead responses are logged back to Excel for campaign analysis\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "62f06ede-32ed-40fe-b40f-4887245e34f9",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -140,
        0
      ],
      "parameters": {
        "width": 1240,
        "height": 500,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Booking & Order Processing Workflow\n\n- Voice Response Capture: VAPI webhook triggers when customers respond to marketing calls or make direct booking requests\n\n- Response Storage: Customer responses and booking preferences are immediately saved to Excel sheets\n\n- Information Extraction: System processes natural language responses to extract booking details (party size, preferred times, special requests)\n\n- Calendar Integration: Booking information is automatically scheduled in restaurant management systems\n\n- Confirmation Loop: Automated follow-up voice messages confirm bookings and provide additional restaurant information"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "timezone": "Asia/Kolkata",
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1"
  },
  "versionId": "dc998ee6-b2db-4413-8198-a94fc7ff539f",
  "connections": {
    "de15cc25-830d-4efe-9265-685eef529094": {
      "main": [
        [
          {
            "node": "22384d76-3c0d-4d3b-9e85-4e9d6a005e7f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "22384d76-3c0d-4d3b-9e85-4e9d6a005e7f": {
      "main": [
        [
          {
            "node": "eea1ca56-260e-4f81-980a-6f2dd46e0667",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "22384d76-3c0d-4d3b-9e85-4e9d6a005e7f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "61f3ed14-9be9-42bb-ac7b-90072005ebc1": {
      "main": [
        [
          {
            "node": "de15cc25-830d-4efe-9265-685eef529094",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b5dbaaf8-c8e2-4dda-a3a0-862cf25bd659": {
      "main": [
        [
          {
            "node": "74ca51eb-c7c3-4965-839e-db0e80f8dc02",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9addff6d-2a29-4f02-94a8-d76406987569": {
      "main": [
        [
          {
            "node": "9797586c-4313-4ce1-b58b-ec3e31cb705e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9797586c-4313-4ce1-b58b-ec3e31cb705e": {
      "main": [
        [
          {
            "node": "b5dbaaf8-c8e2-4dda-a3a0-862cf25bd659",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "74ca51eb-c7c3-4965-839e-db0e80f8dc02": {
      "main": [
        [
          {
            "node": "d34f8054-9d1c-48fe-a6df-35e12a0d09a1",
            "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 - Nutrición de leads, Chatbot de IA

¿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.

Flujos de trabajo relacionados recomendados

Marketing inteligente por correo electrónico y teléfono para bienes raíces con generación de leads mediante IA
Usar Llama AI, VAPI llamadas y campañas de Gmail para automatizar el marketing inmobiliario
Code
Wait
Gmail
+
Code
Wait
Gmail
23 NodosOneclick AI Squad
Nutrición de leads
Automatización de la entrega y el cumplimiento de contratos de influencers de Instagram
Automatizar la conformidad contractual de influencers de Instagram con Claude AI y recordatorios de Slack
If
Set
Code
+
If
Set
Code
26 NodosOneclick AI Squad
Redes sociales
Sistema de procesamiento de pedidos de alimentos impulsado por IA, integrado con Facebook Messenger, Google Sheets y Calendario
Sistema de procesamiento de pedidos de alimentos impulsado por IA, integrado con Facebook Messenger, Google Sheets y Calendario
If
Code
Webhook
+
If
Code
Webhook
26 NodosHans Wilhelm Radam
Nutrición de leads
Automatización de llamadas a prospectos: VAPI, registro en Google Sheets y programación de calendario
Automatización de llamadas a prospectos: VAPI, registro en Google Sheets y agendamiento en calendario
Set
Code
Webhook
+
Set
Code
Webhook
13 NodosMeak
Creación de contenido
Calificación automática de leads B2B mediante llamadas de voz (VAPI) y Google Sheets
Calificación de prospectos B2B
Webhook
Http Request
Google Sheets
+
Webhook
Http Request
Google Sheets
10 NodosOneclick AI Squad
Generación de leads
Explorar nodos de n8n en la biblioteca de referencias visuales
Explorar nodos de n8n en la base de referencia visual
If
Ftp
Set
+
If
Ftp
Set
113 NodosI versus AI
Otros
Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos11
Categoría2
Tipos de nodos10
Descripción de la dificultad

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

Autor
Oneclick AI Squad

Oneclick AI Squad

@oneclick-ai

The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34