Studios and services
A studio's website has one job: turn a stranger with a vague project into an enquiry you can actually answer.
The form is the product
Fields are built on the page, so the form is part of the design rather than an embed in a box. Every field carries its own rules, and those rules are checked twice — once in the browser as somebody types, once on the server when it arrives — against the same shared specification. A field cannot pass in one place and fail in the other.
Keeping the rubbish out
A hidden honeypot field catches the simplest bots. Cloudflare Turnstile handles the rest, on the endpoints whose clients can render it. Neither one asks a real visitor to identify a bus.
Where it lands
Submissions are stored against the site and emailed to whoever should see them. They also appear in the same list as bookings and orders, so there is one place to look rather than three.
Booking the call
An enquiry form and an appointment booking are different tools for different moments. Appointment mode handles the second: a duration, a person to see, buffers between slots, and availability that reflects the week you actually have.
The other three.
Every one of these is a different job for a website, and most businesses are a mix of two.
Build the version of this that is yours.
Nothing above needs deciding in advance. Turn a module on when the business actually needs it.