Integration BlueprintUse case: lead qualificationUpdated 2026-10-19

Typeform to Pipedrive Lead Qualification Pipeline

Integrating Typeform with Pipedrive automates outbound lead qualification by parsing submitted form variables and programmatically generating matched Persons and Deals inside Pipedrive's visual sales pipeline via REST APIs.

Explore: Forms · CRM

Comparison matrix

FeatureTypeformPipedriveEdge
Entry Pricing$25/month (Basic plan, billed annually)$14/user/month (Essential plan, billed annually)Pipedrive
Free Tier AvailabilityFree tier available (10 responses/month limit)No free tier (14-day free trial only)Typeform
API AuthenticationPersonal Access Token (Bearer) or OAuth 2.0API Token (query param/header) or OAuth 2.0Tie
API Rate Limits2 requests per second (hard cap per account)10,000 to 40,000 requests per 10-minute sliding window depending on tierPipedrive
Webhook Payload SignatureHMAC-SHA256 signature in Typeform-Signature headerHTTP Basic Auth headers on webhook endpointsTypeform
Native Ecosystem Integrations120+ direct marketplace integrations500+ direct App Marketplace integrationsPipedrive
Custom Field MappingHidden fields, variables, and question reference tagsCustom fields supported across Person, Organization, and Deal objectsPipedrive
Self-HostingSaaS only (Cloud-hosted)SaaS only (Cloud-hosted)Tie
Start freeTry Typeform →Try Pipedrive →

ROI metrics

Hours saved / mo

35

Typeform / mo

$50

Pipedrive / mo

$140

Break-even

1.9 wks

Annual savings

$18,900

Automating lead intake saves 35 rep hours monthly; at a $50/hour fully loaded labor rate, the pipeline yields a net positive return within 14 days.

Step-by-step setup guide

  1. 1.Provision API Tokens in Typeform and Pipedrive

    Navigate to Typeform Account Settings > Personal Tokens and generate a token with 'forms:read' and 'webhooks:write' scopes. In Pipedrive, navigate to Personal Preferences > API and copy your 40-character hexadecimal API token.

  2. 2.Configure Typeform Webhook Subscription

    Register your webhook listener URL with Typeform's API. Ensure you specify a shared secret to enable HMAC-SHA256 signature verification on incoming responses.

    curl -X PUT https://api.typeform.com/forms/{form_id}/webhooks/pipedrive-sync \
      -H "Authorization: Bearer TYPEFORM_PERSONAL_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"url": "https://api.yourdomain.com/webhooks/typeform", "enabled": true, "secret": "secure_webhook_secret_key"}'
  3. 3.Verify Payload Signature and Extract Lead Fields

    Inspect the 'Typeform-Signature' header on incoming requests. Calculate sha256=HMAC_SHA256(request_body, secret) and match it to verify authenticity. Then extract email, company size, and budget from the 'answers' array using field references.

  4. 4.Create or Deduplicate Person in Pipedrive

    Execute a search against Pipedrive's '/persons/search' endpoint using the applicant's email address. If no match is found, send a POST request to '/persons' to create the contact record.

    curl -X POST "https://api.pipedrive.com/v1/persons?api_token=PIPEDRIVE_API_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"name": "Alex Rivera", "email": [{"value": "alex@company.com", "primary": true}], "phone": [{"value": "+15550198421", "primary": true}]}'
  5. 5.Instantiate Deal in Qualified Pipeline Stage

    Post to '/deals' with the person_id returned from step 4. Assign the deal value based on the Typeform budget response and map it to your target sales pipeline stage ID.

    curl -X POST "https://api.pipedrive.com/v1/deals?api_token=PIPEDRIVE_API_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"title": "Alex Rivera - Qualified Form Lead", "value": 12000, "currency": "USD", "person_id": 48102, "stage_id": 2, "status": "open"}'

Webhook payload example

POST https://api.yourdomain.com/webhooks/typeform · event: form_response

{
  "event_id": "01HP4C939VNZS5E1674YGR04XG",
  "event_type": "form_response",
  "form_response": {
    "form_id": "q2Lnmv6K",
    "token": "01HP4C939VNZS5E1674YGR04XG",
    "submitted_at": "2024-02-14T10:15:30Z",
    "definition": {
      "id": "q2Lnmv6K",
      "title": "Enterprise Sales Qualification",
      "fields": [
        {"id": "eml_1", "ref": "work_email", "type": "email", "title": "What is your work email?"},
        {"id": "num_1", "ref": "team_size", "type": "number", "title": "How many employees?"},
        {"id": "cur_1", "ref": "annual_budget", "type": "number", "title": "Expected annual budget?"}
      ]
    },
    "answers": [
      {"type": "email", "email": "alex@company.com", "field": {"id": "eml_1", "type": "email", "ref": "work_email"}},
      {"type": "number", "number": 45, "field": {"id": "num_1", "type": "number", "ref": "team_size"}},
      {"type": "number", "number": 12000, "field": {"id": "cur_1", "type": "number", "ref": "annual_budget"}}
    ]
  }
}

Typeform: pros & cons

  • ✅ Conversational UI generates completion rates 15-30% higher than static forms
  • ✅ Payloads contain explicit question reference tags (ref) to prevent broken mappings
  • ✅ Native HMAC-SHA256 signature verification secures outbound webhooks
  • ⚠️ Strict 2 requests-per-second API throughput cap
  • ⚠️ High cost scaling ($83/month for Plus plan if exceeding 1,000 responses)

Pipedrive: pros & cons

  • ✅ Straightforward REST API documentation with predictable CRUD endpoints
  • ✅ Generous token-based rate limits (up to 40,000 calls per 10 minutes)
  • ✅ Pre-configured visual deal stages optimize automated intake workflows
  • ⚠️ Requires manual custom field ID resolution prior to POST payloads
  • ⚠️ No free tier available after initial trial expiration

FAQ

How do you handle Typeform's 2 req/s rate limit during inbound traffic spikes?

Push incoming webhook payloads directly onto an intermediate message broker (such as AWS SQS or Redis BullMQ) and process worker requests to downstream endpoints at a controlled rate.

How are custom Pipedrive deal fields referenced via the REST API?

Pipedrive generates a 40-character hash for custom fields (e.g., 'a1b2c3d4e5f6g7h8_team_size'). Query the 'GET /dealFields' endpoint once during configuration to retrieve this key, then pass it as a JSON parameter.

What happens if a form respondent already exists in Pipedrive?

Query 'GET /persons/search?term={email}' before creation. If an existing 'item.id' returns, attach the new Deal to that existing person ID instead of running a POST to '/persons'.

How do you validate that the webhook came directly from Typeform?

Read the 'Typeform-Signature' header, compute an HMAC-SHA256 hash using your stored secret over the raw binary request payload, and perform a timing-safe equality comparison.

Related integrations & comparisons