Form Lead Capture Setup

Type: Execution Recipe Confidence: 0.90 Sources: 7 Verified: 2026-03-12

Purpose

This recipe builds a working lead capture system on your landing page — from form creation through CRM integration and real-time notifications. The output is a live embedded form that collects visitor information, automatically creates contacts in your CRM, and sends instant notifications to your sales team via email or Slack. Covers three tool paths: Typeform (conversational UX), Tally.so (free unlimited), and native HTML forms (maximum control). [src1]

Prerequisites

Constraints

Tool Selection Decision

Which path?
├── User is non-technical AND budget = free
│   └── PATH A: Tally Free — unlimited forms + Google Sheets + email notifications
├── User is non-technical AND budget > $0
│   └── PATH B: Typeform Basic ($29/mo) — conversational UX + native CRM integrations
├── User is semi-technical AND wants maximum free
│   └── PATH C: Tally Free + Zapier Free — 100 automations/month to any CRM
└── User is developer AND wants full control
    └── PATH D: HTML Form + Formspree/Getform — custom design + webhook to CRM
PathToolsCostSetup TimeOutput Quality
A: Tally FreeTally + Google Sheets + email alerts$020 minGood — unlimited leads, basic CRM
B: Typeform PaidTypeform Basic + native HubSpot/Salesforce$29/mo30 minExcellent — conversational UX
C: Tally + ZapierTally Free + Zapier Free + CRM$040 minGood — flexible, 100 tasks/mo limit
D: HTML + FormspreeHTML form + Formspree + Zapier$0-$8/mo45 minExcellent — full control

Execution Flow

Step 1: Create the Form

Duration: 10-15 minutes · Tool: Typeform, Tally, or code editor

Create your lead capture form with required fields (email, name) and qualifying fields (company, role). Add hidden fields for UTM parameter tracking.

Recommended form fields for B2B lead capture:
───────────────────────────────────────
Required:   Email (email validation), Full Name (short text)
Qualifying: Company Name, Job Title/Role (dropdown), Company Size
Optional:   Message (long text), Phone (phone type)
Hidden:     UTM Source, UTM Medium, UTM Campaign, Landing Page URL

For HTML forms, use a Formspree or Getform endpoint as the form action, include hidden UTM fields populated via JavaScript, and add a consent checkbox for GDPR compliance.

Verify: Submit a test entry and confirm it appears in the form dashboard. · If failed: Check form action URL, verify the form is published (not draft).

Step 2: Embed the Form on Your Landing Page

Duration: 5-10 minutes · Tool: Code editor or page builder

Tally and Typeform provide iframe embed codes and JavaScript popup embeds. For HTML forms, paste the form markup directly into your landing page. Test rendering on both desktop and mobile viewports.

<!-- Tally inline embed -->
<iframe data-tally-src="https://tally.so/embed/YOUR_FORM_ID?alignLeft=1&hideTitle=1&transparentBackground=1"
  loading="lazy" width="100%" height="500" frameborder="0"></iframe>

<!-- Typeform embed -->
<div data-tf-live="YOUR_FORM_ID"></div>
<script src="//embed.typeform.com/next/embed.js"></script>

Verify: Form renders correctly on desktop and mobile viewports. · If failed: Check browser console for CSP errors blocking iframes.

Step 3: Connect Form to CRM

Duration: 10-15 minutes · Tool: Native integration, Zapier, or webhook

Connect using native integrations (Typeform → HubSpot native connector) or Zapier (Tally/HTML → Zapier → CRM). Map form fields to CRM contact properties: Email → email, Name → firstname + lastname, Company → company, Role → jobtitle. [src1] [src5]

Zapier configuration:
───────────────────────────────────────
Trigger:  Tally — New Submission (select your form)
Action:   HubSpot — Create Contact
Field Mapping:
  Email         →  email
  Full Name     →  firstname + lastname (use Formatter to split)
  Company       →  company
  Role          →  jobtitle

Verify: Submit test form entry, check CRM within 60 seconds for new contact with all fields. · If failed: Check Zapier task history for field mapping errors.

Step 4: Set Up Notifications

Duration: 5-10 minutes · Tool: Email + Slack

Configure email notifications in the form tool settings. For Slack alerts, add a Zapier action step: Slack → Send Channel Message to #leads with lead details. [src2]

Verify: Submit test entry, confirm email and Slack notification within 2 minutes. · If failed: Check Zapier task history, verify Slack bot permissions.

Step 5: Add Spam Protection

Duration: 5-10 minutes · Tool: Form settings or code editor

Tally and Typeform have built-in spam filtering. For HTML forms, add a honeypot field (hidden input that catches bots) and Google reCAPTCHA v3 (invisible verification).

<!-- Honeypot field -->
<div style="display:none">
  <input type="text" name="_gotcha" tabindex="-1" autocomplete="off">
</div>

Verify: Submit with and without honeypot field filled, confirm bot submissions are filtered. · If failed: Lower reCAPTCHA score threshold or switch to v2 checkbox.

Step 6: Test End-to-End Pipeline

Duration: 5 minutes · Tool: Browser + CRM + Slack/email

Run a complete test with UTM parameters, verify form submission, CRM contact creation, Slack notification, email notification, and mobile compatibility.

End-to-end test checklist:
───────────────────────────────────────
1. Open landing page with UTM parameters
2. Fill and submit form with test data
3. Verify CRM contact created with all fields + UTM data
4. Verify Slack notification received
5. Verify email notification received
6. Test on mobile device

Verify: All 6 checkpoints pass. · If failed: Check UTM JavaScript populates hidden fields; verify CRM field mapping.

Output Schema

{
  "output_type": "lead_capture_system",
  "format": "configured pipeline",
  "columns": [
    {"name": "form_url", "type": "string", "description": "URL of the live form or embedded landing page", "required": true},
    {"name": "form_tool", "type": "string", "description": "Form platform used (Typeform/Tally/HTML+Formspree)", "required": true},
    {"name": "crm_integration", "type": "string", "description": "CRM where leads are routed", "required": true},
    {"name": "notification_channels", "type": "string", "description": "Email addresses and Slack channels receiving alerts", "required": true},
    {"name": "spam_protection", "type": "string", "description": "Spam filtering method", "required": true}
  ],
  "expected_row_count": "1",
  "sort_order": "N/A",
  "deduplication_key": "form_url"
}

Quality Benchmarks

Quality MetricMinimum AcceptableGoodExcellent
Form completion rate> 15%> 25%> 40%
Spam submission rate< 10%< 3%< 1%
CRM sync latency< 5 minutes< 60 seconds< 10 seconds
Field completion (all fields)> 60%> 75%> 90%
Mobile form usabilitySubmittable without scrollPasses Mobile-Friendly TestTouch-optimized

If below minimum: Reduce form fields to email-only and add progressive profiling. Add reCAPTCHA and honeypot if spam rate exceeds 10%.

Error Handling

ErrorLikely CauseRecovery Action
Submissions not appearing in CRMZapier Zap paused or field mapping brokenCheck Zapier task history; re-authenticate CRM connection
Typeform API rate limit exceededExceeded 2 req/sec limitAdd delay between bulk operations; use webhook instead of polling
Duplicate contacts in CRMNo deduplication configuredSet integration to "update existing"; use email as dedup key
Form embed not renderingCSP blocking iframeAdd form domain to CSP frame-src directive
UTM parameters lostHidden fields not populated by JavaScriptVerify UTM JavaScript runs before form render
Notifications going to spamNo SPF/DKIM for senderUse form tool's default notification domain

Cost Breakdown

ComponentFree TierPaid TierAt Scale
Form builder (Tally)$0 (unlimited, Tally branding)$29/mo Pro (no branding)$29/mo
Form builder (Typeform)$0 (10 responses/mo)$29/mo Basic (100 resp)$99/mo Business (10K resp)
CRM (HubSpot)$0 (free CRM)$45/mo Starter$800/mo Professional
Automation (Zapier)$0 (100 tasks/mo)$19.99/mo Starter$49/mo Professional
Spam protection$0 (reCAPTCHA free)$0$1/1K assessments >1M
Total (200 leads/mo)$0$29-49/mo$148-199/mo

Anti-Patterns

Wrong: Asking too many questions upfront

Forms with 7+ fields see completion rates drop below 10%. Collecting company size, budget, timeline, and phone number before the user trusts you kills conversion. [src7]

Correct: Start with email-only, use progressive profiling

Capture email first (1-2 fields). Use CRM enrichment tools to auto-fill company data. Ask qualifying questions in follow-up emails.

Wrong: Using Typeform free tier for production

Typeform free tier limits to 10 responses/month. After the 10th submission, the form stops accepting responses. [src4]

Correct: Use Tally.so free or budget Typeform Basic

Tally.so's free plan handles unlimited submissions. For branded forms, Typeform Basic ($29/mo) or Tally Pro ($29/mo) are the minimum viable options.

When This Matters

Use this recipe when the agent needs to add lead capture capability to an existing landing page — connecting a form tool to a CRM with real-time notifications. Requires a deployed landing page as input. This recipe builds the form, CRM pipeline, and notification system.

Related Units