Integration BlueprintUse case: survey analysisUpdated 2026-10-19

Typeform to Airtable: Survey Analysis Pipeline

Integrating Typeform and Airtable pairs high-completion conversational data collection with relational database analysis. By routing Typeform's form_response webhook directly into Airtable's REST API or native automations, teams eliminate CSV exports and enable immediate sentiment categorization, respondent segmentation, and automated reporting.

Explore: Forms · Databases & Spreadsheets

Comparison matrix

FeatureTypeformAirtableEdge
Entry Pricing$25/mo (Basic, 100 responses/mo)$20/user/mo (Team, billed annually)Airtable
Free Tier AvailabilityFree (10 responses/mo cap)Free (Up to 1,000 records/base)Airtable
API Rate Limit2 requests/second5 requests/second per baseAirtable
Authentication StandardOAuth 2.0 / Personal Access Token (Bearer)Personal Access Token (Scopes + Base restrictions)Tie
Webhook Payload SigningHMAC-SHA256 signature via Typeform-Signature headerHMAC secret validation via Webhook specificationsTypeform
Relational Data ModelingFlat structure (JSON responses, hidden fields)Multi-table relational schema with linked recordsAirtable
Direct Integrations Count120 native integrations1000+ native & ecosystem connectionsAirtable
Self-Hosting CapabilityCloud-only (SaaS)Cloud-only (SaaS)Tie
Start freeTry Typeform →Try Airtable →

ROI metrics

Hours saved / mo

24

Typeform / mo

$25

Airtable / mo

$200

Break-even

3.8 wks

Annual savings

$15,820

For a 10-person team spending 6 hours weekly on manual exports, cleansing, and charting, automated synchronization breaks even in under one month and saves over $15,000 annually in engineering and operational overhead.

Step-by-step setup guide

  1. 1.Create Airtable Schema and Obtain Credentials

    Create an Airtable Base named 'Survey Analysis' with a table named 'Responses'. Add columns: Response ID (single line text), Respondent Email (email), Score (number), and Feedback (long text). Generate a Personal Access Token with 'data.records:write' scope limited to this base.

    curl -X POST https://api.airtable.com/v0/appXXXXXXXXXXXXXX/Responses \
      -H "Authorization: Bearer patXXXXXXXXXXXXXX" \
      -H "Content-Type: application/json" \
      -d '{"fields": {"Response ID": "test_001", "Respondent Email": "test@example.com", "Score": 10, "Feedback": "Initial test."}}'
  2. 2.Retrieve Typeform Form ID and Question Field Keys

    Fetch the Typeform form definition using the Typeform API to identify field IDs and question references. Note down the 'form_id' and the respective IDs for the rating and text questions.

    curl https://api.typeform.com/forms/FORM_ID \
      -H "Authorization: Bearer tfp_XXXXXXXXXXXXXX"
  3. 3.Register the Webhook Endpoint in Typeform

    Create a webhook on Typeform pointing to your ingestion handler (e.g., AWS Lambda, Cloudflare Worker, or piped intermediary) using a PUT request. Set a secret to enable HMAC-SHA256 signature verification.

    curl -X PUT https://api.typeform.com/forms/FORM_ID/webhooks/airtable-sync \
      -H "Authorization: Bearer tfp_XXXXXXXXXXXXXX" \
      -H "Content-Type: application/json" \
      -d '{"url": "https://api.yourdomain.com/typeform-webhook", "enabled": true, "secret": "supersecret_hmac_key"}'
  4. 4.Implement Webhook Verification and Payload Normalization

    Inspect the 'Typeform-Signature' header, compute the SHA256 HMAC of the raw request body with your secret, and ensure matches. Extract the answers array, indexing by field 'id' or 'ref' into an Airtable fields object.

    const crypto = require('crypto');
    function verify(rawBody, signature, secret) {
      const hash = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('base64');
      return crypto.timingSafeEqual(Buffer.from(hash), Buffer.from(signature));
    }
  5. 5.Forward Processed Survey Payload to Airtable API

    Map the parsed Typeform responses to Airtable fields and issue a POST request to Airtable's record creation endpoint using batch operations or single inserts while respecting the 5 req/s rate limit.

    curl -X POST https://api.airtable.com/v0/appXXXXXXXXXXXXXX/Responses \
      -H "Authorization: Bearer patXXXXXXXXXXXXXX" \
      -H "Content-Type: application/json" \
      -d '{"records": [{"fields": {"Response ID": "resp_12345", "Respondent Email": "user@acme.com", "Score": 9, "Feedback": "Seamless integration."}}]}'

Webhook payload example

POST /api/v1/typeform-ingest · event: form_response

{
  "event_id": "01HEX5Y8G3A78KJ6VR1Q5BTYNZ",
  "event_type": "form_response",
  "form_response": {
    "form_id": "tYp3F0rm",
    "token": "01HEX5Y8G3A78KJ6VR1Q5BTYNZ",
    "landed_at": "2023-10-24T10:14:00Z",
    "submitted_at": "2023-10-24T10:15:32Z",
    "definition": {
      "id": "tYp3F0rm",
      "title": "Q4 Customer Satisfaction",
      "fields": [
        {
          "id": "email_field_1",
          "ref": "respondent_email",
          "type": "email",
          "title": "What is your email address?"
        },
        {
          "id": "rating_field_2",
          "ref": "nps_score",
          "type": "opinion_scale",
          "title": "How likely are you to recommend us?"
        },
        {
          "id": "text_field_3",
          "ref": "feedback_comments",
          "type": "long_text",
          "title": "Additional comments:"
        }
      ]
    },
    "answers": [
      {
        "field": {
          "id": "email_field_1",
          "type": "email",
          "ref": "respondent_email"
        },
        "type": "email",
        "email": "alex.dev@example.com"
      },
      {
        "field": {
          "id": "rating_field_2",
          "type": "number",
          "ref": "nps_score"
        },
        "type": "number",
        "number": 9
      },
      {
        "field": {
          "id": "text_field_3",
          "type": "text",
          "ref": "feedback_comments"
        },
        "type": "text",
        "text": "The API speed is great, but documentation needs more payload examples."
      }
    ]
  }
}

Typeform: pros & cons

  • ✅ Conversational UI delivers 15-30% higher completion rates than static forms
  • ✅ Native webhook payload delivery with SHA256 HMAC verification
  • ✅ Supports dynamic hidden fields to track user identifiers without manual input
  • ⚠️ Strict response limits on lower plans ($25/mo covers only 100 responses)
  • ⚠️ API rate limit is constrained to 2 requests per second

Airtable: pros & cons

  • ✅ Relational model links survey feedback directly to Customer and Product tables
  • ✅ Built-in Interface Designer allows real-time executive survey dashboards
  • ✅ Higher base throughput of 5 requests per second per base
  • ⚠️ Base storage hard caps (50,000 records on Team tier)
  • ⚠️ Per-seat pricing increases rapidly for large analytical teams

FAQ

How do you handle Airtable's 5 requests/second rate limit during survey spikes?

Implement an intermediate message queue (such as AWS SQS, Google Cloud Tasks, or Redis BullMQ). The webhook ingestion endpoint writes payloads to the queue immediately with a 200 OK, and a worker drains the queue into Airtable using 10-record batch POST calls at a throttled rate of 4 requests/second.

How can I authenticate webhook payloads to prevent spoofed survey submissions?

Supply a 'secret' when creating the Typeform webhook. Typeform will append a 'Typeform-Signature' header containing a SHA256 HMAC hash. In your backend, calculate the HMAC of the raw incoming request body using your secret key and run a constant-time comparison against the header value.

What happens when Typeform questions are added, deleted, or reordered?

Map fields using stable 'ref' identifiers rather than positional array indexes or dynamically generated 'id' values. In the Typeform builder, assign permanent references under question settings so payload answer extraction logic remains unaffected by UI changes.

Can I link responses to existing accounts in Airtable automatically?

Yes. Pass the internal Account ID into Typeform via hidden fields in the survey URL. During ingestion, populate an Airtable 'Linked Record' field with this ID, which immediately links the response to the target customer record without secondary lookup calls.

Related integrations & comparisons