Every Typeform submission that includes a work email becomes a scored lead with a first line your rep can send. Typeform posts the answers to your endpoint. Your endpoint calls POST /v1/people/enrich, scores the result and writes the follow up. LeadOcean has no sequencer, so the output goes to the CRM or inbox you already use.
How it works
- Trigger. Add a webhook to the form that points at an https URL you control. Typeform sends each new response to it as it is submitted, and retries on failure (Typeform docs, October 2026).
- Pull the email. Read the email answer from the payload. Skip the row if it is a personal address. Typeform keeps the response either way.
- Enrich. Call
POST /v1/people/enrichwithemailandreveal_emailset to false. A person we hold nothing for is a 404 and costs nothing. - Score. Add points for seniority, company size and a
verifiedemail_status. Keep the rules in one small function so sales can edit them. - Personalize. Build the opener from the current role and the form answer. Write the lead, score and opener to your CRM or a Slack channel.
Configuration
Run this from your webhook handler. It uses only the documented base URL and x-api-key header.
curl -s -X POST https://api.leadocean.io/v1/people/enrich \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "jane.doe@acme.com", "reveal_email": false}'The reply carries contact_data.has_email, contact_data.email_status and contact_data.contact_current_experiences[]. Each experience object holds job_title, job_seniority, job_functions[], company_name, company_domain, company_industry and company_employees (LeadOcean docs, October 2026). Example score rule:
+40 job_seniority is VP or above
+25 company_employees.number_of_employees is 200 or more
+20 email_status is verified
+15 form answer says "this quarter"
send to sales at 60 or moreTypeform expects a reply within 30 seconds. Answer 200 first, then enrich in the background. Keep the score out of the form itself: it lives in your handler, so you can change a rule without editing the form or republishing it.
To size a list before you run it, use leadocean_count_leads over MCP. It is free.
Field mapping
| LeadOcean field | Target field | Note |
|---|---|---|
contact_data.email_status | Lead score input | Read it before you send. No credit back for bounces. |
contact_data.has_email | Lead record flag | Answered even when you do not reveal. |
contact_data.contact_current_experiences[] | Title, company | job_title, company_name and company_employees feed the score. |
resume_data.experiences[] | Opener line | Past roles, when held. Past employers carry no company_id yet. |
| Typeform answer text | Opener line | Quote the buyer's own words. |
Cost at 10,000 rows
LeadOcean Free covers 1,000 records for life, so a 10,000 row run needs a paid plan. Solo is $97 a month with 10k enrichments every 5 hours, which fits 10,000 submissions. Paid plans have a fair-use pace, not credits. Misses cost nothing.
| Item | Cost | Source |
|---|---|---|
| LeadOcean Solo | $97 a month | leadocean.io/pricing |
| Typeform Business, 10,000 responses a month | $129 a month billed monthly, $91 billed yearly | Typeform pricing, October 2026 |
The pricing page shows Business at $91 a month billed yearly and a $456 yearly saving, which puts monthly billing at $129. Webhooks are listed from the Basic plan up (Typeform pricing, October 2026). You also pay for wherever your handler runs.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Webhook stops firing | Your endpoint returned 404 or 410 | Typeform disables the webhook at once (Typeform docs, October 2026). Fix the URL and re-enable it. |
| Repeat deliveries | Handler took over 30 seconds | Return 200 first, enrich after. |
| 404 from enrich | No match for that email | Treat as score 0. It costs nothing. |
| 429 from enrich | Over your plan's request rate | Honor Retry-After. Free is 5 requests a second, Solo 50. |
| 402 from enrich | Free records spent | Move to a paid plan. |
FAQ
Do I need Zapier or Make?
No. Typeform's webhook posts to any https URL, so a small handler is enough. Check your automation tool's HTTP module before you swap it in.
Can I enrich with a name and company instead of an email?
No. Enrich takes exactly one of linkedin_url, email, phone or person_id. Ask for a work email in the form.
Should I reveal the email?
Not usually. The respondent gave you the address. Set reveal_email to false and use the role data.
Is the opener written by LeadOcean?
No. LeadOcean returns the data. You or your model write the line. See personalize outbound sales emails and AI outreach tools.
More recipes: personalize outbound with a prospect's main challenges. Back to all integrations. Plans are on pricing.
Score your next Typeform lead with a free API key
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →