ContactForm
Full-featured contact form that reads URL params (?service and ?city)
to personalise the H1, intro paragraph, and "what happens next" line. Validates required
fields, pre-fills dropdowns from params, and shows one of two confirmation screens based on
whether the visitor opts into a consultation call.
dynamicStates— required · map of service keys →{ none, withCity }copy objectsvariant?—"light"(default) |"dark"|"brand"
URL param examples — try these on the real /contact/ page:
/contact?service=custom-build&city=burlington/contact?service=renovation&city=oakville/contact?service=adu&city=mississauga/contact?service=adu— service only, no city token
variant="light" · default copy (no URL params) Get in Touch
You're almost there
Book your consultation call.
Pick a time below — we'll review your project details before we get on the call.
Booking calendar coming soon.
Changed your mind? We'll also follow up by email within one business day.
Message received
Got it. We'll be in touch.
We'll review your project details and follow up within one business day.
variant="dark" · default copy Get in Touch
You're almost there
Book your consultation call.
Pick a time below — we'll review your project details before we get on the call.
Booking calendar coming soon.
Changed your mind? We'll also follow up by email within one business day.
Message received
Got it. We'll be in touch.
We'll review your project details and follow up within one business day.
variant="brand" · default copy Get in Touch
You're almost there
Book your consultation call.
Pick a time below — we'll review your project details before we get on the call.
Booking calendar coming soon.
Changed your mind? We'll also follow up by email within one business day.
Message received
Got it. We'll be in touch.
We'll review your project details and follow up within one business day.