---
title: "Linkbreakers + Typeform: QR-triggered forms with each answer on the visitor"
description: "Connect Typeform by signing in once and every typeform behind your links and QR codes gets a hidden lbid field and a webhook, so each response lands on the exact visitor who scanned, with their email, name, phone and answers. Setup, what is matched and synced, and the Assistant and MCP tools."
canonical: "https://linkbreakers.com/help/article/linkbreakers-typeform-integration-qr-triggered-premium-forms"
last-updated: 2026-11-09
---

# Linkbreakers + Typeform: QR-triggered forms with each answer on the visitor

> Connect Typeform by signing in once and every typeform behind your links and QR codes gets a hidden lbid field and a webhook, so each response lands on the exact visitor who scanned, with their email, name, phone and answers. Setup, what is matched and synced, and the Assistant and MCP tools.

:::try-ai-prompt {"prompt":"Check my Typeform forms again and tell me which ones still need something from me","description":"Check your Typeform forms with the Assistant.","target":"assistant"}:::

## Short answer

Linkbreakers connects to Typeform directly. In the dashboard, open **Integrations**, pick **Typeform** and select **Connect Typeform** to sign in to your Typeform account. Linkbreakers then finds every typeform your links redirect to, adds a hidden field named `lbid` to each one and registers a webhook on it. When someone scans your QR code, the redirect carries their visit ID into the typeform, and when they submit, the response is added to that exact visitor: email, name, phone and every other answer.

No Zapier, Make or copied webhook is needed. The integration is available on every plan.

## Quick summary

- Connect once per workspace by signing in to Typeform (OAuth), no API key
- Typeforms behind your links are found automatically from the redirect steps of your workflows
- Linkbreakers adds the hidden `lbid` field and a webhook to each of those typeforms
- Each response is matched to the exact visit that opened the form, not guessed from timing
- Email, first name, last name and phone go to the visitor's standard fields; other answers become visitor attributes named after the question
- Responses come in as soon as the form is submitted
- Responses with no visit ID, such as a typeform opened directly, are skipped and counted
- Also managed from the Assistant, the MCP server or the REST API

## How it works

1. You connect Typeform. Linkbreakers looks at the redirect steps of your links' workflows and picks up every destination that is a typeform (an address on `typeform.com` with `/to/<form id>` in it).
2. For each of those typeforms, Linkbreakers adds a hidden field named `lbid` to the form definition, then registers a webhook tagged `linkbreakers` on it. Running it again never adds a second webhook.
3. When someone goes through the link, the redirect adds their visit ID after the `#` of the typeform address, where Typeform reads hidden fields.
4. When they submit, Typeform sends the response to Linkbreakers. The webhook address holds a secret, and the request's `Typeform-Signature` is checked too, so anything else is refused.
5. Linkbreakers reads the `lbid` hidden field, finds the visit, and adds the answers to that visitor.

Once a day, Linkbreakers checks the forms again: a hidden field or a webhook removed in Typeform is put back, and a typeform no longer behind a covered link loses its webhook.

## Connect Typeform

1. In Linkbreakers, open **Integrations** in the dashboard and pick **Typeform**.
2. Select **Connect Typeform**. You are sent to Typeform to sign in and approve access.
3. Back in Linkbreakers, the page shows the account it is connected as. The typeforms behind your links are prepared at once.
4. Check **Forms found**. Each typeform shows the link it is behind and a green check when it is ready. A form that needs something from you says what.
5. Optionally, set **Where** and **What comes in**, then save.

Linkbreakers asks Typeform for access to your account details, forms, webhooks and responses (`accounts:read`, `forms:read`, `forms:write`, `webhooks:read`, `webhooks:write`, `responses:read`, plus `offline` so the connection keeps working). The tokens are encrypted when stored and refreshed automatically.

To have a new typeform picked up, add a redirect to it in a link's workflow. Then select **Check forms again** on the Typeform page, or wait for the daily check.

## What gets synced

| Typeform answer | Linkbreakers visitor |
|---|---|
| Question whose title contains "email", "e-mail" or "courriel" | Email |
| Title containing "first name", "firstname", "prénom", "prenom" or "given name" | First name |
| Title containing "last name", "lastname", "nom de famille", "family name" or "surname" | Last name |
| Title containing "phone", "téléphone", "telephone", "mobile" or "cell" | Phone |
| Any other answered question | A visitor attribute named after the question title |

Choice answers come in as their labels, and a payment answer as its amount. Empty answers are left out. The `lbid` hidden field itself is not stored as an answer.

A question titled only "Name" or "Full name" is not split into first and last name: it is kept as an attribute with that title.

## Which visitors and which links

The Typeform page has the settings Linkbreakers integrations share, adapted to answers coming in:

- **Where**: **All links**, or **Selected links**, directories and tags. Only the typeforms of the links you choose are prepared, and only their responses are added to visitors.
- **When**: as soon as someone submits the form. There is nothing to choose.
- **What comes in**: **Every answer**, or **Only some answers**, where you pick the fields to keep, such as Email and Phone.

A response is skipped, and counted under **Skipped** on the page, when it has no visit ID (the typeform was opened directly, not through your link), when the visit belongs to another workspace, when it came through a link outside **Where**, or when none of its answers are among those you chose to keep.

The **Activity** section shows **Responses**, **Visitors enriched**, **Skipped** and **Last response**.

## Pause and disconnect

**Pause** stops responses from coming in: links stop adding the visit ID, and responses that arrive are ignored. **Activate** turns it back on.

**Disconnect** stops responses and removes the Linkbreakers webhook from your typeforms. The hidden `lbid` field stays in the forms, and answers already added to visitors stay on them.

In a link's workflow, a redirect to a typeform shows the Typeform logo when its responses are coming in, or a card that says **Not connected** or **Not syncing** with a button to fix it.

## Manage it from the Assistant, MCP or the API

Connecting needs you in the app, since it is a Typeform sign-in. Everything after that can be done by an agent.

**Assistant**: in the dashboard, ask "Which of my typeforms are ready to match responses?" or "Only bring in email and phone from Typeform".

**MCP server**: an agent connected to the [Linkbreakers MCP server](/help/article/mcp-server-setup) has `form_integrations_list`, `form_integration_get`, `form_integration_forms_list`, `form_integration_forms_prepare`, `form_integration_update` and `form_integration_disconnect`, with the tool `TYPEFORM`.

**REST API**, with a token that has the `integrations:read` or `integrations:write` scope:

```bash
curl https://api.linkbreakers.com/v1/form-integrations/FORM_TOOL_TYPEFORM/forms \
  -H "Authorization: Bearer $LINKBREAKERS_TOKEN"

curl -X POST https://api.linkbreakers.com/v1/form-integrations/FORM_TOOL_TYPEFORM/forms/prepare \
  -H "Authorization: Bearer $LINKBREAKERS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

curl -X PATCH https://api.linkbreakers.com/v1/form-integrations/FORM_TOOL_TYPEFORM \
  -H "Authorization: Bearer $LINKBREAKERS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"delivery": {"visitorData": "INTEGRATION_VISITOR_DATA_SELECTED", "visitorAttributeKeys": ["$email", "$phone"]}}'
```

## Limits and caveats

- **One Typeform account per workspace**
- **Only typeforms behind a redirect step** in a link's workflow are prepared. A typeform you share by other means brings nothing in
- **Only `typeform.com` addresses with `/to/<form id>`** are recognized. Typeforms on a custom domain are not
- **Responses without a visit ID are skipped**, for example when someone opens the typeform from a bookmark or a forwarded address
- **If Typeform refuses the hidden field**, the form shows "Add a URL parameter (hidden field) named lbid to this typeform." Add it in Typeform, then select **Check forms again**
- **Linkbreakers edits your typeforms**: it adds the `lbid` hidden field and a webhook. Disconnecting removes the webhook, not the field
- **One way.** Responses come into Linkbreakers; nothing is written back to Typeform except the hidden field and the webhook

## Frequently asked questions

### Do I still need Zapier to get Typeform answers on my QR code visitors?

No. Linkbreakers receives Typeform responses directly through its own webhook and adds them to the visitor who scanned.

### How does Linkbreakers know which visitor filled the typeform?

The redirect puts the visit ID in the typeform's `lbid` hidden field. Typeform sends it back with the response, so the match is exact, even when many people scan at the same time.

### Do I have to add the hidden field myself?

No. Linkbreakers adds it through Typeform's API. Only if Typeform refuses does the page ask you to add it.

### What happens to responses from people who did not come through my link?

They are skipped and counted under **Skipped**. Typeform still keeps them.

### What happens when I disconnect Typeform?

Responses stop coming in and the Linkbreakers webhook is removed from your typeforms. Answers already on visitors stay.

## Sources

- Linkbreakers Typeform integration page, API and MCP tools, checked in the product on 2026-11-09.
- Typeform developer documentation: https://www.typeform.com/developers/

## Last reviewed

2026-11-09 by Laurent Schaffner.
