Form Lead Capture Setup
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
- Deployed landing page — Landing Page Platform Deployment
- ICP definition or target audience — know what qualifying questions to ask
- CRM account — free account at HubSpot, Salesforce, or Pipedrive
- Automation account (if not using native integrations) — Zapier or Make
- Form tool account — Typeform, Tally, or none (HTML path)
Constraints
- Typeform free tier allows only 10 responses/month — not viable for production lead capture. Budget $29/mo minimum for Basic plan. [src4]
- Tally.so free plan allows unlimited submissions but displays "Made with Tally" branding. Remove with Pro at $29/mo. [src3]
- Native HTML forms require a server endpoint or third-party service (Formspree, Getform) to process submissions.
- CRM field mapping must be tested in sandbox before production. Mismatched field types silently discard data. [src5]
- GDPR compliance: forms collecting EU resident data must include explicit consent checkbox and privacy policy link.
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
| Path | Tools | Cost | Setup Time | Output Quality |
|---|---|---|---|---|
| A: Tally Free | Tally + Google Sheets + email alerts | $0 | 20 min | Good — unlimited leads, basic CRM |
| B: Typeform Paid | Typeform Basic + native HubSpot/Salesforce | $29/mo | 30 min | Excellent — conversational UX |
| C: Tally + Zapier | Tally Free + Zapier Free + CRM | $0 | 40 min | Good — flexible, 100 tasks/mo limit |
| D: HTML + Formspree | HTML form + Formspree + Zapier | $0-$8/mo | 45 min | Excellent — 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 Metric | Minimum Acceptable | Good | Excellent |
|---|---|---|---|
| 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 usability | Submittable without scroll | Passes Mobile-Friendly Test | Touch-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
| Error | Likely Cause | Recovery Action |
|---|---|---|
| Submissions not appearing in CRM | Zapier Zap paused or field mapping broken | Check Zapier task history; re-authenticate CRM connection |
| Typeform API rate limit exceeded | Exceeded 2 req/sec limit | Add delay between bulk operations; use webhook instead of polling |
| Duplicate contacts in CRM | No deduplication configured | Set integration to "update existing"; use email as dedup key |
| Form embed not rendering | CSP blocking iframe | Add form domain to CSP frame-src directive |
| UTM parameters lost | Hidden fields not populated by JavaScript | Verify UTM JavaScript runs before form render |
| Notifications going to spam | No SPF/DKIM for sender | Use form tool's default notification domain |
Cost Breakdown
| Component | Free Tier | Paid Tier | At 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.