Ferrer Window Co. — Lead Intake Automation

← Back to Projects

Self-directed practice project

What This Automation Does

Ferrer Window Co. needed a way to catch every lead from their website's contact form without anyone having to check for it manually. This n8n workflow receives each form submission, filters out obvious spam (anything missing both a phone number and an email), cleans up the data, then instantly logs the lead to a Google Sheet and posts it to the team's Slack — both at once, so neither one holds up the other.

There's no live demo to click through — this runs privately inside the client's own n8n, Slack, and Sheets, not something publicly hostable. What's here instead is the real deliverable: the exported workflow (view the workflow on GitHub) and the plain-English explanation doc written for the business owner, who isn't technical and needed to understand what happens if something breaks.

How I Worked Through This

I built the workflow with n8n's Form Trigger first, even though the final version needed to run on a Webhook — I'd used Webhooks before but not Form Trigger, and this let me see real submission data come through without also wrestling with webhook payload structure at the same time.

For the junk-lead filter, my first instinct was to write the logic as "if phone and email are both empty, stop." I inverted it instead to "if phone or email is filled in, continue" — same result, but it makes the true branch the valid-data path, which is the one you actually follow when reading the workflow later.

Swapping from Form Trigger to Webhook wasn't a clean drop-in — the Webhook nests every field inside a body key alongside raw request metadata I didn't need, so every downstream reference (the filter, the field mappings) had to be updated to match. That same swap is also why the cleanup step grew: it started as a single job (defaulting an empty message field) and I rebuilt it to also strip out the metadata noise, so Sheets and Slack only ever see the five fields that actually matter.

During testing, the Google Sheets connection dropped and needed reconnecting — a small thing, but realistic enough that I wrote it into the troubleshooting section of the client's doc, since it's the kind of issue likely to come up again after handoff.

Technical Details
Tech stack for the Ferrer Window Co. lead intake workflow
Component Role
n8n Workflow platform / automation logic
Webhook trigger Receives the form submission
IF node Filters out submissions missing both phone and email
Set node Strips webhook metadata, defaults empty message field
Google Sheets API Logs each lead as a permanent record
Slack API Notifies the team in real time