Integration BlueprintUse case: instant lead alertsUpdated 2026-10-19

Typeform to Slack: Real-Time Lead Alert Integration

Integrating Typeform with Slack delivers sub-second inbound lead alerts to internal sales channels using HMAC-signed form_response webhooks and Slack Block Kit incoming webhooks. This architecture replaces manual CSV exports and polling scripts, preventing lead decay by notifying sales representatives the moment a prospect completes a form.

Explore: Forms · Team Communication

Comparison matrix

FeatureTypeformSlackEdge
Entry Pricing$25/month (Basic plan, 100 responses/month)$8.75/user/month (Pro plan billed annually)Tie
Free Tier Limits10 responses/month across all forms90-day message history, 10 app integrationsSlack
Authentication MethodBearer token (Personal Access Token or OAuth2)Bot user token (xoxb-) or Incoming Webhook URLSlack
API Rate LimitsStrict 2 requests per second per accountTiered: Tier 1 (1/min) to Tier 4 (100+/min)Slack
Webhook SecuritySHA256 HMAC signature via Typeform-Signature headerUnique secret webhook URL tokens or Slack signature headersTypeform
Self-HostingCloud SaaS only; no on-premises deploymentCloud SaaS only; no on-premises deploymentTie
Native App Ecosystem120+ direct pre-built integrations2,600+ apps in Slack App DirectorySlack
Message Formatting PayloadStatic field definitions with nested answers arrayDynamic Block Kit JSON with interactive buttons and sectionsSlack
Start freeTry Typeform →Try Slack →

ROI metrics

Hours saved / mo

18.5

Typeform / mo

$25

Slack / mo

$88

Break-even

1.2 wks

Annual savings

$9,640

Integrating Typeform and Slack pays for itself within 9 business days by eliminating manual lead distribution and reducing inbound lead response times from 3 hours to under 30 seconds.

Step-by-step setup guide

  1. 1.Create a Slack App and Enable Incoming Webhooks

    Navigate to api.slack.com/apps, click 'Create New App' (From scratch), select your development workspace, and toggle 'Incoming Webhooks' to On.

    curl -X POST -H 'Content-type: application/json' --data '{"text":"Webhook initialized"}' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
  2. 2.Provision an Incoming Webhook URL to the Target Lead Channel

    Click 'Add New Webhook to Workspace' under the Incoming Webhooks panel, choose your target channel (e.g., #sales-leads), and copy the generated Webhook URL containing workspace, service, and token identifiers.

  3. 3.Generate a Typeform Personal Access Token

    Open Typeform Account Settings > Personal Tokens and click 'Generate a new token'. Name the token 'slack-alerts' and check scopes 'forms:read' and 'webhooks:write'.

    export TYPEFORM_PAT="tfp_v2_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  4. 4.Register the Webhook Endpoint on Typeform

    Use the Typeform Create/Update Webhook API to register the receiver endpoint or intermediary worker URL with a secret key for signature verification.

    curl -X PUT "https://api.typeform.com/forms/{form_id}/webhooks/slack-lead-alert" -H "Authorization: Bearer $TYPEFORM_PAT" -H "Content-Type: application/json" -d '{"url":"https://your-worker.example.com/webhook","enabled":true,"secret":"your_shared_webhook_secret"}'
  5. 5.Transform Typeform Payload to Slack Block Kit

    Deploy an intermediary serverless function (AWS Lambda or Cloudflare Worker) to verify the Typeform-Signature HMAC SHA256 header, map the nested answers array to key-value pairs, and post the formatted Block Kit payload to Slack.

    curl -X POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX -H 'Content-Type: application/json' -d '{"blocks":[{"type":"header","text":{"type":"plain_text","text":"New Enterprise Lead"}},{"type":"section","fields":[{"type":"mrkdwn","text":"*Name:* Jane Doe"},{"type":"mrkdwn","text":"*Email:* jane@example.com"}]}]}'

Webhook payload example

POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX · event: form_response

{
  "event_id": "01HP4M19R9XYZ8B12CDEFGH456",
  "event_type": "form_response",
  "form_response": {
    "form_id": "vK3l9x",
    "token": "01HP4M19R9XYZ8B12CDEFGH456",
    "landed_at": "2024-03-24T10:14:22Z",
    "submitted_at": "2024-03-24T10:15:05Z",
    "hidden": {
      "utm_source": "google",
      "utm_campaign": "q1_enterprise"
    },
    "definition": {
      "id": "vK3l9x",
      "title": "Enterprise Contact Form",
      "fields": [
        {
          "id": "name_field_01",
          "ref": "lead_name",
          "type": "short_text",
          "title": "What is your name?"
        },
        {
          "id": "email_field_02",
          "ref": "lead_email",
          "type": "email",
          "title": "What is your work email?"
        }
      ]
    },
    "answers": [
      {
        "type": "text",
        "text": "Jane Doe",
        "field": {
          "id": "name_field_01",
          "type": "short_text",
          "ref": "lead_name"
        }
      },
      {
        "type": "email",
        "email": "jane@example.com",
        "field": {
          "id": "email_field_02",
          "type": "email",
          "ref": "lead_email"
        }
      }
    ]
  }
}

Typeform: pros & cons

  • ✅ Significantly higher conversion rates due to conversational single-question UX
  • ✅ Built-in SHA256 HMAC payload signing provides native tamper detection
  • ✅ Rich field types including file uploads, ratings, and hidden UTM parameters
  • ⚠️ Base $25/mo plan caps volume at 100 responses per month
  • ⚠️ API strictly rate-limited to 2 requests per second across all endpoints

Slack: pros & cons

  • ✅ Block Kit allows flexible, interactive visual formatting of form responses
  • ✅ Incoming webhooks support direct target channel overrides via app configurations
  • ✅ Instant push notifications reach desktop and mobile sales teams simultaneously
  • ⚠️ Free tier limits workspace search history to 90 days
  • ⚠️ Per-seat pricing increases rapidly when scaling a 10+ person sales organization

FAQ

Can I route Typeform responses directly to Slack without an intermediary server?

Yes, Typeform offers a native direct Slack integration within the Connect tab of your form builder, which maps form fields into standard Slack message text without custom middleware. However, deploying a lightweight proxy or serverless function is necessary if you require custom Block Kit formatting, response routing based on conditional logic, or HMAC signature validation.

How do I verify the authenticity of a Typeform webhook payload?

Compute the HMAC SHA256 hash of the raw HTTP request body using the shared secret configured during webhook creation. Compare the computed digest against the base64-encoded string supplied in the 'Typeform-Signature' header; if they match, the payload is authentic.

What happens if Slack hits a rate limit when receiving high-volume submissions?

Slack incoming webhooks throttle excessive bursts with HTTP 429 Too Many Requests responses and include a 'Retry-After' header indicating wait seconds. Your webhook receiver architecture must queue payloads (e.g., using AWS SQS or Redis) and retry delivery exponentially to prevent message loss.

Can I pass hidden URL parameters like UTM tags from Typeform to Slack?

Yes. Any hidden fields appended to the form URL (e.g., ?utm_source=linkedin) appear under the 'form_response.hidden' object in the webhook payload and can be extracted directly into your Slack message text or Block Kit elements.

Related integrations & comparisons