← All projects
N8N & AutomationLive in production

Contact pipeline — n8n workflow behind this site

The form on this page. Validates, filters bots, notifies me and confirms to the sender — no inbox babysitting.

Every enquiry acknowledged within seconds, and I have never lost one to a spam folder or a missed notification.

Open it live Try the form

TypePersonal infrastructure — production
RoleSole engineer
Built in1 day
Live sinceAugust 2026
Runs onSelf-hosted n8n
Try itThe contact form on this site
Stack4 technologies
The system running
Workflow or admin view

What it is

The automation behind the contact form on this page. A webhook receives the submission, screens it, emails me the enquiry and sends the sender an immediate confirmation. Self-hosted n8n on my own VPS.

The problem it solves

A contact form that only emails you is a form that quietly fails. The sender gets no acknowledgement and has no idea whether it went through, and you find out about the failure when someone follows up angrily on LinkedIn a week later — or never. The second problem is bots: a public form with no filtering fills your inbox with junk until you stop reading it.

How it works

  1. Webhook trigger with CORS locked to my own domains, so the endpoint only accepts submissions from this site.
  2. A shared-secret header on every request, so a bot hitting the webhook URL directly is rejected before anything runs.
  3. A honeypot field, hidden from humans and invisible to screen readers. Bots fill it, people cannot, and anything with it filled is dropped silently rather than bounced — a rejection message tells a bot what to fix.
  4. Field validation in the workflow rather than trusting the browser, since client-side validation is convenience, not security.
  5. Two emails in parallel: the enquiry to me with the sender's details, and a confirmation back to them so nobody is left guessing.
  6. Sent over authenticated SMTP with proper DNS records rather than a default mail function, because deliverability is the whole point of the system.
The system, step by step
Form submittedBrowserWebhook receivesn8nScreen itFilterNotify meSMTPConfirm to senderSMTP
Click any step to see what it does and why it is built that way.

The interesting problem

Deliverability, not the workflow. Automated mail from a new domain lands in spam by default — the workflow can run perfectly and the enquiry still never gets read, and you will not know, because a spam-foldered email produces no error anywhere. Getting it right meant authenticated SMTP with the DNS records configured before going live rather than after, and then actually testing delivery into Gmail and Outlook instead of assuming a green tick in n8n meant the message arrived.

What I would do differently

I would log every submission to a database as well as emailing it. Right now the only record is my inbox, so a mail failure loses the enquiry entirely with nothing to recover from. A row in a table costs one node and turns a silent loss into something I can replay.

Built with

n8nWebhooksSMTPJavaScript

See the other projects Ask me about this one