← Back to Blog

Building an n8n Intake Router for Your Health Practice

A step-by-step guide to building the intake routing workflow that handles waitlist signups, support requests, feature feedback, and clinical inquiries without touching PHI.

This article is for educational and informational purposes only. It does not constitute legal, medical, or professional advice. Consult qualified professionals for guidance specific to your situation.

Why n8n for Healthcare Intake

n8n is a self-hosted workflow automation tool that gives you full control over your data flows. Unlike Zapier or Make, n8n runs on your own infrastructure, which means your webhook data never passes through a third-party server you do not control.

For healthcare-adjacent applications, this matters. Even if you are operating in the non-PHI lane (which you should be for intake automation), the principle of data minimization is good practice. The fewer third-party servers your data touches, the lower your exposure.

n8n is also free for self-hosted use. The Docker setup takes about 20 minutes and runs on any cloud provider or even a local machine.

The Four-Submission Architecture

The intake system built for Hunters Holistic Health handles four distinct submission types, each routed to its own Google Sheet tab:

Early Access (Waitlist): Name, email, interests, background, biggest challenge. Routed to the Early Access tab. Email alert contains name, email, and timestamp only.

Support Requests: Name, email, reason for contact (dropdown), preferred contact method, optional message. Routed to the Support Requests tab. Email alert contains name, email, category, and timestamp.

Feature Requests: Feature description, category, importance rating, anonymous flag. Routed to the Feature Requests tab. No email alert (reviewed on a schedule).

Clinical Inquiries: Name, email, phone, service interest, brief description (with PHI disclaimer). Routed to the Clinical Interest tab. Email alert contains name, email, service interest, and timestamp. No description text in the alert.

The n8n Workflow Structure

The workflow uses a single webhook trigger that receives all four submission types. A Switch node routes each submission to the appropriate branch based on the submissionType field.

Each branch has three nodes:

1. A Google Sheets Append node that adds the row to the correct tab

2. A Gmail Send node that sends the alert email (for submission types that require it)

3. A Respond to Webhook node that returns a 200 OK response

The webhook URL is stored as an environment variable in the app (VITE_N8N_WEBHOOK_URL). It is never hardcoded in the source code.

Security: The Webhook Secret Token

Every webhook should have a shared secret token. This prevents anyone who discovers your webhook URL from submitting fabricated data.

In n8n, set a Header Auth credential with a secret token. In the app, include this token in the request headers:

X-Webhook-Secret: your-secret-token-here

Store the token in your environment variables, not in the source code.

The Google Sheet Structure

The master Google Sheet has nine tabs in order:

1. Early Access

2. Support Requests

3. Feature Requests

4. Clinical Interest

5. Appointment Follow-Ups (added when Workflow 10 is built)

6. Triage Log (added when Workflow 12 is built)

7. Protocol Requests (added when Workflow 5 is built)

8. Pre-Session Briefs (added when Workflow 8 is built)

9. Lab Interest (added when Workflow 4 is built, Google Workspace BAA required)

The first four tabs are active from day one. The remaining five are added as each workflow is built.

The Email Alert Rules

Email alerts are intentionally minimal. The rule is: name, email, category, and timestamp only. No description text, no health details, no free-form content from the user.

This rule serves two purposes. First, it keeps the alerts non-PHI by design. Second, it keeps the alerts actionable. An alert that contains a wall of text from a form submission is not useful. An alert that says "New clinical inquiry from Jane Doe (jane@example.com) at 2:14 PM" is immediately actionable.

Testing With Fabricated Data

Before connecting real user submissions, test every workflow branch with fabricated data. n8n has a built-in test execution mode that lets you trigger the workflow manually with a test payload.

Use completely fictional names, email addresses, and content for all test submissions. Never use real client names or real health information in test data, even in a development environment.

The Deployment Decision: Cloud vs. Local

For production use, n8n should run on a cloud server, not a local machine. A $6/month DigitalOcean droplet or equivalent is sufficient for a solo practice with low submission volume.

The alternative is n8n Cloud, which is a managed version that starts at $20/month. This is simpler to set up but means your webhook data passes through n8n's servers. For non-PHI intake data, this is acceptable. For anything approaching PHI, self-hosted is the right choice.

The Takeaway

The n8n intake router is the operational backbone of the non-PHI automation layer. It takes about four hours to build from scratch, including the Google Sheets setup and the app integration. Once it is running, it handles intake routing automatically with no manual intervention required.

The architecture is portable. The same workflow structure, with minor modifications to the form fields and Sheet column names, can be deployed for any health educator, wellness practice, or small business. That portability is what makes it a sellable service.

Related reading