LeadBind Docs

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, 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

  1. 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.
  2. Grouped into your Inbound Leads list.
  3. Speed to lead fires, if you have it on and it is inside your calling hours. The assistant calls immediately.
  4. 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.

Was this page helpful?