Skip to main content

Automation Instructions for n8n (Receive Leads via Webhook)

Connect NoForm AI's lead webhook to an n8n workflow. Add a Webhook trigger, protect it with header authentication, paste the production URL into the Integrations tab, and route new leads to Slack, Google Sheets, or your CRM.

Written by NoForm Team

Applicable for: organization admins

n8n is an automation tool where you build workflows on a canvas to move data between apps, in the same family as Zapier and Make.com, available as a hosted cloud service and as software you run on your own server. This guide connects NoForm AI’s lead webhook to an n8n workflow, so each new lead arrives in n8n within a minute or two of the conversation qualifying, and you can pass it on to the tools your team already uses.

You set the webhook address yourself on the Integrations tab. You do not need to send the address to the NoForm team.

Before you begin

  • An n8n account on n8n Cloud, or a self-hosted n8n that the public internet can reach over https://. NoForm AI rejects any webhook address that starts with http:// or that resolves to a private, internal, or loopback address, so an n8n running only on your laptop or inside a private network cannot receive leads.

  • Admin access to your NoForm AI organization. Members without admin access see the message “You need admin access to view and manage integrations for this organization.”

  • At least one attribute marked as lead-qualifying on the Lead qualification tab of your assistant settings, otherwise no conversation ever becomes a lead.

  • A long, random string to use as your webhook key. You will paste it into both n8n and NoForm AI.

For the full reference on the webhook itself, including every payload field, the URL rules, and the delivery behavior, see the article “Webhook Integration: Push New Leads to Your Own Systems”.

Step 1: Create the workflow and add the Webhook trigger

In n8n, create a new workflow, then select the plus button on the canvas to add the first step. Type “webhook” in the search field and select the Webhook trigger.

Configure the node like this:

  • Set HTTP Method to POST. NoForm AI sends leads as a POST request with a JSON body.

  • Leave the generated Path, or replace it with something you recognize such as noform-leads. n8n permits only one webhook per combination of path and HTTP method, so pick a path no other workflow uses.

  • Leave Respond set to Immediately. n8n then answers the request with a status code and the message “Workflow got started” before the rest of the workflow runs. NoForm AI waits up to 5 seconds for a reply to a test event and up to 10 seconds for a real lead, and it never retries, so an immediate response protects you from a slow step later in the workflow costing you the lead.

Step 2: Protect the webhook with header authentication

Your webhook address is a public web address. Anyone who learns it can post fake leads to it, so add a header check.

In the Webhook node, set Authentication to Header Auth. A “Credential for Header Auth” dropdown appears below it. Open the dropdown and select “Create new credential”. n8n opens a separate credential window, titled “Header Auth account”, on its Connection tab.

Fill in the two fields there. The Name field holds the name of the HTTP header itself, not a label for the credential:

  • Name: enter Authorization.

  • Value: enter the complete header value, which means the word Bearer, a single space, and then your key. For a key of k7Qm2xR9vT4wLp8s, the Value field reads Bearer k7Qm2xR9vT4wLp8s.

The Value field holds the whole header value, not the key on its own. NoForm AI sends the header as Authorization: Bearer <your key>, so leaving out the Bearer prefix in n8n makes the two values disagree and n8n turns the request away.

Leave the rest of the window unchanged. The note about using a “Custom Auth” credential for multiple headers does not apply, because NoForm AI sends one authentication header, and the “Allowed HTTP Request Domains” setting governs outgoing requests from other nodes, not the incoming check on your webhook.

Click Save in the top right corner of the window, then close it. The Webhook node now shows your new credential as selected. Keep the key itself, without the Bearer prefix, for the NoForm AI side in Step 4.

Step 3: Publish the workflow and copy the Production URL

The Webhook node shows two addresses, and mixing them up is the most common reason a first test never arrives.

  • The Test URL accepts requests only while you have selected “Listen for test event”, and it stops listening after 120 seconds. Data that arrives on it appears in the editor.

  • The Production URL accepts requests only after you publish the workflow, and it keeps working until you unpublish. Data that arrives on it does not appear in the editor, and you review it on the Executions tab instead.

NoForm AI sends leads at any hour, so use the Production URL. Select Publish in the canvas header (this button was labeled Activate in n8n versions before 2.0), then open the Webhook node, switch to the Production URL, and copy it.

Step 4: Save the address and key in NoForm AI

Click your organization name in the sidebar of the NoForm AI dashboard, then click “Manage organization”. Select the Integrations tab and find the Webhook card, described as “Receive a POST request whenever a visitor becomes a lead.”

The organization menu open with Manage organization highlighted
The organization settings window's left menu with the Integrations tab highlighted, next to Members and Settings

Paste the n8n Production URL into the “Webhook URL” field. Paste your key, without the Bearer prefix, into the “API key” field. Click Save and confirm the green status line reading “Webhook settings updated.”

The Webhook card on the Integrations tab, with the Webhook URL and API key fields and the Send test event button

If you leave the API key field empty, NoForm AI still sends an Authorization header and its value is the literal text Bearer undefined, which will not match your credential.

Step 5: Send a test event and confirm it arrived

The “Send test event” button on the Webhook card stays disabled until an address is saved, so save first, then click it. NoForm AI posts a sample lead using the same format, the same Authorization header, and the same address a real lead uses.

The Webhook card with the Send test event button highlighted next to Save

Read the status line under the card. “Your endpoint received the test event (HTTP 200).” means n8n accepted the request. Then open the Executions tab in n8n and confirm a new execution of your workflow appears, with the sample lead in the Webhook node’s output. The sample payload carries "test": true alongside the normal fields, and uses chatId 0 with the sample attributes fullName and email.

Step 6: Put the sample payload into the editor

Production executions do not show their data in the workflow editor, so copy the sample into the editor once and build the rest of the workflow against it.

Open the execution from the Executions tab, select the Webhook node, switch its OUTPUT view to JSON, and copy the payload. Go back to the workflow editor, open the Webhook node, switch the OUTPUT view to JSON, select Edit, paste the payload, and select Save. n8n saves the data and pins it, showing the banner “This data is pinned”. Every field is now available to the nodes you add next.

Pinned data serves the editor only and is not used in production executions, so real leads still flow through untouched. Select Unpin in the banner when you no longer need the sample.

Step 7: Send the lead where your team will see it

Add a node after the Webhook trigger and map the payload fields into it. A Slack message is a good first example. Search for Slack, choose the action that sends a message to a channel, connect your Slack account, pick the channel, and write the message text using expressions that read from the payload:

New NoForm lead: {{ $json.attributes.fullName }} ({{ $json.attributes.email }})
Source: {{ $json.source }}
Page: {{ $json.originUrl }}
Summary: {{ $json.chatSummary }}

The same field names work anywhere in the workflow. For a spreadsheet row, add a Google Sheets node with the action that appends a row, and map attributes.email, attributes.fullName, chatSummary, source, country, and convertedToLeadAt to your columns. For a CRM, add that CRM’s node and map the same fields to its contact fields.

Two payload details shape how you build this part:

  • attributes is an object whose keys follow the attributes you configured for your assistant, in camelCase. An attribute named “Company Name” arrives as attributes.companyName.

  • test is present and set to true only on events from the “Send test event” button. To stop test events from reaching your CRM, add an If node after the Webhook trigger that checks {{ $json.test }} and routes those runs to a dead end.

Step 8: Publish again after every change

Edits in n8n stay in a draft until you publish them, so the nodes you added in Step 7 do not run for real leads until you select Publish again. Do this whenever you change the workflow, then click “Send test event” in NoForm AI once more and check the result in the Executions tab.

Troubleshooting

  • The test event says it was received, but nothing appears in n8n. Check that you pasted the Production URL and not the Test URL. The Test URL answers only during the 120 seconds after you select “Listen for test event”, and it can return a success code to NoForm AI while nothing is stored.

  • NoForm AI reports “We couldn’t reach your endpoint.” The workflow is most likely unpublished, or your self-hosted n8n is not reachable from the public internet. Publish the workflow, then confirm you can open the Production URL host from outside your network.

  • NoForm AI reports “Your endpoint didn’t respond within 5 seconds.” Set the Webhook node’s Respond option to Immediately so n8n answers before running the rest of the workflow.

  • NoForm AI reports an HTTP 403 or 401. The Authorization values do not match. Click the eye icon on the API key field in NoForm AI to reveal the saved key, then confirm the n8n credential Value is exactly Bearer followed by that same key, with one space and no quotation marks.

  • NoForm AI reports “Webhook URL must use https://”. Only addresses starting with https:// are accepted. n8n Cloud addresses already use HTTPS. A self-hosted n8n needs a valid certificate and a public address before NoForm AI will store the URL.

  • Redirect codes such as 301 or 302 appear in the status line. NoForm AI does not follow redirects. Point the Webhook URL at the final address.

  • Real leads never arrive although the test event works. No conversation has qualified as a lead yet. Open the Lead qualification tab of your assistant settings, confirm at least one attribute is marked as lead-qualifying, and check your dashboard for leads recorded since you saved the webhook.

Frequently Asked Questions

Do I need to send my n8n webhook address to the NoForm team?

You do not need to send it to anyone. Paste the Production URL into the “Webhook URL” field on the Integrations tab yourself and click Save, and the connection is live.

Can I use a self-hosted n8n instead of n8n Cloud?

You can use a self-hosted n8n as long as its webhook address is reachable from the public internet over https://. NoForm AI rejects addresses on private, internal, or loopback networks, so a local-only installation cannot receive leads.

What happens to a lead if my workflow is unpublished at that moment?

NoForm AI sends each lead once and does not retry, so that lead does not reach n8n later. The lead itself is safe: it still appears in your NoForm AI dashboard and still triggers your lead notification email, and only the copy sent to n8n is lost.

How do I tell a test event apart from a real lead inside n8n?

Test events carry the field test set to true, use chatId 0, and contain the sample attributes fullName and email. Add an If node that checks {{ $json.test }} if you want test runs handled differently from real leads.

Will pinned sample data interfere with real leads?

Pinned data applies to the workflow editor only and is not used in production executions, so real leads flow through your nodes with their own values. Select Unpin in the “This data is pinned” banner once you have finished mapping fields.

Can I change the key later?

Paste the new key into the “API key” field in NoForm AI, click Save, and update the n8n credential Value to Bearer plus the new key at the same time. Leads sent between the two updates fail the header check and are not resent.

Benefits

  • Each new lead reaches Slack, a spreadsheet, or your CRM within a minute or two of the visitor sharing a qualifying detail, with no exports and no polling.

  • You control the connection end to end, since you copy the address from n8n and save it on the Integrations tab without waiting on a support request.

  • The header check gives n8n a way to reject any request that did not come from NoForm AI.

  • One workflow can fan the same lead out to several destinations, because every node after the Webhook trigger reads the same payload fields.

  • A broken or unpublished workflow never costs you the lead itself, which still lands in your dashboard and in your notification email.

Did this answer your question?