Lead webhook
Create a webhook address through which forms, ads or automations send enquiries as leads into a project.
With the lead webhook, another system sends new enquiries to Leadmode, for example a website form, a Meta or Google ad, or a workflow in Make, Zapier or n8n. In the chosen project this becomes a lead with the task "New lead – call". This page describes how to use it. Technical details on format, responses and errors are under Webhooks.
You find the management under Settings → Integrations → More integrations → Webhooks. The tile General lead intake leads to "Lead intake (webhook)".
You need the CRM module and access to "More integrations", that is the right "Lead sources and integrations" (admins always have it). See Roles and permissions.
Create an address
Click Create first address (later Create another address).
Give it a name, for example "Landing page autumn", and choose the project in which the leads land.
Choose the source: website form, Meta Ads (Facebook, Instagram), Google Ads, LinkedIn, webinar, referral, warm enquiry or other. The origin class (cold, warm, website) is set to match, and you can change it.
Click Create.
The card of the address shows the project, source, origin, the number of entries and the time of the last entry.
Address and secret
The field Webhook address (POST) contains the complete address your other system calls. It contains a secret token: anyone who knows the address can deliver leads. Pass it only to systems that are meant to send leads. Click Copy to put it on the clipboard.
- Generate new address replaces the token. The previous address stops working immediately. Enter the new one in all connected systems.
- The switch Active / Paused stops the address without deleting it. A test lead can only be sent while the address is active.
- Delete removes the address. Systems that keep sending then receive an error. Leads already created remain.
Setup guide
Under the address, a block with three tabs helps you: Make · Zapier · n8n, Website form and cURL. Each shows a ready-made example with your address, which you take over with "Copy instructions". With Copy guide for AI you create a finished text with address, fields, example and responses, which you give to your AI or your automation tool.
You may send JSON or a normal form. Common field names such as name, first name, last name, email, phone, company, message and utm_* are recognised by Leadmode itself. It also understands the format of Meta Lead Ads. Email or phone is required, otherwise the enquiry is rejected.
Testing
Click Send test lead. Leadmode creates a test lead in the project. You find it there under "Test lead webhook". Under Latest receipts you see the latest enquiries with time, the recognised contact details and a result:
| Result | Meaning |
|---|---|
| New lead | A contact with a task was created. |
| Repeat enquiry | A known person has got in touch again. |
| Repeat enquiry (task already open) | As above, the task was already open. |
| Rejected | The enquiry was not accepted. The reason is shown below it. |
Sending the same enquiry twice does not create a second lead.
Assign fields
If Leadmode does not recognise a field, it appears under Unmapped fields in the latest receipt. For each field, choose a target or "Do not use". The possible targets are name, first name, last name, company, email, phone, position, website, street, postcode, city, message, "Own lead ID" and the UTM details. The assignment applies to all future entries of this address.
Webhook for a landing page or funnel
Each landing page and each funnel has its own address. You create it either in the overview of the webhooks (briefly "Create" in the list of the area) or on the page under Manage → External connection (webhook). Responses there arrive as leads in the project, like responses of the page, and count in the analysis of the page. In this case the AI guide also contains the questions.
Have registrations reported from outside
A portal or partner system can report that a lead has really registered. Leadmode matches the report to a lead in the project and records the registration there. Anything that does not match clearly goes to a review list. You do not use an address from the lead intake above for this, but a separate intake for each project.
Only the project lead and admins can set up, review and assign. The registration as completion must be set up in the project first. Otherwise the page shows a note and you cannot create an address.
Set up an intake
Open Webhooks → Incoming → Registrations, choose the project, enter a name, for example "Partner portal", and click New address. The card shows the number of events, the time of the last event and the address. Copy address copies it.
- The address is secret. Anyone who knows it can report registrations. Renew replaces it, and the old one stops working immediately.
- The switch pauses the intake without deleting it.
- Delete only works as long as no event has arrived. Otherwise turn the intake off.
What your portal sends
Your system calls the address with a POST. It sends one event as JSON, or several as a list under events (at most 100 per call). Under Fields and example you find the fields and can copy the example.
event_id(required): a fixed identifier of the registration in your system.occurred_at(required): time with time zone, not in the future and not older than five years.stage(required):prefor pre-registration orfullfor full registration. A request, a sent link or a link click is not a registration and is rejected.lead_ref,email,phone,company,location(optional): hints for finding the lead.lead_refis the lead's identifier in Leadmode or the origin key from an import.source,campaign(optional): source and campaign.
{
"event_id": "R-10042",
"occurred_at": "2026-10-28T09:30:00Z",
"stage": "pre",
"lead_ref": "L-5521",
"email": "erika@beispiel.example",
"company": "Beispiel AG",
"source": "portal",
"campaign": "herbst"
}Instead of a call, you can also hand in events later as a file: click Import file on the intake and choose a CSV file with a header row or a JSON file with up to 500 rows. Afterwards you see how many were recorded, already known, to review, duplicates or rejected. This is not possible while the intake is paused.
What happens to an event
- Every event counts exactly once. If the same
event_idis sent again, nothing changes. It only shows up as "reported twice or more". - Matching without guessing. If
lead_refmatches exactly one lead, that lead is used. Otherwise it takes an email or phone number and the company, with exactly one match. The location is only displayed and not used for matching. A new lead is never created. - A pre-registration sets the lead to "pre-registered", a full registration to "company verified". If that step has already been reached, also by team members, the event shows as "Already known" and nothing is counted twice.
- Nobody is credited for the result. The registration counts as a success of the company. The lead does not get a new owner.
- Open outreach tasks such as a callback or info mail end with the registration. Open questions such as "reply to email" stay.
To review
Events that cannot be matched safely appear under To review, with the time, the details sent along and the reason:
- Not enough details to find a lead.
- No lead found.
- Several leads match.
- A match, but without a matching company.
- Recording on the lead was not possible.
For matching leads you see Assign: name. With Choose another lead you search for one yourself. Assigning records the registration on the lead once. Discard removes the event from the list, and it does not count. Below, Latest shows the most recent events with their result: Recorded, Already known or Discarded. The page updates by itself when events arrive or are processed.
Your AI can also view, assign or discard the events of a project. It cannot set up intakes or hand out addresses; that is only possible here in the interface.
Limits
- Each address belongs to exactly one project.
- Without an email address and without a phone number no enquiry is accepted.
- Anyone who knows the address can deliver leads. Renew it if it has been passed on unintentionally.

