English
Start free

Lead webhooks

The mortgage lead webhook: every number, as JSON

One POST per lead, with the borrower's numbers and the campaign that brought them, sent wherever you work leads.

Free plan, no card. Paid plans include a 14-day trial.

embed.html
POST https://your-endpoint.example/hook
Content-Type: application/json

{ "event": "calculator.lead",
  "calculator": "fha-loan",
  "contact": { "email": "…", "phone": "…" },
  "submission": { "inputs": { … }, "results": { … } },
  "utm_source": "google" }

A PrequalFunnel lead webhook sends an HTTP POST with a JSON body to a URL you choose each time a borrower submits a calculator's lead form. The body holds the contact, consent, every input and result, the calculator, a timestamp and campaign attribution. Webhooks are on the Producer and Brokerage plans.

Key takeaways

  • One JSON POST per lead to HighLevel, Zapier, Make or your own endpoint.
  • Includes inputs, results, consent, page URL, nested attribution and flat utm_* and click-ID fields.
  • Per-calculator webhooks override the account-wide URL, so you can route by loan type.
  • The lead is saved in your CRM before delivery; a failed webhook never loses it.

01

What is a mortgage lead webhook?

It is an automatic message from PrequalFunnel to your system, sent the moment a borrower submits a lead form inside a calculator. Instead of you copying details out of an email alert, your CRM or automation tool receives a structured JSON record it can act on immediately. The lead webhook glossary entry covers the general idea; this page covers PrequalFunnel's version.

The order of operations is deliberate. First the lead is saved as a contact in your built-in CRM, de-duplicated by email and then phone. Then the webhook fires. If your endpoint is down, slow or misconfigured, the borrower's record and numbers are still there.

You set one account-wide webhook URL and can override it per calculator. Webhook URLs live on the server only; they are never included in the calculator configuration that loads in a visitor's browser.

What does the webhook payload look like?

Here is an example for an FHA calculator lead from a returning visitor who first arrived from a Google ad and came back from Facebook. Field names match what PrequalFunnel sends; the values are illustrative, and the keys inside inputs and results vary by calculator.

payload.json
{
  "event": "calculator_lead",
  "calculator": "fha-loan",
  "is_new_contact": true,
  "contact": {
    "name": "Maria Lopez",
    "email": "maria.lopez@example.com",
    "phone": "+15125550143",
    "consent": true
  },
  "submission": {
    "inputs": {
      "home_price": 385000,
      "down_payment_percent": 3.5,
      "interest_rate": 6.5,
      "loan_term_years": 30,
      "property_tax_yearly": 6900,
      "home_insurance_yearly": 1800,
      "credit_score_range": "640-679"
    },
    "results": {
      "base_loan_amount": 371525,
      "upfront_mip": 6502,
      "monthly_principal_interest": 2389,
      "monthly_mip": 170,
      "monthly_piti": 3134
    }
  },
  "submitted_at": "2026-10-17T15:42:08Z",
  "attribution": {
    "first": {
      "utm_source": "google",
      "utm_medium": "cpc",
      "utm_campaign": "fha_austin",
      "gclid": "Cj0KCQjw-example",
      "landing_page": "https://www.yourbrokerage.com/fha-loans/",
      "referrer": "https://www.google.com/",
      "at": "2026-10-15T21:10:33Z"
    },
    "last": {
      "utm_source": "facebook",
      "utm_medium": "paid_social",
      "utm_campaign": "first_time_buyers",
      "fbclid": "IwAR-example",
      "landing_page": "https://www.yourbrokerage.com/first-time-buyers/",
      "referrer": "https://m.facebook.com/",
      "at": "2026-10-17T15:31:02Z"
    }
  },
  "utm_source": "facebook",
  "utm_medium": "paid_social",
  "utm_campaign": "first_time_buyers",
  "utm_term": "",
  "utm_content": "carousel_v2",
  "gclid": "",
  "fbclid": "IwAR-example",
  "msclkid": "",
  "landing_page": "https://www.yourbrokerage.com/first-time-buyers/",
  "referrer": "https://m.facebook.com/",
  "first_touch_source": "google / cpc / fha_austin"
}

What does each field mean?

Top-level keys are stable across calculators, so you can map them once. The flat attribution fields repeat the last touch for tools that can't read nested objects.

Empty strings mean the value was not present for that visit.
FieldContainsTypical use
eventThe event name for a calculator leadFilter in a shared endpoint
calculatorThe calculator slug, e.g. fha-loan or dtiRoute or tag by intent
is_new_contacttrue for a first-time contact, false for a returning oneDifferent first message
contactName, email, phone and consentCreate or update the CRM contact
submissionEvery input the borrower entered and every result they sawCustom fields and talking points
submitted_atISO 8601 timestampSpeed-to-lead timing
attributionFirst and last touch objectsFull campaign history
utm_*, gclid, fbclid, msclkidFlat campaign and click-ID fieldsAd reporting without parsing
landing_page, referrer, first_touch_sourceEntry page, referring site, first-touch summarySource reporting

How do LOs usually route webhook leads?

Most setups start with one URL and grow into per-calculator routing once lead volume justifies separate follow-up.

One workflow for everything

A single account-wide webhook into HighLevel with a branch on the calculator field.

Per loan type

Per-calculator webhooks send VA, FHA and refinance leads to separate workflows with their own scripts.

Via an automation tool

Point the webhook at Zapier or Make and fan out to a sheet, a team chat and your CRM.

Straight to your own endpoint

A developer receives the POST, validates it and writes it into an in-house database or LOS-adjacent system.

Treat the payload as personal financial data

The JSON contains a borrower's contact details, income, debts and consent. Use HTTPS endpoints only, limit who can see automation logs, and avoid sending the full payload to tools that don't need it, such as a public team channel. Ask your compliance team how long these records should be kept.

How do you set up a lead webhook?

It takes a receiving URL, one paste and a test submission.

  1. Create the receiving URL

    In HighLevel, Zapier, Make or your own server, create a webhook catcher and copy its URL.

  2. Add it in PrequalFunnel

    Paste it as the account-wide webhook or on a specific calculator. Producer or Brokerage plan required.

  3. Submit a test lead

    Fill in the calculator's lead form yourself so the receiver can see the real field structure.

  4. Map and switch on

    Map contact, inputs, results and utm fields in the receiving tool, then turn on the follow-up steps.

FAQ · 9 questions

Questions loan officers ask

Which plans include lead webhooks?

Producer and Brokerage. The free Originator plan captures leads into the built-in CRM and emails you each one, but does not POST them to other systems. Paid plans have a 14-day free trial on monthly and yearly billing.

Is the webhook sent as JSON or form data?

JSON, in the body of an HTTP POST. Nested objects hold the contact, submission and attribution, and flat fields repeat the key campaign values for tools that only read top-level keys.

Does a failed webhook lose the lead?

No. The contact is saved in PrequalFunnel's CRM before the webhook is sent, so the borrower's details and numbers remain available even if your endpoint fails.

Can each calculator have its own webhook?

Yes. A per-calculator webhook overrides the account-wide URL for that calculator only. Others keep using the account-wide one.

Are the input names the same for every calculator?

No. Top-level keys are the same everywhere, but submission inputs and results reflect each calculator's fields. Send a test lead from each calculator you route separately and map from that sample.

Can a visitor see my webhook URL?

No. Webhook URLs are stored server-side and never included in the public calculator configuration a browser loads.

Is the borrower's consent included?

Yes. The contact object carries the consent the borrower gave on the form, so your automation can check it before texting or calling.

What is first_touch_source?

A one-line summary of how the contact first found you, such as google / cpc / campaign name. It stays the same for a returning borrower, while the flat utm fields describe the latest visit.

Does a returning borrower trigger the webhook again?

Yes. Each new submission sends a webhook, with is_new_contact set to false, and the new calculation is added to the contact's history in your CRM.

PrequalFunnel

Your next borrower is already on your site.

Give them the numbers they came for, and get the lead with those numbers attached.

Free forever on Originator. Upgrade when you want webhooks and your own brand. 14-day free trial on monthly and yearly. Cancel before it ends and you pay nothing.