Back to app
Example: book a same-day repair

Example: book a same-day repair

A complete lead-capture page built step by step — a single-page repair request with qualification scoring, a renter deal-breaker, three different endings, a lead binding and inquiry routing.

Reviewed AdminVertiqa 1.75+

The business: a residential HVAC company. Summer, phones ringing, two vans. The problem isn't lead volume. Half the calls are renters who can't authorise work, or people outside the service area, and the good ones wait in the same queue as the rest.

The goal: qualify in the form, hand a same-day slot straight to the people who can book one, and leave a trail the office can settle a dispute with.

This is one of three conversion page examples. Each step names the builder tab it happens on: Form, Scoring, Page or Handoff.

About a minute, narrated: the finished page, tab by tab. Open video

Start

Open Conversion pages (route /crm/conversion-pages) and choose Start from a template → Contact us. It already binds submissions to a lead and says so before you pick it. Then edit it into the real page.

Fields: one page, eight questions, a hidden field and a checkbox

Form tab. When you are done the tab reads Form · 10: every row in the table below, the hidden field and the permission checkbox included.

Keep Form layout on Single page. A repair request is short, and phone visitors abandon steps they didn't ask for.

The Form fields section with Form layout set to Single page and the first five questions: Your name (Text, required, full_name), Best number to reach you (Phone, required), Email (Email, required), Service ZIP code (Text, required, with the validation pattern ^[0-9]{5}$), and Are you the homeowner? as radio buttons with the options Yes, I own it and I'm the landlord.
Each row holds the label, the field ID, the type and Required. Choices show the label visitors see beside the value that's stored.
Field IDLabelTypeNotes
full_nameYour nameTextSemantic type full_name, matched to the contact automatically
phoneBest number to reach youPhoneRequired
emailEmailEmailRequired. The confirmation email needs it
service_zipService ZIP codeTextValidation pattern ^[0-9]{5}$
property_roleAre you the homeowner?Radio buttonshomeowner, landlord, renter, business
problemWhat's going on?Selectno_cooling, weak_airflow, strange_noise, maintenance
urgencyHow soon do you need someone?Selecttoday, this_week, just_planning
notesAnything else we should knowLong textOptional
utm_sourceUTM sourceHidden metadataSource UTM, key utm_source
consent_contactI agree to be contacted…CheckboxSemantic type consent, required

Field IDs are the stable identity of each answer. They start with a letter and contain only letters, numbers, underscores or hyphens. Once a page is published, a renamed ID is a change you have to approve, so choose them carefully the first time.

The hidden field is the one people forget. It costs the visitor nothing, and it's what tells you whether last month's ads or the van magnets brought in the work.

Scoring: say what a good job is

Scoring tab. The tab reads Scoring · 0 until the switch is on. Rules you have written but not enabled don't run, and the count says so. With the five rules and one deal-breaker below it reads Scoring · 6.

  1. Turn on Enable deterministic scoring.

  2. Add the rules with + Rule. Each rule picks a question, a comparison, a value and the points.

    The Qualification scoring section with Enable deterministic scoring ticked and five rules: Homeowner (Are you the homeowner? = homeowner, 25), Commercial site (= business, 20), System down (What's going on? = no_cooling, 30), Wants someone today (How soon do you need someone? = today, 25) and Just planning (= just_planning, -15).
    A rule can take points away too. Just planning is -15.
    LabelWhenPoints
    Homeownerproperty_role = homeowner25
    Commercial siteproperty_role = business20
    System downproblem = no_cooling30
    Wants someone todayurgency = today25
    Just planningurgency = just_planning-15
  3. Add one Deal-breaker with + Deal-breaker: Renter — cannot authorise work, when property_role = renter, reason Needs the property owner to approve the visit.

  4. Set Outcome thresholds: qualified at 60, review at 25. Anything below is Not a fit.

  5. Check it in the Live simulator before you publish. Enter answers as JSON:

    {
      "property_role": "homeowner",
      "problem": "no_cooling",
      "urgency": "today"
    }
    The Deal-breakers section with the renter rule, the outcome thresholds qualified at 60 and review at 25, and the Live simulator with homeowner, no_cooling and today entered, reading Score 80/100 · qualified · +25 Homeowner · +30 System down · +25 Wants someone today.
    The simulator shows the score, the outcome and every rule that matched.

    Change property_role to renter and the outcome becomes declined because of the deal-breaker, whatever the points say.

Scoring never rejects anyone. A declined response is still captured, visible and exportable. It just gets a different ending and a different place in the queue.

After submitting: three different last screens

Page tab, below Page sections and the contact and privacy footer. Write a message for each outcome.

Three ending cards on the Page tab: Qualified (Scored a good fit. The usual place for a booking link) with the same-day slots message, Needs review (Scored in between — a human decides) with the dispatcher message, and Not a fit (Knocked out, or scored below every band) with the property-owner message. Each has an Offer a booking link menu set to No booking link.
Each outcome gets its own message and, if you want, a booking link.
OutcomeMessageBooking link
Qualified"You're in the service area and we have same-day slots. Pick one now and we'll confirm by text."Same-day diagnostic
Needs review"Got it. A dispatcher will call within the hour to confirm timing."None
Not a fit"Thanks — repairs need approval from the property owner. Forward this page to them and we'll take it from there."None
EveryoneA fallback, used if scoring is ever turned off.None

Choose the booking link by name under Offer a booking link. The list shows your active booking links; you never paste a URL. If a link is later revoked or expires, the button disappears instead of sending a customer to a dead page.

Submission binding: where a repair request lands

Handoff tab, under Submission binding.

The Submission binding section with A submission creates set to Lead — create or update, Destination pipeline set to Use the default pipeline, Carry answers onto the record with a + Mapping button and No answers are carried across, and Confirmation email switched on with the subject We've got your repair request and a message about today's arrival window.
Lead — create or update matches repeat callers to their existing lead.
  • A submission creates: Lead — create or update. Repeat callers match their existing lead instead of creating duplicates.

  • Destination pipeline: leave it on the default pipeline, or pick the one dispatch works. New submissions enter at its starting stage.

  • Carry answers onto the record: select + Mapping and map problem to a custom field Reported issue and service_zip to Service ZIP. Name, email and phone are already matched from the field types, so they need no mapping.

  • Confirmation email: on. Subject "We've got your repair request", with a message that names the arrival window. Leave both blank to use the default wording.

  • Permission statements: one statement whose ID is consent_contact, the same ID as the checkbox field, with purpose intake, Required ticked, and the exact text the visitor agrees to.

    The Permission statements section, noting that the ID is immutable after publish and must match its checkbox field ID, with one statement: ID consent_contact, purpose intake, the text I agree to be contacted by phone, text, and email about this repair request, Required ticked, and an empty Channel (optional) field.
    The statement ID must match the checkbox's field ID.

Routing and distribution

Handoff tab, under Submission routing. Every submission is recorded on the page's Submissions tab whichever of these are off.

The Submission routing section with Inbound inquiries switched on, Service tickets off, and Submission alerts off with an empty address box, an Add button and the note Add at least one address to turn alerts on.
Alerts stay off until the list has at least one address.
  • Inbound inquiries: on. Every submission opens an inquiry someone is prompted to work.
  • Service tickets: off. This is sales intake, not a help desk.
  • Submission alerts: type the dispatch inbox address, select Add, then switch alerts on. The switch stays off until there's at least one address. An alert says a submission arrived and links to the inquiry; it never contains what the customer typed.

With the lead binding, inquiries and alerts all on, the tab reads Handoff · 3.

Publish and test

Select Publish. Before the public URL changes, Vertiqa lists the changes that need your approval. Here that's the template's message field renamed to notes. Approve it and the page goes live at {your-subdomain}.vertiqa.io/pages/same-day-repair.

The page then opens on its details screen (route /crm/conversion-pages/{id}), with its views, submissions and conversion rate.

The Book a same-day repair page details header with Live and Lead Capture badges, the note This page is live. Content edits go out immediately, buttons for QR, Copy link, View Live, Edit in builder and Archive, cards for views, submissions, conversion and status with the slug /pages/same-day-repair, and the tabs Overview, Versions & test and Submissions.
QR makes a tracked code for the van magnets. View Live opens the public page.

Select View Live to see what customers see:

The public same-day repair page under the Demo General Co name, with the headline AC down? Book a same-day repair, the subheadline, and required fields for name, phone, email and service ZIP code, followed by the four homeowner choices.
The published page, as a customer sees it.

Before you hand the URL out, open Versions & test and use Send a test:

{
  "full_name": "Test Caller",
  "email": "owner@example.com",
  "phone": "555-0100",
  "service_zip": "78701",
  "property_role": "homeowner",
  "problem": "no_cooling",
  "urgency": "today",
  "consent_contact": true
}
The Versions & test tab with Published versions listing conversion_page, form and submission_binding at v1, each with a Rollback button, and the Send a test card with the test JSON entered and the Send test button highlighted.
A test is validated like a real response but creates nothing.

A test creates no lead, permission record, alert or confirmation email. The row appears on the Submissions tab marked Test.

Once it's live, QR makes a tracked QR code for the van magnets and leave-behind cards, so that traffic is counted separately from the website. Embed the same page on the website's Service page, so you have one form and one set of numbers rather than two.

A week later

The office manager opens Submissions, searches no_cooling, and finds a row whose Routed to section shows a dispatch error from an outage. Retry routing creates the lead. The answers were never at risk, because the submission is recorded before routing runs.

On the lead itself, View the conversion page submission opens the exact answers that created it, including the utm_source that shows it came from the van magnet.

Learn more about the Vertiqa CRM →