Automatically enrich Typeform leads with Clearbit, score with OpenAI, upsert into Pipedrive, create ClickUp follow-ups, and notify Slack using Make.com.
Introduction
You capture leads with Typeform, but some submissions are thin and you still need people to look up company details, decide whether a lead is worth chasing, and then create a CRM record and a task for sales. That manual chain costs time and introduces inconsistent routing and missed opportunities.
This guide shows an advanced Make.com scenario that receives Typeform submissions, enriches company and person data via Clearbit, runs a deterministic OpenAI scoring prompt, upserts Person and Organization into Pipedrive v2, creates a ClickUp follow-up task for hot leads, and posts a single actionable message to Slack. By the end you will have field mappings, prompt examples, idempotency rules, and operational gotchas you need for production.
What you will know by the end: exact Make.com modules to use, how to map Clearbit and OpenAI results into Pipedrive custom fields, how to avoid duplicate People/Organizations, and how to create a traceable ClickUp task for sales.
What You'll Need
- Typeform account with the form you use for lead capture, webhooks enabled (Typeform paid plan may be required for webhooks)
- Make.com account with connections for Webhooks, HTTP (for Clearbit if no native module), OpenAI, Pipedrive (v2), ClickUp, and Slack; paid Make.com plan recommended for production
- Clearbit API key (or equivalent company enrichment provider) and permission to call their Company and Person endpoints
- OpenAI API key (budget for classification calls) and deterministic prompt settings (temperature 0)
- Pipedrive account with API access and custom fields for enrichment and score (use Pipedrive v2 modules in Make.com)
- ClickUp workspace and API token for creating tasks
- Slack workspace with a channel for lead notifications and a bot token
Permissions notes: Pipedrive custom field keys are required when writing properties. Clearbit and OpenAI incur per-request costs. Make sure your Make.com plan and API quotas match expected volume.
How It Works (The Logic)
Trigger: Typeform webhook (new response) → Idempotency check by response_id → Normalize and validate fields → Call Clearbit to enrich company/person (when email or company domain present) → Build a compact payload and call OpenAI to return a numeric score and one-line reason → Search Pipedrive for Person by email, upsert Person and Organization, write enrichment and score into custom fields → If score >= threshold, create ClickUp follow-up task assigned to the sales owner and post a Slack alert with the Pipedrive link and ClickUp task link → Log the run to an audit datastore (Google Sheets or Make Data Store).
In plain terms: Typeform → Clearbit enrichment → OpenAI score → Pipedrive upsert → ClickUp task for hot leads → Slack notification → audit log.
Step-by-Step Setup
- Design your acceptance and idempotency strategy
- Decide the single source of truth for dedupe: use Typeform response_id as the idempotency key for this scenario. You will store response_id in an audit sheet or Make Data Store once processing completes successfully.
- Decide score thresholds: example hot >= 80, warm 50–79, cold < 50. Use numeric scores 0–100 from OpenAI for easy mapping.
- Create the Make.com scenario and webhook trigger
- Module: Webhooks > Custom webhook (Catch Hook). Create the webhook and paste the URL into Typeform webhooks for the form.
- Test with a sample submission to get the payload structure.
- Early idempotency guard
- Module: Data Store Get Item (or Google Sheets Search row) using response_id. If a record exists with status = succeeded, stop the run.
- If no record, create a provisional entry with status = processing and run_id. Do not write succeeded until the end of the happy path.
Gotcha: create the provisional entry before calling external enrichment to avoid duplicate parallel runs in bursts.
- Normalize core fields and validate
- Extract and normalise: first_name, last_name, email (lowercase, trimmed), company_name, website, phone, and any lead-specific fields.
- If email is missing, use company domain (from website or company_name) for enrichment, but mark person-less flows so you can route them to manual review.
- Call Clearbit for enrichment (optional if no native module)
- Module: HTTP > Make a request to Clearbit Company and Person endpoints, or use a native Clearbit module if available.
- If you have an email, call Person lookups; if you have a company domain, call Company lookup.
- Save useful fields: company domain, company size, industry, logo, Crunchbase link, estimated revenue bucket, and person role/title if returned.
Mapping tip: map Clearbit output to Pipedrive fields such as company_size, industry, company_domain, and enriched_title. Keep the raw JSON in the audit log for troubleshooting.
Gotcha: Clearbit rate limits and cost. Cache results in Make Data Store keyed by domain to avoid repeated calls for the same company.
- Build the OpenAI prompt and call the model
-
Module: OpenAI (or HTTP to the OpenAI API). Use temperature 0.0 for deterministic output and constrain the model to return strict JSON.
-
Prompt pattern (system + user):
- System: "You are a lead scorer. Return only JSON: {score:0-100,reason:string,category:hot|warm|cold}. Score should reflect commercial potential given these fields. If unsure return low score."
- User: include a compact summary: name, title, company, company_size, industry, budget (if collected), timeline, and any free-text notes. Limit total tokens by truncating long message fields to 800 characters.
-
Example expected JSON: {"score":85,"reason":"Target industry with 50-200 employees, explicit budget band, asks for pilot within 2 months","category":"hot"}
Validation: parse the JSON and verify score is numeric and 0–100. If parsing fails or score missing, set score = 0 and category = cold and mark parsing_issue = true in audit.
Cost control: only call OpenAI when a minimum signal exists, for example company name present or budget field filled. Otherwise set score via rules to save calls.
- Search Pipedrive and upsert Person/Organization (v2)
- Module: Pipedrive v2, Search Persons by email. If person exists, capture person_id; otherwise create Person.
- For Organization: search by domain or company name. If exists, capture org_id; otherwise create Organization and associate Person with Organization.
- During create/update, write custom properties for enrichment:
- clearbit_domain
- clearbit_company_size
- clearbit_industry
- enrichment_source = "clearbit"
- openai_lead_score (number)
- openai_score_reason (text)
- openai_category (single line)
- typeform_submission_id (store response_id on either Person or a related Deal for traceability)
Field mapping: only write non-empty values to avoid overwriting better existing data. Use conditional mapping in Make.com mapping steps.
Gotcha: Pipedrive custom fields require exact API keys. Create those custom fields first in Pipedrive and copy the field keys into your Make.com mappings.
- Create Deal or tag record based on score
- Decide business rule: create a Deal only for hot and warm leads, or create a minimal lead record for all and escalate hot leads.
- Module: Pipedrive v2 Create Deal. Map: title, value (if budget exists), pipeline and stage, and associate person_id and org_id. Also set the dedupe key property to response_id if you want deal-level idempotency.
- Create ClickUp follow-up task for hot leads
- Module: ClickUp Create Task. Only run this branch when score >= hot threshold.
- Task fields: name "Follow up: {first_name} {last_name} — {company}", description with short OpenAI reason, Pipedrive deal link, contact email, suggested next step, and priority.
- Assignment: map to owner based on territory mapping logic stored in a Make.com lookup table or Pipedrive owner.
Practical detail: include a direct link to the Pipedrive Deal or Person in the ClickUp description for quick access.
- Post Slack notification with unified context
- Module: Slack Post Message. Post to the sales channel with a compact payload:
- Lead name, Company, Score, Category
- One-line reason from OpenAI
- Pipedrive link to Person or Deal
- ClickUp task link when created
- A trace id (run_id or response_id) for auditing
Keep Slack messages short and include the ClickUp action link so reps can claim the task immediately.
- Finalise audit log and mark succeeded
- Module: Data Store Update or Google Sheets Append Row. Write final status = succeeded, response_id, person_id, org_id, deal_id (if created), clickup_task_id, openai_score, clearbit_domain, parse_issues, timestamp.
- If any step failed irrecoverably, update the audit row with status = error and capture error_message. Route to ops Slack channel for manual review.
- Test end-to-end and tune thresholds
- Test cases: complete submission with email and company domain; submission with only company; submission with no company or email; rapid duplicate submission to verify idempotency.
- Monitor OpenAI outputs for a week and adjust prompt examples and the hot/warm thresholds to match sales reality.
Real-World Business Scenario
A mid-market SaaS company used this exact pattern during a webinar campaign. Typeform responses came with a budget band and timeline. Clearbit filled company size and industry. OpenAI produced a short scoring reason that matched sales intuition 78 percent of the time after prompt tuning. Hot leads created a Pipedrive deal automatically, spawned a ClickUp follow-up task for the SDR assigned by territory, and posted a Slack alert with the Pipedrive and ClickUp links. The team reduced time-to-first-touch for hot leads from 24 hours to under 90 minutes and had an audit trail for every submission.
Common Variations
- Replace Clearbit with another enrichment provider and cache results in Make Data Store to reduce cost and rate limit exposure.
- Use a rules-first pattern: apply simple deterministic rules to mark obviously cold or warm leads and only call OpenAI for ambiguous cases for cost savings.
- Swap ClickUp for Asana, Trello, or ClickUp Spaces mapped by owner if your sales ops uses a different task system.
Where this fits and next steps
You built a resilient end-to-end pattern that turns Typeform submissions into enriched, scored CRM records with automatic follow-up tasks and Slack notifications. It includes idempotency, enrichment caching, prompt guidance, and clear field mappings into Pipedrive v2.
If you want this implemented and hardened for your exact fields, pipelines, and routing rules, Olmec Dynamics builds and supports these automations for real businesses. See how we approach Cross-Platform Automation on our site and examples such as our Typeform to Pipedrive guide and AI scoring patterns linked earlier. You can read more about our work at Olmec Dynamics.