Build an Inbound-Form-to-CRM Bot in 30 Minutes
Lead fills out your form. CRM record gets created with enriched data, intelligent tagging, and a draft outreach. Sales never touches the keyboard. Ship it today.
The build: inbound form fires. Lead's company gets auto-enriched (size, industry, recent news). CRM record is created. Intelligent tags applied. A draft outreach lands in your sequence tool. Time from form submission to ready-to-send outreach: under 60 seconds.
Total build time: 30 minutes.
What you'll need
- Form tool (Tally, Typeform)
- n8n
- Your CRM with API access (HubSpot, Pipedrive, Attio, Folk, etc.)
- An enrichment API (Clearbit, Apollo, or free tier of Hunter)
- AI API key
- Email sequence tool (Smartlead, Instantly, or your CRM's native)
Step 1: Form webhook (2 min)
Form tool → n8n Webhook trigger.
Step 2: Enrich the company (8 min)
Add an HTTP Request node calling your enrichment API. Use the lead's email domain as the lookup key.
Example with Clearbit:
URL: https://company.clearbit.com/v2/companies/find?domain={{ domain }}
Headers: Authorization: Bearer {{ CLEARBIT_KEY }}Return includes: company name, industry, size, location, tech stack, recent news.
If enrichment fails (small company, private email), fall back to the form data only.
Step 3: AI tagging and routing (8 min)
Add an AI node. Prompt:
You are tagging an inbound lead for CRM ingestion.
Form data: {{ form }}
Enrichment data: {{ enrichment }}
Return JSON:
{
"tags": [up to 4 specific tags from this list: {TAG_LIST}],
"industry": <one of {INDUSTRIES}>,
"size_segment": <"startup" / "smb" / "midmarket" / "enterprise">,
"priority": <"hot" / "warm" / "cold" / "decline">,
"specific_hook": "<one sentence about something specific from their form or enrichment to lead with>",
"internal_summary": "<one paragraph for sales to skim, max 60 words>"
}Step 4: Create CRM record (5 min)
Add your CRM's node. Map the fields:
- Contact info from form
- Company info from enrichment
- Tags from AI
- Priority as custom field or stage
- Internal summary as note
Step 5: Generate draft outreach (5 min)
Add another AI node:
Draft a 4-sentence cold outreach to a lead.
Their form submission: {{ form.message }}
Their company: {{ enrichment.company }}
The specific hook: {{ specific_hook }}
Voice: peer-to-peer. Specific, not templated. Reference the hook in sentence 1 or 2.
Format:
- Sentence 1: Specific hook (something about them or their company)
- Sentence 2: Why I'm reaching out
- Sentence 3: What I'd want to do next (specific ask)
- Sentence 4: Easy out
Banned: "I came across", "I noticed", "I wanted to reach out", "circling back", "your business".
Sign as: JoshStep 6: Push to sequence tool (5 min)
Add an HTTP Request node to your email sequence tool. Create a contact, attach the draft outreach as the first email, set to NOT auto-send (it needs human review).
Step 7: Slack notification (2 min)
Slack node. Channel: #sales-inbox. Message includes name, company, priority, link to CRM record, link to draft outreach.
Common gotchas
- Personal email domains (gmail.com, etc.) break company enrichment. Add a check.
- AI sometimes hallucinates specifics in the outreach draft. The "NOT auto-send" rule is what saves you. Human reviews before send.
- CRM rate limits: HubSpot allows ~100 req/min on most tiers. Add a small wait if you have form spikes.
What I do with this
Every inbound form submission becomes a CRM record with enrichment, tags, and a draft outreach within 60 seconds. I review the draft, edit if needed, send.
For hot leads I can reply within 2-3 minutes of the form being submitted. The prospect is impressed. Conversion goes up.
What to add next
- Per-industry tagging (different criteria for wealth vs CPA vs trades)
- Auto-schedule a discovery call for hot leads (Cal.com link)
- A 5-touch follow-up sequence that auto-pauses when the prospect replies
- Weekly digest of all inbound leads + conversion rate
Start with the basic version. Iterate weekly.
Get the next one.
Field notes from real deployments, written the way this one was. No schedule promised and nothing sold to you. Unsubscribe whenever.