One script tag. A homeowner picks a project, a size and a ZIP and sees a real ballpark range in ten seconds — and the lead lands in your MAGE ID pipeline, already qualified.
Every competitor answers this question with “fill this out and we'll call you.” You answer it before they leave the page.
The widget shows a band, names every assumption it made, and refuses outright when the scope is too odd to price. It never pretends to be a quote.
They hand over contact details to see the number. You get a lead that already knows roughly what the job costs — no more “I had no idea it was that much” three calls in.
Paste it wherever you want the estimator to appear — a page builder HTML block, a WordPress custom-HTML widget, Squarespace code block, or straight into your template. Replace your-company-slug with your MAGE company slug.
<!-- MAGE ID Instant Estimate -->
<script src="https://mageid.app/widget/embed.js"
data-mage-contractor="your-company-slug"
data-mage-name="Your Company"
defer></script>
That's the whole install. The widget renders right where you drop the tag. If you'd rather place it somewhere specific, put an empty <div data-mage-estimate></div> anywhere on the page and the script will mount into it instead.
All optional except the first. Set them on the <script> tag, or per-widget on a [data-mage-estimate] element if you run more than one.
| Attribute | Default | What it does |
|---|---|---|
data-mage-contractor | — | Required. Your MAGE company slug (or user id). Routes the lead to you. |
data-mage-name | us | Your company name, used in the widget's copy (“we send a copy to …”). |
data-mage-title | Get an instant ballpark | Headline above the form. |
data-mage-subtitle | A few details and… | Supporting line under the headline. |
data-mage-cta | Continue | Label on the first button. |
data-mage-accent | #FF6A1A | Accent colour — set it to your brand colour. |
data-mage-target | — | CSS selector to mount into, instead of in-place. |
data-mage-demo | off | Prices for real but skips the contact step and records no lead. Used by the demo above. |
The script exposes exactly one global, window.MageInstantEstimate. Call it after your framework has rendered the container:
MageInstantEstimate.mount('#quote-box', {
contractorId: 'your-company-slug',
contractorName: 'Your Company',
accent: '#0F766E'
});
It also exports MageInstantEstimate.projectTypes and .qualities if you want to build your own front end against the same API.
A typical published cost range for that scope, adjusted three ways, then floored at what it actually takes to mobilise the job.
The widget is a thin front end over one public endpoint. Call it directly if you'd rather build your own.
POST https://nteoqhcswappxxjlpvap.supabase.co/functions/v1/widget-estimate
{
"contractorId": "your-company-slug",
"projectType": "kitchen_remodel",
"sizeSqft": 220,
"quality": "premium",
"zip": "30301",
"name": "Dana Reyes",
"email": "dana@example.com"
}
→ { ok, estimate: { range: { low, likely, high }, perSqft,
confidence, assumptions[], cannotPriceReason }, leadCaptured }
GET the same URL for the list of project types and finish levels. Rate-limited per IP and per contractor; a honeypot field is accepted and silently discarded.
MAGE ID gives you the estimator, the pipeline it feeds, and the price book that turns those leads into bids priced off your own finished jobs.
Get your embed snippet → Start free See how MAGE ID worksThe demo above is live — it calls the same endpoint your site would, with a demo contractor id, so no lead is recorded.
Free with MAGE ID · mageid.app
© 2026 MAGE ID · Built in the U.S.