Skip to main content

Set up forms and lead delivery

Connect your CRM, webhook or lead buyer to a funnel, send a test lead, and check that every submission arrives.

Written by Ryan

Each funnel's forms post to the destinations you connect in its Delivery tab. Submissions go from the visitor's browser straight to those destinations, so granvl never stores the lead's contact details. Connect at least one destination before you send traffic.

Before you begin

  • Have the URL, embed code or credentials from the tool that should receive leads (see the provider table below).

  • Ask your agent to build forms without an action or method. granvl wires delivery when the page is served and removes any hard-coded form action when you publish.

What happens when a funnel has no destination

You can publish a funnel without a destination, but its submissions only record a conversion and redirect to the thank-you page. Nothing is delivered, and unless the workspace has lead receipts turned on, the lead can't be recovered later. While a live funnel has no destination:

  • The funnel page shows a warning banner with a Connect delivery link.

  • Once the funnel has had 10 or more real visitors in 30 days, workspace members get an email saying the funnel is live with no lead delivery connected. It repeats at most once a week per funnel.

Connect a destination

  1. Open Funnels, then open the funnel.

  2. Select the Delivery tab.

  3. Under Add a destination, find your provider (search, or filter by CRM, Automation, Forms or Lead distribution).

  4. Select Connect → on the provider's card.

  5. Paste the URL or embed code into URL or embed code, or fill in the fields the drawer asks for.

  6. Select Connect. For Lead Prosper and Lead Distro AI the button is Connect Lead Prosper or Connect Lead Distro AI.

The destination appears under Connected destinations with its status. Changes save as you go, and published pages pick up delivery changes automatically.

The Delivery tab with two connected destinations, phone and state formats, and the Add a destination picker

Your agent can do the same with set_form_destination (paste a URL or embed), set_leadprosper_destination and set_leaddistro_destination. get_form_destinations lists what a funnel is connected to.

Supported providers

Provider

Category

How to connect

GoHighLevel

CRM

In a GoHighLevel workflow, add an Inbound Webhook trigger and paste its URL.

HubSpot

CRM

Paste the form embed code (Marketing > Forms > Share > Embed code).

ActiveCampaign

CRM

Paste the full inline-form embed (Website > Forms > Integrate > Full embed), then map its fields.

Zapier

Automation

Create a Zap with Webhooks by Zapier > Catch Hook and paste the hook URL.

Webhook

Automation

Paste an HTTPS URL that accepts a form POST.

Formspree

Forms

Paste your Formspree form endpoint.

Lead Prosper

Lead distribution

Connect your Lead Prosper developer API key, pick a campaign and supplier, then map fields.

Lead Distro AI

Lead distribution

Enter the campaign id, source id and x-api-key from the source's spec page, then map fields.

granvl recognizes the provider from what you paste. A URL it doesn't recognize is saved as a generic webhook.

Tip: For GoHighLevel, paste the workflow webhook URL, not a GoHighLevel form embed. A form embed can't receive submissions from another site, so the destination shows Needs URL until you paste the webhook URL.

Tip: For ActiveCampaign, paste the full embed (the block that contains proc.php). A link to an ActiveCampaign form can't receive submissions and is refused.

Lead Prosper, Lead Distro AI and ActiveCampaign send only the fields you map. See Map form fields to your destinations for the field map and each provider's required fields.

Send leads to more than one destination

A funnel can deliver every submission to several destinations at once, for example GoHighLevel and a backup webhook.

  1. On the Delivery tab, find the next provider under Add a destination.

  2. Select Connect → (or Add another → for a provider you already use) and finish the setup.

The first destination is the primary: the form submits to it. The visitor's browser sends a copy of the same submission to each other destination at the same time. granvl is not in the path for any of them.

To manage connected destinations:

  • Edit changes the URL, embed or field map.

  • Map fields (ActiveCampaign only) opens its field map.

  • Remove deletes the destination. New submissions stop going there.

  • Copy setup from another funnel replaces this funnel's destinations with an exact copy of another funnel's.

A destination can show these statuses:

Status

Meaning

Connected

Submissions are being sent to it.

Paused

It's saved but switched off, so nothing is sent. Your agent pauses and resumes destinations with update_form_destination.

Needs URL

It has no submission URL yet. Edit it and paste one.

If a funnel has no destinations of its own but its domain has a default set, the tab says the funnel is inheriting them. Connecting a destination on the funnel replaces the domain's set for that funnel.

Send a test lead

A test lead is a sample submission with fake values. Use it to check that your endpoint receives granvl leads and to give your automation fields to map before real traffic arrives.

  1. On the Delivery tab, connect or edit a GoHighLevel or Webhook destination.

  2. Paste the URL.

  3. Optional: in Custom UTM keys to include, add your own UTM keys (for example utm_adset, utm_angle) so you can map them too.

  4. Select Send test lead.

The drawer lists every field it sent. The sample contains every form field across all of the funnel's variants and pages, plus the full attribution set (UTMs, click IDs and ip_address), with utm_source set to granvl-test. For GoHighLevel, this moves the trigger out of waiting for a sample so its mapper shows every field. Map the fields, publish the workflow, then delete the test record from your CRM.

Your agent can send one with send_test_lead. It works with a saved GoHighLevel, Webhook or Zapier destination, or with any URL you give it.

Note: A test-drive link (from your agent's create_test_link) runs the whole funnel but deliberately delivers nothing to your destinations. Use a test lead to check delivery.

What every lead carries

Besides the visitor's answers, each submission includes:

Field

What it holds

granville_lead_id

A unique id for this submission. Your CRM sends it back to report outcomes (see Qualify leads and track what happens next).

granville_variant_id, granville_funnel_id

The variant and funnel that produced the lead.

ip_address

The visitor's IP address, when it's available.

submitted_at

The submission time, in the format set under Settings > Conversion > Submission time sent as on the funnel (or Not sent).

UTMs

utm_source, utm_medium, utm_campaign, utm_campaign_id, utm_ad_group, utm_ad_group_id, utm_ad, utm_ad_id, utm_term, utm_content, utm_placement and site_source_name, always present (empty when the visit had none), plus any other utm_* parameter on the ad URL.

Click IDs

gclid, gbraid, wbraid, fbclid, msclkid and ttclid, when the visit had them.

UTMs from the landing URL carry through the visit, so a form on the second or third page still sends them. Destinations that use a field map only receive the UTMs you map.

Format phone numbers and states

The Delivery tab sets how two kinds of answers reach every destination.

Phone format applies to the phone field for every destination. The menu shows each format as an example number:

  • +16503271100 (E.164), the default

  • 16503271100 (E.164, no +)

  • 6503271100

  • (650) 327-1100

  • 650-327-1100

  • 650 327 1100

  • +1 650 327 1100

  • +1 (650) 327-1100

ActiveCampaign always receives E.164. If a destination rejects phone numbers (Lead Prosper rejects a leading +), change this setting instead of editing the page.

The same setting appears in the funnel's Settings tab under Conversion as Submitted to destinations as, next to Phone number format, which controls the phone field visitors type into:

  • North America · (604) 444-4444 masks the field as visitors type.

  • International · default country accepts numbers the way visitors type them at home and adds the Default phone country dial code.

  • No formatting injects nothing. Your page's own code handles the number and destinations get it as typed.

State format sets what a state or province dropdown sends: Code (AL) (the default), Name (Alabama) or As authored. Visitors always see the full name.

Delivery checks and alerts

The Leads tab shows a delivery status for every lead, with a count of destinations (for example Delivered · 2 or 1 failed · 1 delivered). Hover the status to see what happened at each destination.

Status

Meaning

Delivered

The destination confirmed it received the lead. Only destinations that answer the browser can confirm, such as HubSpot and Lead Distro AI.

Sent

The browser sent the lead, but the destination doesn't say whether it accepted it. This is the normal status for Lead Prosper and for webhook-style destinations that receive a copy.

Attempted

The page started sending, but no result came back before the visitor left.

failed

A destination refused the lead or the send didn't complete.

Unconfirmed

No destination reported back. A primary destination that receives an ordinary form post (such as a webhook, Zapier, GoHighLevel or Formspree) never reports, so a funnel with only that destination usually shows this.

granvl also checks delivery every hour. If a funnel received submissions in the last hour and any of these is true, workspace members get an email titled "Leads may not be delivering":

  • Sends to a destination failed or were refused.

  • A destination that can confirm delivery confirmed none of them.

  • The page never tried to send to the primary destination, which means the form's delivery script isn't running.

You get at most one of these emails per funnel every 6 hours while the problem lasts. Formspree failures alone don't trigger it. When you get one, open the funnel's Delivery tab and check the endpoint, credentials and field map, then send a test lead.

If your workspace has lead receipts turned on, you can ask support to recover leads a destination failed to receive. See Recover undelivered leads with lead receipts.

Related articles

Did this answer your question?