A Jobber client and request
Find or create the client, then create a request with the range in the title.
Measured Bid posts each new lead to a webhook URL as JSON. In Zapier, a Catch Hook trigger receives it, and your Zap sends it on to your CRM, a spreadsheet, a text to your crew or anywhere else Zapier reaches.
You need a Measured Bid widget and a paid Zapier plan.
In Zapier, create a Zap. For the trigger, pick Webhooks by Zapier, then the Catch Hook event. Leave Pick off a Child Key empty.
On the trigger's Test tab, copy the URL Zapier gives you.
Open your widget's settings, find New-lead alerts and paste the URL into Webhook. Save. Each widget has its own webhook, so repeat this for each one.
Open your homeowner link, get a price for an address and send the form. It counts as one estimate. Leads your team saves from New estimate are sent too.
Back in Zapier, click Test trigger and pick the lead. Every field below shows up, ready to map.
Add the steps you want, such as a CRM contact, a Google Sheets row or a message to your crew. Then publish the Zap.
A POST with a application/json body. Fields with no value are left out, except the ones that can be null.
The webhook carries the contact details, the range, the trade and the source. The measured quantities are in the new-lead email. The lead in your dashboard has those, plus the homeowner's answers, the line-item dollars and the map of what was measured.
{
"leadId": "5b0e2c1a-8f3d-4c7e-9a61-2d4f7b8c9e10",
"brand": "sierra-gutter-co",
"brandName": "Sierra Gutter Co.",
"service": "gutters",
"guardProduct": {
"id": "sample-mesh",
"name": "Micro-mesh aluminum"
},
"quoteId": "9c4d7e2f-1a3b-4c5d-8e6f-7a8b9c0d1e2f",
"formattedAddress": "412 Sample Ridge Ct, Roseville, CA 95661, USA",
"name": "Jordan Example",
"phone": "(916) 555-0114",
"email": "jordan@example.com",
"preferredTime": "Weekday mornings",
"estimateLow": 1500,
"estimateHigh": 2025,
"smsConsent": false,
"smsConsentText": null,
"utm": {
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "sample-guards",
"gclid": "sample-click",
"referrer": "https://example.com/gutter-guards"
},
"property": {
"source": "rentcast",
"stories": 1,
"yearBuilt": 1998,
"propertyType": "single_family"
},
"receivedAt": "2026-09-25T16:42:07.000Z",
"firstName": "Jordan",
"lastName": "Example",
"street": "412 Sample Ridge Ct",
"city": "Roseville",
"state": "CA",
"zip": "95661"
}| Field | Type | What it holds |
|---|---|---|
| leadId | string or null | The lead's ID in Measured Bid. Null only if the lead could not be saved; the rest still arrives. |
| brand | string | Your widget's ID. Each widget has its own webhook, so one account can feed several CRMs. |
| brandName | string | The business name shown on the widget. |
| service | "gutters" | "painting" | "siding" | "roofing" | "lighting" | "holiday" | "washing" | The trade the widget prices. |
| guardProduct | object | The guard product id and name saved with the estimate, when a named guard was quoted. |
| quoteId | string | The estimate record behind the lead, when there is one. |
| formattedAddress | string | The address as Google formats it: street, city, state and ZIP, then country. |
| name | string | The homeowner's name as typed. |
| phone | string | Their phone number as typed. Every lead has one. |
| string | Optional. Missing when they left it blank. | |
| preferredTime | string | Optional. The best time for a visit, in their words. |
| estimateLow | number | The low end of the price range they saw, in dollars. Missing when no price was shown. |
| estimateHigh | number | The high end of the range, in dollars. Missing when no price was shown. |
| smsConsent | boolean | True only when they checked the box to get texts. |
| smsConsentText | string or null | The exact consent wording they agreed to, or null. |
| utm | object | Where the lead came from. Any of utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, gbraid, wbraid, fbclid, msclkid, plus referrer, the page the widget was on. Missing when there's nothing to report. |
| property | object | County records for the home, such as stories, living area and year built. Only on plans with county records, and only when the county has a record. |
| receivedAt | string | When Measured Bid received the lead, as an ISO 8601 time in UTC. |
| firstName | string | The first word of name, for CRMs that want first and last names. |
| lastName | string | Every word of name after the first. Missing when they typed one word. |
| street | string | The street line of formattedAddress, with any unit. The whole address when it isn't a US street address. |
| city | string | The city from formattedAddress. Missing when the address isn't a US street address. |
| state | string | The two-letter state. Missing when the address isn't a US street address. |
| zip | string | The ZIP code. Missing when the address isn't a US street address. |
A few Zaps that work with the fields above.
Find or create the client, then create a request with the range in the title.
HighLevel can take the webhook directly with its Inbound Webhook trigger, so Zapier is optional there.
One row per lead with the date, name, phone, address, estimateLow, estimateHigh and utm.utm_source.
Post the name, phone, address and range to a Slack channel or send it as a text, so someone calls back fast.
Not yet. You use Zapier's own Webhooks by Zapier app with the Catch Hook trigger. Measured Bid posts each lead to the URL it gives you.
Yes. Zapier offers Webhooks by Zapier on its paid plans, not the free one. Check Zapier's plans page for current prices.
Yes. The webhook posts plain JSON to any https address, so a Make custom webhook or an n8n Webhook node works the same way.
No. There is no signature header, so treat the Catch Hook URL like a password and share it only with people who manage the Zap. If it leaks, make a new Catch Hook and paste the new URL into your widget's settings.
Measured Bid waits up to 8 seconds and doesn't retry. The lead is still saved in your dashboard, and you can export your leads as a CSV from there.
Start a trial, set your rates and paste your Catch Hook URL. 14 days or 25 estimates free, no card.