Lead Capture Kitfor n8n
Get the kit

Help

Troubleshooting

Start in Executions. Open the failed or unexpected run and click each node to see what went in and what came out. Search this page for the exact error text.

The Executions tab. Green nodes ran; click any node to inspect its data.

#Website and form

Symptom Cause and fix
404 The requested webhook "POST lead-capture" is not registered The test URL needs Execute workflow first and works for one request. The production URL needs the workflow published.
405, or an error when you open the URL in a browser The webhook only accepts POST. A browser address bar sends GET.
The reply never arrives or times out A node before Respond to Website is stuck, usually Google sign-in. Open the execution.
Browser console says CORS blocked Webhook node → Options → Allowed Origins (CORS) → your domain (or *). Proxies such as Nginx or Cloudflare must not strip CORS headers.
The hosted form says “Problem submitting response” The Demo Form workflow must be published for /form/…. For the test URL, click Execute workflow in that workflow first.
The "Respond to Webhook" node is not supported in workflows initiated by the "n8n Form Trigger" A Form Trigger is in the same workflow as Respond to Webhook. You're on an old copy of the kit: use the separate Demo Form workflow (setup step 9).
The hosted form shows the Error Page The main workflow failed: check its Executions. Also check that Save Lead (run main workflow) points at the right workflow.
Workflow does not exist in Save Lead Wrong workflow selected. Re-pick it with From list. The main workflow doesn't need to be published.
A form lead got a JSON reply, or the form hangs The main workflow decides by checking whether Website Form Webhook ran. If you renamed that node, rename it inside Normalize & Validate too.
Self-hosted URLs show localhost Set WEBHOOK_URL=https://n8n.yourdomain.com/ in n8n's environment and restart.

#n8n settings and badges

Symptom Fix
Error Handler is greyed out in Settings → Error Workflow Publish the error-handler workflow first. The picker only offers published workflows with an Error Trigger.
Red badge on Slack: Alert Team or another alert node No credential selected. Add one, or deactivate the node if you don't use that channel (select it → D).
Nothing in Error Log when something failed Select the Google Sheets credential on Log Notification Failure and in the error handler, and select the error handler in the main workflow's settings.
The error handler never runs during tests n8n runs error workflows for production executions. Test through the published webhook (how).

#Spam and validation

Symptom Fix
Real leads treated as spam (200 but no row) Look at spam_reasons in the Normalize & Validate output. Usually a keyword like crypto is legitimate for your business (edit spam_keywords), or your website pre-fills a field named website (change honeypot_field).
422 email or phone is required Your form uses an unusual field name. Add it to the pick(...) list in Normalize & Validate.
phone looks invalid for PH numbers PH mobiles have 11 digits locally (0917 123 4567) or 12 with the country code. Landlines like (082) 123 4567 become +63821234567 and pass.
Every lead is marked spam Check spam_keywords for empty items, and that your form doesn't fill the honeypot field.

#Google Sheets

Symptom Fix
Sheet with ID … not found or Requested entity was not found Wrong sheet_id, or the Google account in the credential can't open the Sheet. Share the Sheet with that account.
Sheet with name Leads not found The tab name must match leads_tab exactly, including capitals.
Column names were updated after the node's setup Row 1 changed. Restore the 19 headers (list).
The service is receiving too many requests (429) Google's quota, about 60 reads a minute per user. Retries handle bursts; for high volume, use a database.
Repeats not detected A typo in the email or phone header, or the old row has no lead_id. Rows without one get a new row with a “Possible duplicate” note.
Phone shows as 639171234567 or in scientific notation That row was typed by hand. Format column G as Plain text. The workflow itself writes RAW values.
Google sign-in stops working after a week Your Google Cloud app is still in Testing. Publish it (setup step 4) and reconnect.

#Email and alerts

Symptom Fix
Gmail 403 insufficient permissions Reconnect the Gmail credential and allow sending. The Gmail API must be enabled in your Google Cloud project.
The thank-you email lands in spam Send from a Google Workspace domain with SPF and DKIM, keep links few and the subject plain.
Telegram 400 chat not found The bot isn't in the group, or the ID is wrong. Group IDs start with -100. Mention the bot in the group, then call getUpdates again.
Telegram can't parse entities You edited the alert text. Keep the esc() helper in Build Response & Alerts.
Slack channel_not_found or not_in_channel Use the channel ID and /invite the app to the channel.
Discord 401 or 404 The webhook was deleted or regenerated. Paste the new URL.
No alert and no error All alert_* toggles are false, or it was a repeat lead and alert_on_duplicate = false.

#Test form resets after a second submission

What we saw on n8n 2.47.3: testing the Demo Form through Execute workflow, the first submission showed the Thank-You page. On the second test, the form came back with empty fields instead, even though the main workflow succeeded: the row was updated and the Telegram alert was sent.

What the n8n source shows:

  • Test webhooks are single-use. After one test execution, n8n stops listening on the /form-test/… address until you click Execute workflow again.
  • Each Execute workflow click opens a new popup on the test address, which is a fresh, empty form.
  • After a submit, the form page waits for the execution to finish and then shows the Form Ending page. The first test proves this works with Execute Workflow.

Conclusion: this matches test-mode behavior, not a fault in the workflow. We haven't pinpointed the exact step in the browser that produced the blank page.

On a published form (/form/lead-capture-demo), the listener isn't single-use and the editor isn't involved, so it shouldn't happen. To confirm, submit twice from the production address, the second time with the same email. Both should end on “Thank you!”.

In test mode: close the old popup, click Execute workflow again, and submit in the new popup each time.

Lead Capture Kit for n8n: website enquiries saved to Google Sheets, de-duplicated, thanked and sent to your team chat.

Checked against n8n 2.47.3. n8n, Google Sheets, Gmail, Telegram, Slack and Discord are trademarks of their owners; this kit is not affiliated with them. Sample data is fictional.