ATLANTIS ITS
n8n Roofing Lead Engine --- Webhook System
Technical Order #001
Field Detail
Document ID TO-001
Version 1.0
Date March 10, 2026
Author Ozzy (Claude --- Atlantis AI)
Reviewed By Shane Hardin
Classification CONFIDENTIAL --- Internal Use Only
Applies To Atlantis Roofing Lead Engine
Difficulty Advanced
Est. Setup Time 30--45 minutes (fresh install)
Related Docs HT-001, HT-002, HT-003
1. Document Frontmatter
---
id: TO-001
type: tech-order
version: 1.0
last-updated: 2026-03-10
author: Ozzy
reviewed-by: Shane Hardin
status: approved
related: [HT-001, HT-002, HT-003]
---
2. Purpose & Scope
This Technical Order defines the authoritative configuration, operation, and maintenance procedures for the Atlantis Roofing Lead Engine webhook system.
This document covers the complete lead capture pipeline from form submission through notification delivery. It is the single source of truth for how this system is built, configured, and maintained.
🚨 WARNING: Do NOT modify the n8n workflow, Vercel API, or Cloudflare DNS settings without first consulting this document. Unauthorized changes can break lead capture and result in lost revenue.
3. System Overview
The Roofing Lead Engine is a 3-channel automated lead capture system built for roofing contractors. It captures leads from a web form and delivers instant notifications via Discord, Telegram, and SMS.
3.1 Full Lead Flow
Step Component Location Purpose
1 HTML Form ai.atlantisits.co (index.html) Collects lead data from visitor
2 Vercel /api/roofing-lead.js Server-side proxy --- Serverless API protects secrets
3 Cloudflare DNS ai CNAME --- DNS Only Routes traffic to Vercel
4 n8n Webhook n8n.atlantisits.co/webhook/roofing-lead Receives and processes lead
5 If: Secret Check n8n workflow node Validates x-atlantis-secret header
6 If: Honeypot n8n workflow node Blocks bot submissions Check
7 If: Required n8n workflow node Validates fullName + Fields phone present
8 Edit Fields n8n workflow node Normalizes and formats data
9 Google Sheets Atlantis CRM spreadsheet Logs lead permanently
10 Discord #roofing-leads channel Instant team notification
11 Telegram Atlantis bot channel Mobile notification
12 Twilio SMS Shane\'s phone number SMS alert
13 Webhook Response n8n respond node Returns 200 OK to Vercel
4. Security Architecture
4.1 Secret Header Authentication
Every request from Vercel to n8n must include a secret header. n8n validates this on every execution. Requests without the correct secret are rejected immediately.
Header Name Value Location Purpose
x-atlantis-secret Vercel env var: Authenticates Vercel → ATLANTIS_WEBHOOK_SECRET n8n requests
4.2 Honeypot Bot Protection
The form contains a hidden field named \'website\' --- invisible to humans, but bots fill it automatically. If this field contains any value, the submission is silently accepted (returns 200 OK) but discarded --- bots never know they were caught.
4.3 Server-Side Secret Protection
The webhook secret and n8n URL are stored exclusively as Vercel environment variables. They are never exposed in frontend HTML, JavaScript, or any client-side code.
🚨 WARNING: Never add N8N_WEBHOOK_URL or ATLANTIS_WEBHOOK_SECRET directly to index.html or any frontend file. This exposes your infrastructure to the public internet.
4.4 Cloudflare DNS Only
The ai.atlantisits.co subdomain must use DNS Only (grey cloud) in Cloudflare. Enabling the proxy (orange cloud) breaks Vercel serverless functions and causes 502 errors.
5. Authoritative Configuration Reference
5.1 Vercel Environment Variables
Variable Value Environment
N8N_WEBHOOK_URL https://n8n.atlantisits.co/webhook/roofing-lead Production + Preview + Development
ATLANTIS_WEBHOOK_SECRET [secured --- retrieve from n8n If: Secret Check Production + node] Preview + Development
5.2 Cloudflare DNS Records
Type Name Target Proxy Status
CNAME ai bf36d2e4c77df8df.vercel-dns-... DNS Only --- (Vercel) grey cloud
CNAME n8n atlantis-n8n tunnel DNS Only --- grey cloud
5.3 n8n Workflow Nodes
Node Name Type Purpose Key Config
Webhook Webhook Receives POST from Path: /roofing-lead, trigger Vercel Method: POST
If: Secret check IF condition Validates auth x-atlantis-secret == header [secret]
If: Honeypot check IF condition Detects bot company field must be submissions empty
If: Required IF condition Validates required fullName + phone not fields data empty
Edit Fields Set node Normalizes lead Formats all fields data
Append row in Google Logs lead to CRM Atlantis CRM sheet Sheets spreadsheet
Discord - Roof Discord node Team notification #roofing-leads channel Lead Alert
Send a text Telegram Mobile Atlantis bot message node notification
Send an Twilio node SMS to Shane Shane\'s mobile number SMS/MMS/WhatsApp
Respond to Webhook Respond node Returns 200 OK Response: success JSON
5.4 Form Fields
Field ID Label Required Notes
fullName Full Name YES Validation in both frontend and n8n
phone Phone Number YES Validation in both frontend and n8n
email Email Address No Collected but not required
address Street Address No
city City No
state State No
zip Zip Code No
roofType Current Roof Type No Dropdown --- Tile, Shingle, Metal, Flat, Other
message Message / No Free text Additional Details
website HONEYPOT --- N/A Must remain empty --- bots fill hidden this, humans cannot see it
6. Standard Operating Procedures
6.1 Daily Health Check
Perform this check each morning to confirm the system is operational:
-
Open https://ai.atlantisits.co --- confirm the form loads correctly
-
Open http://localhost:5678 --- confirm n8n is running
-
Check Docker Desktop or run docker ps --- confirm n8n and cloudflared are both Up
-
Check Cloudflare Zero Trust > Networks > Connectors --- confirm atlantis-n8n is HEALTHY
-
Check UptimeRobot dashboard --- confirm no downtime alerts
💡 TIP: The Atlantis OS Launcher (Cooper) and Command Center dashboard make this check a 30-second task.
6.2 Test Lead Submission Procedure
Use this procedure to verify the full pipeline is working after any infrastructure change:
-
Open https://ai.atlantisits.co
-
Open browser Dev Tools (F12) > Network tab
-
Fill the form: Name: TEST LEAD, Phone: 555-000-0000, Address: 123 Test St
-
Click Request My Free Estimate
-
In Dev Tools Network tab --- confirm POST /api/roofing-lead returns status 200
-
Check Google Sheets CRM --- confirm TEST LEAD row was added
-
Check Discord #roofing-leads --- confirm notification fired
-
Check Telegram --- confirm notification fired
-
Check Shane\'s phone --- confirm SMS received
-
Delete the TEST LEAD row from Google Sheets
🚨 WARNING: Always delete test entries from Google Sheets after testing to keep the CRM clean.
6.3 Activating / Deactivating the Workflow
The n8n workflow must be Active to process leads. If it was accidentally deactivated:
-
Open http://localhost:5678
-
Navigate to Workflows
-
Find Roofing Lead Engine workflow
-
Click the toggle to set it to Active (green)
⚠️ NOTE: The workflow toggle is easy to accidentally bump --- always check this first if leads stop coming through.
6.4 Adding a New Notification Channel
To add a new notification channel (e.g. NTFY replacing Telegram):
-
Open n8n at http://localhost:5678
-
Open the Roofing Lead Engine workflow
-
Click the + button after the existing notification nodes
-
Add the new node (e.g. HTTP Request for NTFY)
-
Configure the node with the correct endpoint and auth
-
Connect it in the workflow chain
-
Save and test with a test submission
-
Export the workflow JSON and save to E:\Data\AtlantisITS\n8n\workflows\
-
Commit the updated JSON to GitHub
7. Recovery Procedures
If leads stop coming through, follow this diagnostic sequence in order:
Check Command / Expected Result If Failed Action
1. n8n docker ps n8n listed as Up See HT-002 running?
2. Tunnel Cloudflare > atlantis-n8n = See HT-001 healthy? Connectors HEALTHY
3. Vercel Dev Tools > POST See HT-003 200? Network on form /api/roofing-lead = submit 200
4. Workflow localhost:5678 > Toggle = Active Toggle it on active? Workflows (green)
5. Env vars Vercel > Settings Both vars present See HT-003 Fix B set? > Env Vars
6. DNS Cloudflare > DNS DNS Only --- grey See HT-003 Fix A correct? > ai record cloud
8. Change Log
Version Date Author Change Description
1.0 2026-03-10 Ozzy Initial release --- full system documentation
9. Approval & Sign-Off
Role Name Date Signature
Author Ozzy (Claude --- 2026-03-10 Ozzy Atlantis AI)
Technical Shane Hardin ___________ ___________ Review
Final Approval Shane Hardin ___________ ___________
ATLANTIS ITS --- Technical Order TO-001 --- Authoritative Document
atlantisits.info | TO-001 | v1.0 | March 2026