One-time licence · self-hosted
Your site takes phone calls.
It should take bookings.
A drop-in quote and booking form for chauffeur and black car operators. Paste one script tag into the page you already have, and start collecting fixed-price booking requests tonight.
Plus $9/month for updates and support. Everything runs on your own hosting.
Live widget — try it
Why it survives old themes
Built defensively, because a booking form that breaks costs money
Shadow DOM isolation
Your theme's CSS cannot reach inside the widget, and the widget cannot leak out. This is the single decision that keeps a 2014 WordPress theme from breaking your booking form.
Zone pricing, no maps key
Name your common places, set fixed prices between the pairs that matter, and scale by vehicle multiplier. No maps API, no key exposed in the page, no per-request bill.
It never guesses a price
If a route isn't priced, the form becomes an enquiry and says so. A wrong price costs more than no price.
Requests you can prove arrive
Run ChauffeurQuote.selftest() in the console before you send traffic. The PHP handler logs every request to disk even when mail() fails silently.
Zero dependencies, 8.1 KB gzipped
One plain JS file. No build step, no framework, no bundler, nothing to keep up to date on your host.
Two server handlers included
A PHP handler for shared hosting and a Cloudflare Worker for anyone who'd rather not touch PHP. Both work out of the box.
The proof
See it on a deliberately awful theme
The demo page loads a caricature of a 2014 WordPress theme: Comic Sans on every input, dotted red borders, rotated buttons, content-box sizing and !important on all of it. A normal form on that page is unusable. The widget sits in the middle of it, untouched.
The whole install
<div id="chauffeur-quote"></div>
<script>
window.chauffeurQuoteConfig = {
business: { name: "Halden Black Car", phone: "+1 555 0164" },
pricing: {
mode: "zones",
places: ["Logan Airport", "Boston", "Cambridge"],
matrix: { "Logan Airport|Boston": 89 }
},
submit: { mode: "webhook", url: "/quote-handler.php" }
};
</script>
<script src="/chauffeur-quote.js" defer></script>The setup builder writes that block for you, so nobody has to hand-edit JSON or guess what a multiplier is.
Left out on purpose
Three things it deliberately doesn't do
- Card capture. Taking cards inside a drop-in script drags PCI obligations onto your site. Requests come to you; you charge how you already charge.
- Live availability. It has no way to know your fleet's real state, and a form that confirms an unavailable car is worse than one that doesn't try.
- Address autocomplete. That needs a maps key in your page and a bill attached to it. Zones cover the routes that actually get booked.
Honest about licensing
No domain lock, no phone-home
Client-side licence enforcement is theatre — anyone can strip a domain check out of a JS file in thirty seconds, and it only adds a way for your form to break the day you move hosts. You get a plain licence file and a file that keeps working. Paying is simply easier than pirating.
See what's in the download