AutomationFlowsMarketing & Ads › Lead Automation - Ace Plumbing

Lead Automation - Ace Plumbing

Lead Automation - Ace Plumbing. Uses googleSheets, gmail. Webhook trigger; 5 nodes.

Webhook trigger★★★★☆ complexity5 nodesGoogle SheetsGmail
Marketing & Ads Trigger: Webhook Nodes: 5 Complexity: ★★★★☆ Added:

This workflow follows the Gmail → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Lead Automation - Ace Plumbing",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "lead-automation",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -704,
        608
      ],
      "id": "3dfb5843-8100-4039-a2b4-ad4a55035104",
      "name": "Receive Leads"
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "value": "1wVU0fCuQBeTpRxk5SMH16jQqVayXHc1ziOYiXoBlNBE",
          "mode": "list",
          "cachedResultName": "Leads 2.0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1wVU0fCuQBeTpRxk5SMH16jQqVayXHc1ziOYiXoBlNBE/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1wVU0fCuQBeTpRxk5SMH16jQqVayXHc1ziOYiXoBlNBE/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Name": "={{ $json.name }}",
            "Phone": "={{ $json.phone }}",
            "Email": "={{ $json.email }}",
            "Address": "={{ $json.address }}",
            "Problem": "={{ $json.problem }}",
            "Urgency": "={{ $json.urgency }}",
            "Summary": "={{ $json.summary }}",
            "Status": "={{ $json.status }}",
            "Timestamp": "={{ $json.SubmittedAt.toDateTime().toFormat('LLL d, yyyy, h:mm a')}}"
          },
          "matchingColumns": [
            "Timestamp"
          ],
          "schema": [
            {
              "id": "Name",
              "displayName": "Name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Phone",
              "displayName": "Phone",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "displayName": "Email",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Address",
              "displayName": "Address",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Problem",
              "displayName": "Problem",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Urgency",
              "displayName": "Urgency",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "displayName": "Summary",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Timestamp",
              "displayName": "Timestamp",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        -256,
        608
      ],
      "id": "e57f07ef-0967-4671-8d12-da30fca79df5",
      "name": "Update database",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sendTo": "={{ $json.Email }}",
        "subject": "=We got your message, {{ $json.Name.split(' ')[0] }}!",
        "emailType": "text",
        "message": "={{ $('Prepare Messages').item.json.customerMessage }}\n\nAce Plumbing.",
        "options": {
          "appendAttribution": false,
          "senderName": "Ace Plumbing"
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [
        -32,
        608
      ],
      "id": "0fe2ce15-6678-4ce6-b7c1-8a22f31d1c28",
      "name": "Update customer message recieved",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sendTo": "mashalonzo741@gmail.com",
        "subject": "=New Lead,  {{ $('Update database').item.json.Name }}, Emergency : {{ $('Update database').item.json.Urgency === 'emergency' }}",
        "emailType": "text",
        "message": "={{ $('Prepare Messages').item.json.ownerMessage }}",
        "options": {
          "appendAttribution": false,
          "senderName": "Ace Plumbing"
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [
        176,
        608
      ],
      "id": "640789fb-b710-4bff-84e6-c48330194c63",
      "name": "Inform Owner New Lead",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "bca74ee1-e4fa-48db-b125-7c2db4837dfd",
              "name": "=ownerMessage",
              "value": "=New lead : {{ $json.body.name }}, {{ $json.body.phone }}. \n\nEmergency : {{ $json.body.urgency === 'emergency' }}\n\n{{ $json.body.summary }}\n\nAddress: {{ $json.body.address }}\n",
              "type": "string"
            },
            {
              "id": "cd804c25-1e99-4f5d-9961-574930be14dd",
              "name": "=customerMessage",
              "value": "=Hi {{ $json.body.name.split(' ')[0] }}, thanks for reaching out to Ace Plumbing! \n\nWe'll be in touch shortly. Book a time that works for you here: https://calendly.com/ace-plumbing/job",
              "type": "string"
            },
            {
              "id": "dff9e8f8-a1f2-4b7f-92c5-a283ec7ad828",
              "name": "isEmergency",
              "value": "={{ $json.body.urgency === 'emergency' }}",
              "type": "string"
            },
            {
              "id": "fe0cf002-5301-456d-9a7c-ae155465f577",
              "name": "name",
              "value": "={{ $json.body.name }}",
              "type": "string"
            },
            {
              "id": "6b6e558e-975f-4103-a7dc-e4d1c7fe4778",
              "name": "phone",
              "value": "={{ $json.body.phone }}",
              "type": "string"
            },
            {
              "id": "f288a976-8054-446d-8741-0326b4c99875",
              "name": "email",
              "value": "={{ $json.body.email }}",
              "type": "string"
            },
            {
              "id": "2ce7d1d3-171c-4119-9f51-3ec632bcd88f",
              "name": "address",
              "value": "={{ $json.body.address }}",
              "type": "string"
            },
            {
              "id": "819112be-17ae-4f11-af28-59252f26b696",
              "name": "problem",
              "value": "={{ $json.body.problem }}",
              "type": "string"
            },
            {
              "id": "4d3cd36d-7b24-4423-bb7c-1c872ce7f0e6",
              "name": "urgency",
              "value": "={{ $json.body.urgency }}",
              "type": "string"
            },
            {
              "id": "aab422d7-b047-4087-9038-1ed72de4ba73",
              "name": "summary",
              "value": "={{ $json.body.summary }}",
              "type": "string"
            },
            {
              "id": "e58b0a7d-83fe-4d8d-ab07-d17005351c38",
              "name": "status",
              "value": "New",
              "type": "string"
            },
            {
              "id": "766bedba-688f-4b6d-a9e1-abd67a637887",
              "name": "SubmittedAt",
              "value": "={{ $json.body.submittedAt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -480,
        608
      ],
      "id": "f1b14fe9-1a67-449f-98bd-33cee6756764",
      "name": "Prepare Messages"
    }
  ],
  "connections": {
    "Receive Leads": {
      "main": [
        [
          {
            "node": "Prepare Messages",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update database": {
      "main": [
        [
          {
            "node": "Update customer message recieved",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update customer message recieved": {
      "main": [
        [
          {
            "node": "Inform Owner New Lead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Messages": {
      "main": [
        [
          {
            "node": "Update database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate"
  },
  "versionId": "0b115908-d949-4bb9-b6bd-4c87def382a9",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "PQq7mkLvgSUCDseZ",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Lead Automation - Ace Plumbing. Uses googleSheets, gmail. Webhook trigger; 5 nodes.

Source: https://github.com/Mash14/Ace-Plumbing---Lead-Automation/blob/master/n8n/workflow.json — original creator credit. Request a take-down →

More Marketing & Ads workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Marketing & Ads

Who is this for? Solo founders, sales teams, and event organizers who need email outreach without expensive tools but want full control from Telegram.

Telegram, Google Sheets, Google Sheets Trigger +2
Marketing & Ads

Universal Lead Processing Workflow. Uses googleSheets, gmail, httpRequest, gmailTrigger. Webhook trigger; 34 nodes.

Google Sheets, Gmail, HTTP Request +1
Marketing & Ads

This workflow acts as an instant SDR that replies to new inbound leads across multiple channels in real time. It first captures and normalizes all incoming lead data into a unified structure. The work

Google Sheets, HTTP Request, Gmail +1
Marketing & Ads

Turn a simple Google Sheet into a lightweight CRM powered by n8n.

Gmail, Google Sheets
Marketing & Ads

A comprehensive n8n workflow template for streamlining influencer application processing with real-time social media data validation, intelligent scoring algorithms, and automated onboarding workflows

N8N Nodes Verifiemail, Stop And Error, HTTP Request +2