Every lead captured.
Every lead answered in seconds.
One n8n workflow behind every lead source you have. A homeowner submits a form, the lead is normalized, checked against your existing records so it never lands twice, written to Airtable with a Google Sheets mirror, and an email hits your intake inbox with the phone number as a click to call link. Ten working days from first webhook to production handoff, built in your own n8n instance with a written runbook so you are never locked to me.
Three ways a plumbing lead quietly disappears.
Your post described the symptoms precisely. These are the three underlying causes, and each one is a specific thing this build closes off.
Leads land in three different places
The website form, the contact page, and whatever else feeds you all arrive somewhere slightly different. Nobody holds a single list, so the real count at the end of the month is an estimate rather than a number.
The first callback wins the job
Plumbing is a speed business. A homeowner standing over a leak calls the next name on the list if nobody rings back, and without instant notification there is no record you ever had them.
Duplicates rot the list quietly
The same customer submits twice because they were not sure it went through. The sheet grows two rows, and follow up gets doubled or dropped depending on which one your team opens first.
One workflow. Every source. No gaps.
A single n8n workflow sits behind every lead source you have and treats them all identically. Each source gets its own webhook so you can see exactly where a lead came from, then every payload is normalized into one shape (name, phone number, email, service requested, message, source, timestamp) before anything else happens. Next comes the duplicate check, keyed on phone and email, so a repeat submission updates the existing record and appends the new message instead of creating a second row. The lead is then written to Airtable as the system of record, with an optional Google Sheets mirror if your team prefers working from a spreadsheet, and the moment that record is written a formatted email fires to whoever is on intake with the service requested in the subject line and the customer's phone rendered as a click to call link. Failed runs do not vanish silently: a dedicated error workflow catches them, alerts you, and holds the payload so it can be replayed rather than lost between the form and the sheet. Everything is built as named and commented nodes inside your own n8n instance with a written runbook, so adding a fourth lead source or swapping Airtable for a CRM later is a change your team can make without a rebuild.
What you get. Phase by phase.
Five phases across ten working days. Every phase ends with something you can test yourself by submitting a real form and watching where it lands.
- Inventory of every live lead source: website forms, contact page, ads, referral partners
- One canonical schema locked: name, phone, email, service requested, message, source, timestamp
- Airtable base built as the system of record with new, contacted, and won views
- Google Sheets mirror scoped if your team prefers a spreadsheet to work from day to day
- A dedicated n8n webhook per lead source so attribution is built in, not inferred later
- Website and contact form submissions wired in and test fired end to end
- Field normalization: phone numbers formatted consistently, blank fields handled cleanly
- Raw payloads logged before processing so nothing is lost to a mapping mistake
- Duplicate check keyed on phone and email that runs before any write happens
- Repeat submissions update the existing record and append the new message, no second row
- Every lead written to Airtable with source attribution and a first contact timestamp
- Sheets mirror kept in sync so both views always agree on the same numbers
- Formatted email fires the moment a lead lands, service requested in the subject line
- Customer phone rendered as a click to call link so intake dials straight from the email
- Routing rules so emergency requests can alert a different address or the whole team
- Dedicated error workflow catches failed runs, alerts you, and holds the payload for replay
- End to end test from every live source with sample leads you watch land in real time
- Written runbook covering each node, what it does, and how to safely change it
- Loom walkthrough of the full workflow so your team can maintain it without me
- Everything running in your n8n instance under your credentials, transferred on handoff
Ten working days. Webhook to production.
You asked for an estimated timeline, so here it is broken down. Click any stage to see exactly what lands before it moves on.
Deliverables this stage
- Inventory of every live lead source, including the ones nobody currently tracks
- Canonical schema agreed: name, phone, email, service requested, message, source, timestamp
- Airtable base built with new, contacted, and won views ready to receive leads
- Google Sheets mirror scoped and confirmed against how your team actually works
Deliverables this stage
- Dedicated n8n webhook per lead source with source attribution baked in
- Website and contact form submissions connected and test fired end to end
- Phone numbers formatted consistently and blank fields handled without breaking rows
- Raw payload logging live so no submission is ever lost to a mapping error
Deliverables this stage
- Duplicate check keyed on phone and email running ahead of every write
- Repeat submissions updating the existing record and appending the new message
- Every lead landing in Airtable with source attribution and first contact timestamp
- Google Sheets mirror synced so both views report identical numbers
Deliverables this stage
- Instant formatted email on every new lead with click to call phone and service in the subject
- Routing rules live for emergency requests plus an error workflow holding failed payloads
- End to end test from every source with sample leads you watch land in real time
- Written runbook, Loom walkthrough, and full transfer of the instance to your credentials
Let's map your lead sources.
A 20 minute call where I share my screen, show you a lead capture workflow running live in n8n, and we list out every place a lead currently reaches you. That list is the whole scope, and once we have it I can confirm the ten day plan against your actual sources rather than assumed ones.