Lead Capture

Quote-Request Intake With Required Fields and Source Tags

Replace a free-text quote form that produces half-empty records with a structured intake that refuses to create a lead until the fields the sales team actually needs are present and the source is tagged.

4 to 7 days
build time
4
outcomes
4
stack tools
6
build steps

Built with real HMX CRM tool paths

GGoHighLevel Forms (required fields + conditional logic)
GGHL Workflows (Form Partially Completed trigger)
SSupabase Edge Function intake endpoint (validation + service-role write)
UUTM / source-tag mapping
GGoHighLevel Forms (required fields + conditional logic)
GGHL Workflows (Form Partially Completed trigger)
SSupabase Edge Function intake endpoint (validation + service-role write)
UUTM / source-tag mapping

Outcome
signals

These are the real outcome statements attached to this HMX CRM case study.

complete records
required fields enforced at intake
known source
every quote request tagged
fewer re-asks
first call starts with full context
saved partials
near-complete forms recovered, not lost

Case architecture

Quote-Request Intake With Required Architecture

6 nodes
List the fields a rep must
conditional questions so the
GoHighLevel Forms
GHL Workflows
Unrouted Queue
CRM Outcome
  1. 01List the fields a rep must

    Replace a free-text quote form that produces half-empty records with a structured intake that refuses to create a lead until the fields the sales t...

  2. 02conditional questions so the

    Add conditional questions so the form only asks what's relevant to the chosen service

  3. 03GoHighLevel Forms

    GoHighLevel Forms (required fields + conditional logic) stores the canonical CRM state for Quote-Request Intake With Required so reporting and follow-up read from one place.

  4. 04GHL Workflows

    Capture UTM and referrer values and write them to a normalized source field on the record

  5. 05Unrouted Queue

    When automation confidence is low, route the record to a manual owner with the source, stage, and last action attached.

  6. 06CRM Outcome

    complete records required fields enforced at intake; known source every quote request tagged; fewer re-asks first call starts with full context; sa...

Problem

The operating gap

Quote requests arrive missing service type, budget band, or a working phone number, so reps waste the first call re-collecting basics. Source is unknown, so the team can't tell which channel sent the lead or whether routing rules will even fire.

Build

What gets built

Build a validated intake (required fields, format checks, conditional questions by service) that writes a complete, source-tagged opportunity. Partial submissions are captured separately so a near-complete lead is never thrown away.

Build
steps

Quote-Request Intake With Required Fields and Source Tags uses a CRM operating layer for CRM Systems. Replace a free-text quote form that produces half-empty records with a structured intake that refuses to create a lead until the fields the sales t... The architecture connects list the fields a rep must, gohighlevel forms, ghl workflows, and crm outcome with an explicit control path.

  1. 01List the fields a rep must have before the first call and mark them required with format validation (phone, email)
  2. 02Add conditional questions so the form only asks what's relevant to the chosen service
  3. 03Capture UTM and referrer values and write them to a normalized source field on the record
  4. 04Use the Form Partially Completed trigger to save near-complete submissions into a recovery list with an owner nudge
  5. 05Validate server-side at the intake endpoint so a malformed payload can't create a junk opportunity
  6. 06Confirm complete, tagged records flow straight into the right pipeline and routing rules fire

Stack

Tools and layers

  • GoHighLevel Forms (required fields + conditional logic)
  • GHL Workflows (Form Partially Completed trigger)
  • Supabase Edge Function intake endpoint (validation + service-role write)
  • UTM / source-tag mapping
  • Capture layer: List the fields a rep must have before the first call and mark them required with format validation (phone, email)
  • Rules layer: Add conditional questions so the form only asks what's relevant to the chosen service
  • CRM State layer: GoHighLevel Forms (required fields + conditional logic) stores the canonical CRM state for Quote-Request Intake With Required so reporting and follow-up read from one place.
  • Automation layer: GHL Workflows (Form Partially Completed trigger) handles routine steps while build a validated intake (required fields, format checks, conditional questions by service) that writes a complete, source-tagged opportunity.
  • Human Review layer: complete records required fields enforced at intake; known source every quote request tagged; fewer re-asks first call starts with full context; sa...

Data flow

  1. 01List the fields a rep must have before the first call and mark them required with format validation (phone, email)
  2. 02Add conditional questions so the form only asks what's relevant to the chosen service
  3. 03Capture UTM and referrer values and write them to a normalized source field on the record
  4. 04Use the Form Partially Completed trigger to save near-complete submissions into a recovery list with an owner nudge
  5. 05Validate server-side at the intake endpoint so a malformed payload can't create a junk opportunity
  6. 06Confirm complete, tagged records flow straight into the right pipeline and routing rules fire

Controls

  • Quote requests arrive missing service type, budget band, or a working phone number, so reps waste the first call re-collecting basics.
  • Build a validated intake (required fields, format checks, conditional questions by service) that writes a complete, source-tagged opportunity.
  • When automation confidence is low, route the record to a manual owner with the source, stage, and last action attached.

Build a CRM with the same traceability

The intake starts with lead sources, stages, and follow-up rules so the scope stays honest.