How I automated lead capture on my website with n8n
Written by Mario Amadeo Muñoz Castellano, founder of dbricks Published on Updated on
Quick answer
When someone fills in the contact form on dbricks.es, the enquiry is saved to a Google Sheet and n8n takes it from there: it sends me an alert with all the details, emails the client a confirmation from our business address and marks the row as processed so nothing is sent twice. No server and no code on the website.
Before automating my clients' processes, I wanted to automate my own. This is dbricks' first case study: how we handle quote requests from our own website, which tools we use, how the workflow runs step by step, and the mistakes I made along the way so you don't have to. It is an in-house project, not a client's.
What problem does this automation solve?
It solves two common risks with any contact form: an enquiry going unread, and the client not knowing whether their message got through. With the automation, every enquiry is stored, I get an alert straight away and the client receives a confirmation with our response time, with nobody lifting a finger.
At dbricks we promise to reply within 24 working hours. That promise only holds if no enquiry gets lost in an inbox, and if the client knows from the first minute that someone has received it.
Which tools does the workflow use?
Four building blocks: Google Forms for the form, Google Sheets to store responses, n8n Cloud for the logic, and two email accounts, Gmail for my internal alerts and Microsoft 365 to write to the client from contact@dbricks.es. None of them requires coding or running a server.
| Building block | What we use it for |
|---|---|
| Google Forms | The form the client fills in, embedded on our contact page |
| Google Sheets | Stores each enquiry in a row and flags which ones are processed |
| n8n Cloud | Reads new rows, sends the emails and marks each row |
| Gmail | Sends me an alert with the full enquiry |
| Microsoft 365 (Outlook) | Replies to the client from contact@dbricks.es |
- Lead
- A potential client who has shown interest in your service, for example by asking for a quote.
- Lead capture
- Collecting those contacts and recording them so you can follow up.
How does the workflow run, step by step?
The workflow has six steps: the client submits the form, the response is saved to the sheet, n8n picks up the new row, sends me an alert, emails the client and marks the row as processed. If n8n ever stopped, the enquiries would still be safely stored in the sheet.
- The client fills in the form on our contact page: name, email, optional phone, the service they need and their message, plus acceptance of the privacy policy.
- Google saves the response as a new row in the linked spreadsheet.
- Every hour, n8n reads the sheet (Schedule Trigger and Google Sheets nodes) and an If node only lets through rows whose control column,
checkeado, is empty: the ones not yet handled. - n8n alerts me by Gmail with the full enquiry, so I can prepare a reply.
- n8n replies to the client from contact@dbricks.es with a personalised confirmation: their name, the service they asked about and a summary of their message.
- n8n marks the row as processed: it writes "Si" in the
checkeadocolumn, finding the row by its timestamp. On the next run, the If node filters it out, so the same enquiry is never sent twice.

Why does the workflow run every hour rather than every minute?
Because on n8n Cloud every scheduled run counts towards your plan, even when there are no new enquiries. Running it hourly means around 720 executions a month, and clients still get their confirmation within an hour, well inside our promise to reply within 24 working hours.
If you need an almost instant confirmation, the alternative is the Google Sheets Trigger node, which checks the sheet every minute but only starts an execution when it finds new rows.
Why Google Forms instead of a custom form with a webhook?
Because for a static website it is the simplest and most robust option. There are no keys or server code on the site, and enquiries are kept even if n8n fails, because they live in the form and the sheet. The trade-off is that the form uses Google's design and loads inside the page.
| Aspect | Google Forms + Sheets + n8n | Custom form + n8n webhook |
|---|---|---|
| Code on the website | None (just the iframe) | JavaScript submission and validation |
| If n8n is down | The enquiry is kept in the sheet | The enquiry may be lost without a fallback |
| Design | Google Forms' look | Fully integrated with the site |
| Privacy and cookies | Google only loads when you click "Load the form" | No third parties if everything is your own |
To avoid loading Google cookies for every visitor, the form sits behind a button and only loads if the person asks for it. Until then, the page does not connect to Google.
What mistakes did I make, and how did I fix them?
I made three very common mistakes: sending the client's reply from a personal Gmail account, referencing fields incorrectly in n8n, and not being clear about which sheet tab received the responses. All three show up in a proper end-to-end test before you switch the workflow on.
- The client's email came from a personal Gmail address. Clients saw an @gmail.com sender and, if they replied, the reply never reached the business inbox. I switched to n8n's Microsoft Outlook node, connected to contact@dbricks.es through OAuth (n8n never sees the password). Emails now come from our own domain, with SPF, DKIM and DMARC passing, so they are less likely to land in spam.
- Fields came through empty. In n8n,
$jsonholds the output of the previous node. If there is another node between the sheet and the email (like my Gmail alert),$jsonno longer contains the form data. The fix is to reference the sheet node by name:$('Get row(s) in sheet').item.json['Nombre']. - The sheet did not show every response. When you relink a form, Google creates a new tab ("Form responses 2"). The n8n trigger must point to that tab, and you should avoid sorting or inserting rows in it, because that is where the form writes.
What about data protection?
Every tool that touches personal data must appear in your privacy policy. In our case that means Google (form and sheet), n8n Cloud (automation) and Microsoft 365 (email). The form also has a mandatory privacy checkbox and a short data protection notice before submission, as required under the GDPR in Spain.
- The privacy checkbox is mandatory and links to our privacy policy.
- The confirmation email explains why the person is receiving it and where to exercise their rights.
- Responses are only kept as long as needed: until the request is resolved and, at most, one year if no contract follows.
This is not legal advice; check your own case with a professional.
How much does something like this cost?
With cloud tools, the cost is low: Google Forms and Sheets are free with a Google account, and n8n Cloud runs on a monthly plan. If we build it for your business, a basic automation like this starts at €150 including VAT and runs on the dbricks n8n instance, with the server included in the monthly maintenance.
See n8n's official pricing or our comparison n8n vs Make vs Zapier, which explains how each tool bills you. All our prices are on the pricing page.
What results has it delivered?
The workflow went live in October 2026. Every enquiry gets a confirmation within an hour and is recorded and marked with no manual work. Nobody has to watch the inbox for the client to know their message has arrived, and if n8n ever stopped, the enquiries would still be saved in the sheet.
The case summary is on its project page, in Spanish: Captación de leads automatizada con n8n.
What's next?
Next we will add a reminder if an enquiry has gone 20 hours without a reply, a weekly summary of enquiries and an alert if the website stops responding. They are small improvements that build on the same workflow and the same sheet.
FAQ about automating forms with n8n
Can you connect Google Forms to n8n?
Yes. The simplest way is to link the form to a Google Sheet and have n8n read new rows with its Google Sheets node. That way responses are stored even if the workflow stops, and n8n can process them later without losing any.
How do I stop n8n from sending the same email twice?
Mark each row once it has been processed, for example with a "Processed" column, and make the workflow read only unmarked rows. It is the simplest way to handle each enquiry exactly once, however many times the workflow runs each day.
Can I send the emails from my own domain?
Yes. n8n has nodes for Microsoft Outlook (Microsoft 365) and Gmail (Google Workspace) that connect through OAuth, without storing your password. Clients see your business address and replies land in your inbox. Make sure your domain has SPF, DKIM and DMARC set up correctly.
Do I need to know how to code for a workflow like this?
Not for a workflow like this: everything is configured with visual nodes in n8n. You only need to understand how data is referenced between nodes, which is where most mistakes happen. If you would rather not do it yourself, we can build it for you.