> ## 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.

# Forms & lead routing

> Zero-PII by design: submissions go from the visitor's browser straight to your stack.

Forms on granvl-served pages **always** POST to destinations you choose. granvl's servers never see the form's contents. That's the privacy moat. What granvl records is the *event* (a conversion happened, on this variant, in this session), never the field values.

## Destinations

Add destinations in the funnel's **Integrations** tab. Supported out of the box:

* **Webhook** (any URL), **Zapier**, **Formspree**
* **CRMs**: GoHighLevel, HubSpot, ActiveCampaign
* **Supabase**, **Forms.app**
* **LeadProsper** (lead distribution / ping-post)

A funnel can have **multiple destinations at once**: the page wires the form to the first and mirrors the submission to the rest from the visitor's browser (keepalive fan-out). granvl is never in the data path for any of them.

## LeadProsper

Two-tier setup for lead sellers:

1. **Team-level**: connect your LeadProsper dev API key under the Integrations settings (stored encrypted).
2. **Per-funnel**: pick a campaign → supplier, then map your form's field names to LeadProsper's. granvl resolves the supplier credentials into the form automatically.

<Warning>
  LeadProsper field names are **case-sensitive**, and it requires separate `FirstName` and `LastName` fields, never a single `name` input.
</Warning>

## Phone formatting

Different destinations want phone numbers in different shapes. Set the funnel's **phone format** (E.164 `+16503271100`, 10-digit, parentheses, or dashes) in the Integrations tab and granvl formats the phone field at serve time for every destination. Don't hand-format numbers in your page HTML.

## Qualification

Define a **qualification rule** per funnel (e.g. "state is CA and loan balance > \$200k") and granvl evaluates it in-memory at submit time. The lead is marked qualified/unqualified *without the answers ever being stored*. Qualified counts and cost-per-qualified-lead then appear throughout analytics. CRM-side qualification can also be pushed back later via the API/MCP (`mark_lead_qualified`).

## Redirects

Give the form a `_next` field pointing at your thank-you page. granvl carries conversion attribution through the redirect automatically: the thank-you arrival credits the page (and variant) that hosted the form.
