<!-- BusyBot node reference — https://busybot.net/tools/typeform-trigger/ -->

> Node: Typeform Trigger (`typeform_trigger`) · Webhook trigger · v1
> Category: Productivity · Credentials: Typeform (`typeformApi`)
> Updated: 2026-08-16

# Typeform Trigger

> Trigger on Typeform form submission

## Overview

Triggers a workflow when a respondent submits a Typeform form. Receives the webhook payload from Typeform containing form response data including answers, field definitions, submission metadata, and respondent details. Supports HMAC SHA-256 signature verification. Can simplify nested answer structures into flat key-value pairs and optionally return only answers or the full payload.

**Category:** Productivity  
**Tool Name:** `typeform_trigger`  
**Version:** 1

**Appearance:** Icon: `si-typeform` | Color: `#262627`

## Node Type

**Trigger** — webhook (receives incoming HTTP callbacks)

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | None (trigger node) |
| Output | `Output` |

## Credentials

This tool requires **Typeform** credentials.
See the [Credentials Guide](https://busybot.net/credentials/typeform-api/) for setup instructions.

### Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Form ID | `string` | Yes | — | The ID of the Typeform form to watch for submissions. Find this in your Typeform form URL (e.g., https://yourname.typeform.com/to/FORM_ID). |
| Simplify Answers | `boolean` | No | `true` | Whether to convert the answers to key:value pairs (FIELD_TITLE: USER_ANSWER) for easy processing. When enabled, nested answer structures are flattened into simple pairs. |
| Only Answers | `boolean` | No | `true` | Whether to return only the answers of the form and not any of the other data (event metadata, form definition, etc.). |

## Output Data

Each submission produces one output item. Its shape is decided by **Simplify Answers** and **Only Answers**:

| Simplify Answers | Only Answers | Item content |
|---|---|---|
| `true` | `true` | One key per question, using the question title as the key and the answer as the value |
| `true` | `false` | The full Typeform payload, with `form_response.answers` replaced by the simplified title/value map |
| `false` | `true` | The raw answer objects, keyed by Typeform field ID |
| `false` | `false` | The raw Typeform payload, unchanged |

These fields are always added on top:

- `_trigger` — always `typeform_webhook`
- `_timestamp` — ISO 8601 timestamp of when the submission was received
- `_webhookEvent` — the payload's `event_type`, defaulting to `form_response`
- `_formId` — the Typeform form ID the response belongs to
- `_submissionToken` — the response token Typeform assigns to the submission
- `_submittedAt` — the submission timestamp reported by Typeform

File upload answers are downloaded and attached to the item as binary properties named `file_<fieldId>`, and the corresponding answer carries a `_binaryRef` pointing at that property. Files larger than 50 MB, and downloads that fail, are left as URLs in the answer; the reason is recorded per field under `_fileNotes`.

A submission that arrives without the expected `definition` and `answers` data produces a single item carrying `_trigger`, `_timestamp` and an `_error` message instead of response data.

Because question titles become keys, double braces in a title are rewritten to square brackets so they cannot be mistaken for an expression.

Reference the payload downstream by expression, e.g. `{{ $json["What is your email?"] }}`.

## Usage Examples

- Trigger a workflow when someone submits a feedback form
- Capture Typeform survey responses and store in a spreadsheet
- Start a workflow when a new application is submitted via Typeform
- Collect form data from Typeform and send confirmation emails

## Example Configuration

Flat answers keyed by question title — the simplest shape to work with:

```json
{
  "type": "typeform_trigger",
  "parameters": {
    "formId": "AbCdEf12",
    "simplifyAnswers": true,
    "onlyAnswers": true
  }
}
```

Full payload with simplified answers, when you also need the submission metadata:

```json
{
  "type": "typeform_trigger",
  "parameters": {
    "formId": "AbCdEf12",
    "simplifyAnswers": true,
    "onlyAnswers": false
  }
}
```

Raw Typeform payload, unchanged:

```json
{
  "type": "typeform_trigger",
  "parameters": {
    "formId": "AbCdEf12",
    "simplifyAnswers": false,
    "onlyAnswers": false
  }
}
```

### Trigger Behavior

- **Activation:** When the workflow is activated, a webhook endpoint is registered with the service.
- **Deactivation:** The webhook is automatically unregistered when the workflow is deactivated.
- **Payload:** The incoming webhook payload is parsed and output as workflow items.
- **Verification:** Supports signature verification where applicable.

## Tips

Connects to Typeform via webhook. When a respondent submits the specified form, Typeform sends the response data to this trigger. Configure the Form ID to watch, and optionally simplify answers into key-value pairs. The trigger verifies webhook signatures using HMAC SHA-256 for security.