Skip to content

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:

  1. Open https://ai.atlantisits.co --- confirm the form loads correctly

  2. Open http://localhost:5678 --- confirm n8n is running

  3. Check Docker Desktop or run docker ps --- confirm n8n and cloudflared are both Up

  4. Check Cloudflare Zero Trust > Networks > Connectors --- confirm atlantis-n8n is HEALTHY

  5. 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:

  1. Open https://ai.atlantisits.co

  2. Open browser Dev Tools (F12) > Network tab

  3. Fill the form: Name: TEST LEAD, Phone: 555-000-0000, Address: 123 Test St

  4. Click Request My Free Estimate

  5. In Dev Tools Network tab --- confirm POST /api/roofing-lead returns status 200

  6. Check Google Sheets CRM --- confirm TEST LEAD row was added

  7. Check Discord #roofing-leads --- confirm notification fired

  8. Check Telegram --- confirm notification fired

  9. Check Shane\'s phone --- confirm SMS received

  10. 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:

  1. Open http://localhost:5678

  2. Navigate to Workflows

  3. Find Roofing Lead Engine workflow

  4. 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):

  1. Open n8n at http://localhost:5678

  2. Open the Roofing Lead Engine workflow

  3. Click the + button after the existing notification nodes

  4. Add the new node (e.g. HTTP Request for NTFY)

  5. Configure the node with the correct endpoint and auth

  6. Connect it in the workflow chain

  7. Save and test with a test submission

  8. Export the workflow JSON and save to E:\Data\AtlantisITS\n8n\workflows\

  9. 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