English
Start free
HighLevel & automation

Build a HighLevel Pre-Qual Workflow From a Calculator Webhook

Build a HighLevel workflow with an Inbound Webhook trigger: map calculator lead data, tag by calculator, open a pipeline stage and alert the LO.

Key takeaways

  • A HighLevel workflow with an Inbound Webhook trigger can receive every PrequalFunnel lead as JSON, including the borrower's inputs, results and traffic source.
  • Map the payload once with a real test lead, then create or update the contact, tag it by calculator and open an opportunity in a 'Pre-qual started' stage.
  • Branch on the consent fields before any SMS or email step, and keep the first call with a person.
  • A failed webhook never loses the lead: it is still saved in the PrequalFunnel CRM, so you can fix the workflow and carry on.

You can send every calculator lead straight into HighLevel by creating a workflow with an Inbound Webhook trigger, pointing PrequalFunnel's lead webhook at it, and mapping the JSON fields to a contact, tags, a pipeline opportunity and notifications. This guide walks through that build step by step, with an illustrative payload, consent-aware messaging, testing and a troubleshooting table.

A note on HighLevel's interface. HighLevel changes its menus and labels regularly. The steps below describe the interface generically as of October 2026; if a button has moved or been renamed, the concepts (trigger, mapping, actions) are the same. Lead webhooks are available on the Producer and Brokerage plans; see pricing for current details.

What does the finished workflow do?

It turns one HTTP request into a ready-to-work lead in under a few seconds. When a borrower submits the form inside a PrequalFunnel calculator, the workflow:

  1. Receives the lead as JSON through the Inbound Webhook trigger
  2. Creates the contact, or updates it if the borrower already exists
  3. Stores the key numbers (price, payment, DTI) and attribution in custom fields
  4. Tags the contact by calculator (for example calc-fha-loan)
  5. Creates an opportunity in a pipeline stage called "Pre-qual started"
  6. Sends a consent-aware confirmation by email, and by SMS only where text consent exists
  7. Assigns the contact to a loan officer
  8. Notifies that LO immediately so the first call happens fast

The speed side of this is covered in the speed-to-lead playbook; this guide is the plumbing.

What does the webhook payload look like?

PrequalFunnel posts each lead as a JSON object containing the event, the calculator, the contact, the submission (inputs and results), a timestamp, an attribution block and flat utm_*, gclid, fbclid, msclkid, landing_page and referrer fields. The flat fields exist so tools like HighLevel can map them without digging into nested objects.

The example below is illustrative: the values are invented and the exact key names and formats in your account are shown when you send a test lead. Use your own test delivery as the source of truth when mapping.

{
  "event": "lead.created",
  "timestamp": "2026-10-08T14:32:05Z",
  "calculator": {
    "slug": "affordability",
    "name": "Affordability Calculator"
  },
  "contact": {
    "first_name": "Maria",
    "last_name": "Example",
    "email": "[email protected]",
    "phone": "+15555550123",
    "consent": {
      "email": true,
      "sms": true,
      "calls": true,
      "text": "I agree to be contacted by [Company] by phone, text and email about my inquiry."
    }
  },
  "submission": {
    "page_url": "https://www.yourbrokerage.com/how-much-house/",
    "inputs": {
      "annual_household_income": 96000,
      "down_payment": 25000,
      "interest_rate": 6.75,
      "loan_term": 30,
      "car_payments": 650,
      "student_loans": 550,
      "credit_cards": 400
    },
    "results": {
      "maximum_home_price": 240000,
      "estimated_monthly_payment": 1840,
      "debt_to_income_used": 43,
      "front_end_dti": 23
    }
  },
  "attribution": {
    "source": "google",
    "medium": "cpc",
    "campaign": "fall-buyers",
    "landing_page": "https://www.yourbrokerage.com/how-much-house/?utm_source=google",
    "referrer": "https://www.google.com/"
  },
  "utm_source": "google",
  "utm_medium": "cpc",
  "utm_campaign": "fall-buyers",
  "utm_term": "how much house can i afford",
  "utm_content": "ad-a",
  "gclid": "EXAMPLE_GCLID",
  "fbclid": "",
  "msclkid": "",
  "landing_page": "https://www.yourbrokerage.com/how-much-house/?utm_source=google",
  "referrer": "https://www.google.com/"
}

Every input the borrower entered and every result they saw are in submission, so the LO never has to ask what they were looking at. See the webhooks integration page and the lead webhook glossary entry for the general model.

How do you build the workflow, step by step?

Create the workflow first, because PrequalFunnel needs the trigger's URL. Then send a test lead so HighLevel has a sample to map from.

Step 1: Prepare custom fields, tags and the pipeline

Do this before opening the workflow builder so the fields exist when you map.

  1. Custom fields (contact level): Calculator, Pre-qual price, Pre-qual payment, Back-end DTI, Down payment, Rate entered, Page URL, utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, Landing page, Referrer, Lead consent text.
  2. Tags: one per calculator you embed, in a consistent pattern such as calc-affordability, calc-fha-loan, calc-dti, plus a general source-prequalfunnel.
  3. Pipeline: in your opportunities or pipelines settings, add (or reuse) a pipeline with a first stage named Pre-qual started, followed by stages that match your process, for example Contacted, Application sent, Pre-approved.

Step 2: Create the workflow with an Inbound Webhook trigger

  1. Open the automation area of your HighLevel sub-account and create a new workflow from scratch.
  2. Name it clearly, for example "PrequalFunnel lead intake".
  3. Add a trigger and choose Inbound Webhook. HighLevel generates a unique webhook URL for this trigger.
  4. Copy the URL. Treat it like a password: anyone who has it can post data into your workflow.
  5. Save the trigger. Do not publish the workflow yet.

Step 3: Point PrequalFunnel at the URL and send a test lead

  1. In PrequalFunnel, open the lead webhook settings and paste the HighLevel URL. You can set one URL for all calculators, or per-calculator URLs if you want FHA leads, for example, to go to a separate workflow.
  2. Open a page where the calculator is embedded (or the calculator's direct link), enter realistic numbers, and submit the lead form with your own test name and email.
  3. Back in HighLevel, use the trigger's option to fetch or select the sample request it just received. The workflow builder now knows the payload's structure.

Step 4: Create or update the contact

Add a create-or-update contact action and map:

HighLevel field Payload field (illustrative path)
First name contact.first_name
Last name contact.last_name
Email contact.email
Phone contact.phone
Calculator (custom) calculator.name
Pre-qual price (custom) the price result for that calculator, e.g. submission.results.maximum_home_price
Pre-qual payment (custom) the payment result, e.g. submission.results.estimated_monthly_payment
Back-end DTI (custom) submission.results.debt_to_income_used where present
Page URL (custom) submission.page_url
utm_source … utm_content, gclid, landing page, referrer the flat fields of the same names
Lead consent text (custom) contact.consent.text

Different calculators return different result names, so a price field that exists on the affordability calculator may be called something else, or not exist, on the DTI calculator. Either map per-calculator in branches, or store the whole results object in a large text field and map only the common ones.

Step 5: Tag by calculator

Add an add-tag action. Either add a branch per calculator slug (if calculator.slug equals fha-loan, add calc-fha-loan), or, if your HighLevel account allows dynamic values in tag names, build the tag from the slug directly. Also add source-prequalfunnel to every lead.

Tags let you run different follow-up for each program: the FHA loan calculator lead hears about down payment and mortgage insurance, while a DTI calculator lead hears about debts first. The guide to reading a calculator lead explains why that matters.

Step 6: Add the opportunity to "Pre-qual started"

Add a create-or-update opportunity action: choose your pipeline, the Pre-qual started stage, name the opportunity with the contact's name and calculator, and set the monetary value to the price result if you track pipeline value. Set the status to open.

Branch before any message. An if/else condition on the consent fields keeps every channel tied to what the borrower agreed to.

  1. If email consent is true (or you have another lawful basis your compliance team approves): send a confirmation email that restates the borrower's numbers, includes your NMLS ID, licensing details, Equal Housing Opportunity statement and an unsubscribe method. Commercial email is governed by the CAN-SPAM Act (2003), enforced by the FTC.
  2. If SMS consent is true: send a short text that names your company and includes opt-out language, and only within permitted hours. The Telephone Consumer Protection Act (1991) and the FCC's rules restrict telemarketing contact before 8 a.m. and after 9 p.m. at the recipient's location, and some states are stricter. A wait-until step or business-hours window in the workflow helps here.
  3. If SMS consent is false: skip the text entirely. Do not send "one quick text" to ask for consent.

See TCPA consent for background, and check consent wording and automation with your compliance team or counsel. This is general information, not legal advice.

Step 8: Assign to a loan officer

Add an assign-user action. A solo LO assigns to themselves; a team can use round-robin, or branch by calculator (a jumbo specialist for large loan amounts, a bilingual LO for leads that used the calculator in Spanish if your payload or page URL indicates the language). Route on business criteria only, never on anything that could proxy for a protected class.

Step 9: Notify the LO

Add an internal notification: a push notification to the assigned user in the mobile app, an internal SMS to the LO's own phone, or an email. Include the borrower's name, calculator, price, payment, DTI and a link to the contact. The point is a first call within minutes, made by a person who already has the numbers.

Step 10: Publish

Review each step, then publish. From now on, every lead posts to HighLevel as it arrives.

How do you test the webhook properly?

Submit real test leads through the live embed, one per scenario, and check each outcome in HighLevel. A test checklist:

  1. New borrower, all consents: contact created, custom fields filled, tag added, opportunity in "Pre-qual started", email and SMS sent, LO notified.
  2. Same borrower again with new numbers: contact updated (not duplicated), custom fields refreshed, opportunity not duplicated if your settings prevent it.
  3. Email only, no SMS consent: no text sent.
  4. A second calculator: correct tag and correct price field mapping.
  5. UTM link: visit the calculator page with ?utm_source=test&utm_medium=test&utm_campaign=test, submit, and confirm the fields arrive.
  6. After hours: confirm the text waits for permitted hours.

Check the workflow's execution history in HighLevel for each run; it shows which branch fired and any failed action. Delete or tag your test contacts afterwards so they do not distort reporting.

What should you do when something goes wrong?

Start with the workflow's execution history, then compare the incoming payload with your mappings. Most problems are mapping or consent-branch issues, not delivery failures.

Symptom Likely cause Fix
Workflow never fires Workflow not published, wrong URL pasted, or webhook not enabled for that calculator Publish; re-copy the trigger URL; check per-calculator webhook settings
Contact created with blank fields Mapping done before a sample was received, or key names differ from the illustrative ones Re-fetch a sample request and re-map from the real payload
Duplicate contacts Create step not matching on email or phone; phone format differs Use create-or-update; keep phone in a consistent format
Price field empty for some leads That calculator returns a differently named result Map per calculator in branches, or store the full results
SMS not sent Consent branch false, outside allowed hours, or messaging not set up on the sub-account Check the consent value in the payload; check phone/messaging setup
SMS sent without consent Branch condition wrong or missing Fix the condition immediately; review affected contacts with compliance
Duplicate opportunities Create-opportunity step runs on every resubmission Use update-if-exists or check for an existing open opportunity first
UTM fields empty Visitor arrived without UTM tags, or link tags stripped by a redirect Test with a tagged URL; check redirects keep the query string
LO not notified Notification sent to the wrong user, or push notifications disabled Check assignment step order and the user's notification settings
Leads missing in HighLevel HighLevel or the network was unavailable at that moment Leads are still in the PrequalFunnel CRM; add them manually and check the run history

Do you still need the PrequalFunnel CRM if you use HighLevel?

Yes, as the system of record for the calculator data. Every lead is saved in the built-in CRM with its full calculation history, whether or not the webhook succeeds, and you still get the email alert. HighLevel then becomes the place where your follow-up runs. If you want both in one view, keep the most useful numbers in HighLevel custom fields as above and open PrequalFunnel when you need the detailed history.

Where can you go from here?

Once the intake workflow runs, add the parts that suit your business: a 14-day follow-up workflow triggered by the "Pre-qual started" stage, a separate workflow for refinance calculators, or a report on leads by utm_source. The HighLevel integration page covers embedding the calculators in HighLevel funnels and websites, and HighLevel users shows how the pieces fit together. If you would rather route through Zapier or Make instead, see the Zapier and Make integration.

See pricing

Keep reading

FAQ · 8 questions

Questions loan officers ask

Which PrequalFunnel plans include lead webhooks?

Lead webhooks are included on the Producer and Brokerage plans. The free Originator plan captures leads into the built-in CRM and sends an email alert for each one, but does not post them to HighLevel or other URLs. See the pricing page for current plan details.

Do I need Zapier or Make to get leads into HighLevel?

No. HighLevel's Inbound Webhook trigger accepts the JSON directly, so the lead can go straight from the calculator to the workflow. Zapier or Make are useful if you also want to send the same lead somewhere else, such as a spreadsheet or another CRM.

Can different calculators go to different HighLevel workflows?

Yes. PrequalFunnel supports per-calculator webhooks, so you can send, for example, FHA calculator leads to one workflow URL and refinance leads to another. Alternatively, use one workflow and branch on the calculator field.

What happens if HighLevel is down when a lead arrives?

The lead is still saved in the PrequalFunnel CRM with all its numbers, and you still receive the email alert. A webhook failure never loses the lead. Once the workflow is working again, you can add any missed contacts from the CRM.

Will a returning borrower create a duplicate contact in HighLevel?

Not if your create or update step matches on email and phone, which is HighLevel's usual behaviour when those fields are mapped. PrequalFunnel also de-duplicates on its side by email, then phone, and appends the new calculation to the borrower's history.

Is the Inbound Webhook trigger free in HighLevel?

That depends on your HighLevel account. Some workflow triggers and actions are classed as premium and may carry usage charges. Check your HighLevel billing settings or HighLevel support before you go live.

Can I send an SMS automatically to every new lead?

Only to borrowers who gave clear, specific consent to receive texts, and only within permitted hours. Branch on the consent fields in the payload, and confirm your consent wording and automation rules with your compliance team or counsel.

Where do the UTM fields go in HighLevel?

Map them to contact custom fields (for example utm_source, utm_medium, utm_campaign) or to the opportunity. The payload carries them as flat fields, so they map directly without any parsing.

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.