Appearance
Booking form
The online booking form lets customers ask for a visit from your website. A request doesn't create a job. It lands in a list for the office to review. This page covers setting up the form and putting it on your site. What the office does with requests is in online bookings.
You need the booking.manage permission. Open Admin > Online booking.
Turn it on
Tick "Accept bookings through the form". Until you do, the form isn't available.
The form has an address of its own:
https://your-domain/book/<your-slug>The slug is the short name on your Company page (read-only there). The same section shows the exact address under Share, ready to copy.
Settings
| Setting | What it does |
|---|---|
| Intro text | Shown above the form |
| After sending | The thank-you message the customer sees |
| Services | The kinds of work a customer can pick. Add your own. Only ticked ("Bookable") services show |
| Lead time (days) | The earliest date offered is this many days from today |
| Book up to (days ahead) | How far into the future a date can be picked |
| Preferred time of day | The choices customers see, such as Morning and Afternoon. Add or remove them |
| Required fields | Name, service and a phone or email are always asked for. You can also require email, phone, address, preferred date and notes |
| Email a confirmation | Sends the customer an email straight after they submit |
| Text a confirmation as well | Sends a text too, if they gave a mobile number |
| Requests per visitor each hour | A limit per IP address. The default is 5 |
Confirmations go through your own email and SMS service. See SMS and email setup. The message tells the customer you'll confirm a time shortly.
Put it on your website
Under Share there are two snippets.
Script. Paste it where the form should appear:
html
<script src="https://your-domain/book/<your-slug>/embed.js" async></script>It adds an iframe in that spot, full width, and resizes itself as the form grows.
Iframe. If you'd rather control it, use:
html
<iframe src="https://your-domain/book/<your-slug>" title="Book a service"
style="width:100%;min-height:720px;border:0" loading="lazy"></iframe>The form allows itself to be framed by any site. If your website sets a strict Content Security Policy, allow frame-src https://your-domain.
A plain link to /book/<your-slug> also works, for a button or a text message.
Spam protection
Two protections are always on: a hidden field that people never see and bots fill in, and the request limit above. A bot's submission is acknowledged and then discarded, so it doesn't learn it was caught.
For stronger protection, add Cloudflare Turnstile. Paste your site key and secret key. The secret is stored encrypted and isn't shown again. "Remove the saved Turnstile keys" clears them. If a business hasn't set its own keys, the server's TURNSTILE_SITE_KEY and TURNSTILE_SECRET_KEY apply when they're set.
Requests
"Recent requests" lists what has come in, with a "New lead" tag when the person isn't an existing customer. Each request is matched to an existing customer where it can be, and otherwise saved as a lead. The office gets a notification for each one.
Choose Accept or Decline. Accepting marks the request. It doesn't make a job yet. Book the job from the customer's record. Creating the job automatically is on the build list.
Requests from the customer portal and from the phone agent appear in the same list.