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]
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 |
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).
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.
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.
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.
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.
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_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 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 | 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 |
| 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 |
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]
Capture email first (1-2 fields). Use CRM enrichment tools to auto-fill company data. Ask qualifying questions in follow-up emails.
Typeform free tier limits to 10 responses/month. After the 10th submission, the form stops accepting responses. [src4]
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.
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.