{
  "name": "Qualify inbound leads with Vapi voice AI and log results to Google Sheets",
  "nodes": [
    {
      "id": "ad093e33-04c3-4799-8208-725e96ed9525",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        0,
        0
      ]
    },
    {
      "id": "9bb2b9f1-9a01-4974-a4f6-dec5a3f784f6",
      "name": "Standardize Data",
      "type": "n8n-nodes-base.code",
      "position": [
        160,
        0
      ]
    },
    {
      "id": "6dd0c0c5-36ff-4e1f-9f12-d77f4ef26a41",
      "name": "Incorrect Phone?",
      "type": "n8n-nodes-base.if",
      "position": [
        304,
        0
      ]
    },
    {
      "id": "ef74d372-f563-4c31-bcb4-5cce5c8fc34b",
      "name": "Log Incorrect Phone",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        464,
        -80
      ]
    },
    {
      "id": "bd6f9d29-d3b5-49dc-a548-ea10ede9aece",
      "name": "Call Lead",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        464,
        96
      ]
    },
    {
      "id": "d03a0331-d6a8-4b9c-aa07-4a1a4fcf7cd2",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        608,
        0
      ]
    },
    {
      "id": "64dfa049-c707-43e5-b6bf-8fd84266bdb2",
      "name": "Get Call Details",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        752,
        0
      ]
    },
    {
      "id": "4d4f3eb0-4d8d-4cb1-8702-5ab148a2944c",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "position": [
        896,
        0
      ]
    },
    {
      "id": "7d7d771f-9b44-46ef-8856-cccb5a6b808e",
      "name": "Ended?",
      "type": "n8n-nodes-base.if",
      "position": [
        1040,
        0
      ]
    },
    {
      "id": "d5d6ef3d-9969-471a-87d8-641be35068c5",
      "name": "Polling",
      "type": "n8n-nodes-base.wait",
      "position": [
        1216,
        80
      ]
    },
    {
      "id": "c7a36779-39fe-4310-8c8d-1cab38c68eb3",
      "name": "Voicemail?",
      "type": "n8n-nodes-base.if",
      "position": [
        1216,
        -80
      ]
    },
    {
      "id": "7ca27023-51b0-41df-a5e1-25eed9343dc8",
      "name": "Log Voicemail",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1392,
        -80
      ]
    },
    {
      "id": "20f7efd3-42b0-4680-97b9-502d4e12cf48",
      "name": "Log Complete",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1392,
        80
      ]
    },
    {
      "id": "sticky-main-new",
      "name": "Sticky Note Main",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        -576
      ],
      "parameters": {
        "width": 520,
        "height": 950,
        "content": "## Qualify Leads with AI Voice Calls Using Vapi and Log to Google Sheets\n\n### Who is this for\nAgencies, sales teams, and service businesses who want to instantly qualify inbound leads with an AI-power"
      }
    },
    {
      "id": "sticky-step1",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -400
      ],
      "parameters": {
        "width": 400,
        "height": 232,
        "content": "## 1. Form & Phone Validation\n\nThe **On form submission** node captures lead details via a web form. The **Standardize Data** node cleans the phone input to a 10-digit US format. Invalid numbers get l"
      }
    },
    {
      "id": "sticky-step2",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -400
      ],
      "parameters": {
        "width": 400,
        "height": 232,
        "content": "## 2. AI Voice Call\n\nValid leads get an instant phone call from your Vapi AI assistant. The assistant qualifies them through a natural conversation, gathering structured data about their needs.\n\n**Set"
      }
    },
    {
      "id": "sticky-step3",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        700,
        -400
      ],
      "parameters": {
        "width": 400,
        "height": 232,
        "content": "## 3. Call Monitoring\n\nThe workflow waits 60 seconds for the call to complete, then polls the Vapi API every 10 seconds until the call status is \"ended\". This ensures no results are lost even for long"
      }
    },
    {
      "id": "sticky-step4",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1150,
        -400
      ],
      "parameters": {
        "width": 450,
        "height": 320,
        "content": "## 4. Results Logging\n\nCompleted calls are logged with AI-extracted insights: service interest, motivation, urgency, past experience, budget, and intent. Voicemails get logged separately with a \"Call "
      }
    }
  ],
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Get Call Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "Ended?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ended?": {
      "main": [
        [
          {
            "node": "Voicemail?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Polling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Polling": {
      "main": [
        [
          {
            "node": "Get Call Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Call Lead": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Voicemail?": {
      "main": [
        [
          {
            "node": "Log Voicemail",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Complete",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Call Details": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Incorrect Phone?": {
      "main": [
        [
          {
            "node": "Log Incorrect Phone",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Call Lead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Standardize Data": {
      "main": [
        [
          {
            "node": "Incorrect Phone?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Standardize Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}