Lead webhook
Push leads in from any form, vendor, or Facebook Lead Ads. One required field.
Push leads into LeadBind from any system that can send an HTTP request. A form builder, a lead vendor, Facebook Lead Ads, or your own code.
Your endpoint
Get your personal URL from Connections → Lead webhook in the app. It looks like:
https://leadbind.org/api/ingest/lead?token=YOUR_TOKEN
POST only. The token identifies your account and is the only credential, so treat the URL like a password. Anyone holding it can create leads in your book. If it leaks, ask support to rotate it.
You can also send the token as a header instead of a query parameter, which keeps it out of server logs:
x-leadbind-token: YOUR_TOKEN
The only required field
phone. That is it. Everything else is optional.
A request without a phone number returns:
{ "error": "phone required" }
with HTTP 400. There is nothing to call otherwise.
Fields it understands
Field names are matched loosely, so most systems work without remapping anything. Case does not matter, and spaces or underscores are interchangeable.
| Meaning | Names accepted |
|---|---|
| Full name | name, full name, fullname, full_name, lead name, contact |
| First name | first name, first_name, firstname, first |
| Last name | last name, last_name, lastname, last |
| Phone (required) | phone, phone number, phone_number, mobile, cell, number |
email, email address, email_address, e-mail |
|
| State | state, st |
| Age | age |
| Date of birth | dob, date of birth, birthday, birthdate |
| Lead source | source, lead source, lead_source, campaign |
| Vendor | vendor, lead vendor, lead_vendor |
| Lead date | lead date, lead_date, received on, date |
Send source. It is optional and it is the field you will wish you had, because it is the only way to tell which campaign is worth the money. See Leads.
If you send dob without age, the age is calculated for you.
Anything else you send is kept
Unrecognized fields are not discarded. They are matched against your industry's own field list where they fit, and preserved as-is where they do not. So a roofer sending roof_age and an insurance agent sending coverage_amount both work without configuration.
Example
curl -X POST "https://leadbind.org/api/ingest/lead?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Maria Lopez",
"phone": "8325550134",
"email": "maria@example.com",
"source": "facebook-roofing-march",
"message": "Roof leaking after the storm"
}'
What happens next
- Deduplicated by phone, matched on the last ten digits within your account. The same person submitting twice updates one lead rather than creating two. This is what stops one person receiving two follow-up sequences.
- Grouped into your Inbound Leads list.
- Speed to lead fires, if you have it on and it is inside your calling hours. The assistant calls immediately.
- Follow-up picks up anyone who did not answer.
Opt-out flags
If your form or vendor marks someone as do-not-call, send it and LeadBind will respect it. Recognized as truthy: dnc, do not call, do_not_call set to 1, true, yes, or y.
Important: Consent is your responsibility, not the webhook's. Pushing a purchased list through this endpoint is the same risk as importing one, and it will start dialing within seconds. Read Consent and opt-outs first.
Facebook Lead Ads
Point your Lead Ads webhook at your URL. Facebook's field names match the aliases above closely enough that most forms need no mapping.
Troubleshooting
400 phone required: no recognized phone field. Check the column name against the table above.
Lead arrives, no call: speed to lead is off, or it is outside your calling window.
Duplicates: different phone formatting will still dedupe, since matching is on the last ten digits. Two genuinely different numbers for one person are two leads; merge them in Leads.
Nothing arrives at all: test with the curl above. If that works, the problem is in the sending system.