> ## Documentation Index
> Fetch the complete documentation index at: https://docs.granvl.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Lead qualification

> Score every lead against your rule without granvl ever storing the answers.

A form submit tells you a visitor converted. **Qualification** tells you whether the lead was any good, and it's the difference between optimizing for cheap leads and optimizing for revenue. granvl scores every lead against your rule and reports **qualified conversions** and **cost per qualified lead** throughout analytics, all without storing a single answer.

## Three ways a lead gets qualified

### 1. Rule-based (instant)

Define a rule per funnel, e.g. *state is CA **and** loan balance over \$200k*. At submit time the rule is evaluated against the form's answers and only the verdict is recorded:

* Forms pointing at your CRM or webhook evaluate the rule **in the visitor's browser**; the answers never leave the device.
* Forms using granvl's fallback handler evaluate **in memory** on the way through; answers are checked and immediately discarded.

Build rules in the funnel's **Lead qualification** settings. Declare your form's fields (or let your agent do it with `set_funnel_form_fields`) and the builder offers real dropdowns instead of guessed field names. Rules support all/any groups over equals, contains, greater/less-than conditions.

<Frame caption="The qualification rule builder in funnel settings">
  <img src="https://mintcdn.com/granvl/0qlHX0uI9PHH2UJI/images/guides/qualification.png?fit=max&auto=format&n=0qlHX0uI9PHH2UJI&q=85&s=92dc2ddc47396e0d36d0a113a5b113b7" alt="The qualification rule builder in funnel settings" width="1920" height="1992" data-path="images/guides/qualification.png" />
</Frame>

### 2. CRM webhook (closed loop)

Every submission carries a hidden session ID to your CRM. When a deal closes (or a sales rep disqualifies a lead), have your CRM or Zapier POST to your workspace's **qualify webhook** and the verdict lands on the original session, including an optional deal value. Get the URL and payload shape from your agent (`get_qualify_webhook_url`) or the funnel's qualification settings.

### 3. Manual

Flip individual leads from the dashboard or over MCP (`mark_lead_qualified`) when you know something the rule doesn't.

## What qualification unlocks

* **Qualified conv %** and **cost per qualified lead** next to every raw number in funnels, campaign hubs, and the ads tables.
* **Variant decisions on quality**: a variant that wins on raw conversion but loses on qualified rate is a trap; the copilot and your agent compare qualified rates when the data exists.
* **Qualified routing**: thank-you pages can target qualified or unqualified leads, so a qualified lead can book a call while an unqualified one gets the newsletter.
* **Value-based feedback**: deal values echoed back via the webhook power revenue and ROAS reporting.

<Note>
  Zero-PII holds throughout: granvl stores the verdict (qualified / unqualified), the optional deal value, and the session it belongs to. Never the answers. See [How zero-PII works](/concepts/zero-pii).
</Note>
