Skip to content
UpSmith Help Center home

Booking Form

You already have a "Request a quote" form on your website, it already matches your brand, and you don't want to replace it with somebody else's widget. Booking Form is how you keep that form and have every submission land in UpSmith — your agent texts them within moments instead of the enquiry sitting in an inbox until Monday.

A submission creates a lead and your agent books the job over text, the same as every other lead source. Second, this one needs whoever looks after your website. UpSmith gives you the address to send to and a ready-made form to copy; somebody has to put it on your site.

Set up Web Embed first

Booking Form has no settings of its own. It shares its key and its list of allowed domains with Web Embed, so you have to create that configuration before this page will show you anything. If you open Booking Form and see "The booking form shares its key and allowed domains with your Web Embed. Create that configuration first, then come back here to grab your form snippet", that's what's happened.

  • You don't have to run the widget. Create the configuration, fill in the required fields, and simply don't put the widget snippet on your site. The booking form works either way.

  • Don't be thrown by the button. The button you press reads Create widget, and you'll get a modal offering you a widget script. Close it — you came for the form.

  • Disabling Web Embed disables this too. One key, one switch. If somebody turns the widget off, your website form stops being accepted.

What your form has to send

Go to Integrations → Booking Form. The page gives you the endpoint, your key already filled in, and three ready-made snippets to copy: a plain HTML form (no JavaScript needed), a JavaScript version to wire into a form you already have, and a curl example for testing.

Five things are required on every submission:

  • Your key — already filled into every snippet on the page.

  • A phone number. This is how your agent reaches them, so it isn't optional. A field with no digits in it — someone typing "call me" — is rejected.

  • A ticked consent box.

  • The exact consent wording you showed them

  • The bot-check token — see below.

Everything else is optional: name, email, street address, a free-text message, what they're after, and a ZIP code if you've turned ZIP routing on. Any other field you add is kept too — equipment, preferred times, how they heard about you — and it's handed to your agent as context before it writes the first message. So if your form already asks good questions, your agent gets the answers.

Two limits worth knowing: up to 50 extra fields per submission, and anything that looks like a password, card number or government ID is dropped on purpose rather than stored.

Texting rules — 10DLC — require your form to show a consent tick box and record the exact wording next to it. That's why both the tick and the wording are required fields, and why the snippets ship with the correct sentence already written for you, using your business name and your terms and privacy links.

If you rewrite your form's consent wording, send the new wording in the submission so what's logged matches what the customer actually saw. Sending one thing and showing another is exactly the record you don't want when a carrier asks.

The two things that will catch you out

  • Your domain has to be on the allowlist. Submissions are accepted only from domains you've listed — anything else is refused. An empty list refuses everything. Add domains under Manage allowed domains, which takes you to the Web Embed settings.

  • The bot-check key comes from us. The snippets ship with a placeholder reading YOUR_TURNSTILE_SITE_KEY. Email support@upsmith.com and we'll give you yours — it isn't something you can set yourself. Ask for it while you're building rather than after you go live.

What the visitor sees after they submit

Whatever you build. UpSmith doesn't render a confirmation for your form — it's your page. Set a redirect to your own thank-you page and the browser goes there on success. Leave it out and a visitor on the plain HTML form sees a raw {"ok":true}, which is not the impression you want. Two rules on that redirect: it has to be a full address starting with https://, and it has to be on your allowlist. A relative path like /thank-you won't work.

Where the lead goes

  • Your lead responder texts them, with the same follow-up cadence as any other lead source.

  • Your agent opens knowing they came from your website, and reads back whatever they filled in.

  • It lands in Conversations, where you can take over and reply yourself at any point.

  • No appointment is created when they submit. Your capacity caps and closed days apply when your agent books the job during the text conversation, exactly as they always do. The flip side is that the form has no idea whether you're full — someone can submit at 2am on a day you've closed, and they'll still get a text.

  • Two submissions from the same number on the same day are one lead. A fresh enquiry tomorrow is a new one.

Testing it

Submit the form on your own site and check Conversations. Two things to expect while you test:

  • You'll hit the limit fast. The same phone number is capped at three submissions an hour and five a day. Testing with your own mobile will lock you out quicker than you'd think.

  • The curl example needs its Origin header. The endpoint checks where the request came from, and a bare command-line request without that header is refused.

Troubleshooting

Everything is rejected. Almost always the allowlist — either it's empty, or your site's address isn't on it in the exact form the browser uses. Check www. and https:// carefully. Note that wildcard entries only cover https://, so an http:// staging site is refused even when its domain is listed.

The form says it worked but no lead arrived. Two culprits. If ZIP routing is on and the ZIP isn't in your area, the endpoint accepts the submission and creates nothing — deliberate, but a form that only checks for success will show a thank-you page anyway. The JavaScript snippet handles this correctly; the plain HTML form can't. The other one is the honeypot: the snippet includes a hidden field that must stay empty, and if a browser or password manager autofills it, the submission is silently discarded. If you're seeing leads vanish with no pattern, that's the field to look at.

You submitted twice while testing and only got one lead. Working as intended — same number, same day, one lead.

The thank-you redirect isn't happening. It has to be a full https:// address on your allowlist. If it isn't, it's ignored and the visitor sees the raw response instead.

A submission came through with no name or details. Only the phone number and consent are required. If your form makes the rest optional, some people will skip them — your agent still texts, it just opens with less to go on.

You want a second form for a second location. Not possible today — one key and one allowlist per account. If your locations are set up as separate organizations in UpSmith, ZIP routing can send visitors to the right one. Email support@upsmith.com and we'll look at your setup.

Common questions

Does the form show my available appointment times? No. It has no calendar and no time picker. Your agent works out real availability during the text conversation that follows.

Can I use my existing form instead of copying yours? Yes — that's what the JavaScript snippet is for. Keep your form and its styling; it just also sends the submission to UpSmith.

Do I need a developer? Realistically, yes, unless you're comfortable pasting HTML into your website. The page gives them everything: the address, your key, and three working examples.

Can I collect an email address? Yes — email is in the ready-made form, and any field you add is kept and passed to your agent.

How does this differ from Web Embed? Web Embed is our widget on your page, styled by us, collecting a name and a number. Booking Form is your form, styled by you, collecting whatever you like. Both end up in the same place: a lead and a text.

Can I use both? Yes. They share one key and one allowlist, so once one is set up the other is a copy-and-paste away.

Where to go next