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