> ## Documentation Index
> Fetch the complete documentation index at: /help/llms.txt
> Use this file to discover all available pages before exploring further.

# Typeform

> Everyone who answers your Typeform becomes a contact in Kerux and can start a campaign, without Zapier.

> [!NOTE]
>
> **Pro plan.** Lead forms (the secret URLs in **Forms** and the **Lead form submitted** trigger) are part of Pro and Agency (and the free trial), like Lead Ads. On Starter, **Connections** shows **Part of Pro** with an **Upgrade to Pro** button, and making a URL or adding the trigger shows **Part of Pro: Lead forms (Typeform, Tally, Jotform...)** with the same button. URLs and triggers you already have keep adding contacts on every plan. See [Plans and billing](/help/account/billing.md).

Using Typeform for demo requests, sign-ups or surveys? Everyone who submits your typeform can become a contact in Kerux and start the campaign you choose.

No Zapier or Make in between: Typeform sends each submission straight to a secret URL of your workspace, and Kerux reads Typeform's own format.

## Connect Typeform

**1. Make your secret URL in Kerux**

Go to **Integrations > Connections**. In **Forms**, click **Connect** on the **Typeform** row: a side panel opens. Under **Name your first URL**, type a name you'll recognize (for example *Demo request*) and click **Create URL**, then **Copy**. Keep it private: anyone with this URL can add contacts to your workspace.

**2. Add the webhook in Typeform**

In Typeform, open your form and click **Connect** at the top, then the **Webhooks** tab. Click **Add a webhook**, paste your Kerux URL as the endpoint and save it.

**3. Turn it on**

Turn the webhook **on** with the switch next to it. Typeform only sends to webhooks that are on.

**4. Send a test**

Click **View deliveries**, then **Send test request**, or submit your live form once. In Kerux, the URL's card shows the fields of that submission.

Kerux names each field after its question's title, keeps hidden fields (like `utm_campaign`) and variables as custom fields, and reads choice answers as their labels. Questions people skipped don't arrive (Typeform leaves them out).

## Choose where each field goes

When the first submission arrives, the URL's card in the panel stops saying **Waiting for your first submission...** and shows **Where each field goes**: every field of that submission (only the field names, never the answers) and where Kerux puts it.

* **Automatic** is Kerux's guess. It uses the field's type when Typeform sends one (an email question is the email), then the question's words (*First name*, *Company*, *Job title*, *Phone*...), and any answer that is an email address or a LinkedIn profile URL.
* Pick another target to change it: **Email**, **First name**, **Last name**, **First and last name**, **Phone**, **Company**, **Job title**, **Location**, **Address**, **City**, **Country**, **Postal code**, **LinkedIn profile**, a **Custom field** (use it in messages as `{{contact.custom.<name>}}`), or **Don't keep**.
* Click **Save mapping**. Every next submission uses it.

**Test** shows how a sample Typeform submission (taken from Typeform's documentation) would be read with your mapping. Nothing is saved and no contact is made.

## Start a campaign from the form

**1. Add the trigger**

Open your campaign, go to its **Triggers** tab and click **+ Add** > **Lead form submitted**.

**2. Pick the source**

Under **Source**, pick **Typeform**. Under **Which URL**, pick one of your Typeform URLs or **Any Typeform URL**. Leave **Every form**, or pick **Only these forms** once a submission from them has arrived. Click **Add the trigger**.

Pick **Any source (every lead form and form tool)** instead to start the campaign from every form and every Facebook / Instagram lead ad at once.

## Good to know

* **No LinkedIn profile? They still come in.** People without a LinkedIn URL become contacts by their email. Email and other steps run; LinkedIn steps wait (shown in **Home > Tasks** with the reason *missing LinkedIn URL*) until someone adds their profile, then continue by themselves.
* **Never twice.** Typeform may send the same submission again (a retry, a test sent twice): Kerux recognizes it by its response token and adds the person once. Someone who is already a contact is updated: empty fields are filled, their answers are saved as custom fields.
* **One URL per form.** Make as many URLs as you like (**Add another URL**), so each campaign can pick its own.
* **If the URL leaks**, click **Make a new URL** on its card: the old one stops working at once. Paste the new one in Typeform. **Turn off** stops the URL for good.
* **Limits.** Each URL takes up to 60 requests a minute; more get an answer to try again later. A body can be up to 256 KB.
* Only workspace owners and admins can make URLs and see them. Members see **Ask an admin** on the row.
* Answers are data, never instructions: whatever someone types in your form is stored as text, nothing else.

## With the API

The same URLs are in the public API: `GET /v1/integrations/form-relays`, `POST /v1/integrations/form-relays` (`{"tool": "typeform", "name": "Demo request"}`), `PATCH /v1/integrations/form-relays/{id}` (rename, or `mapping`), `POST /v1/integrations/form-relays/{id}/rotate`, `POST /v1/integrations/form-relays/{id}/test`, `DELETE /v1/integrations/form-relays/{id}`, and `POST /v1/workflows/{id}/lead-form-triggers` (`{"provider": "typeform", "page_id": "*"}`). See [the API](/help/developers/api.md).

## Sources

* Typeform: [Webhooks (help center)](https://help.typeform.com/hc/en-us/articles/360029573471-Webhooks) and [Example webhook payload](https://www.typeform.com/developers/webhooks/example-payload/).

> [!NOTE]
>
> Kerux reads Typeform's webhook as Typeform's documentation describes it. If a field arrives somewhere unexpected, change it under **Where each field goes**, or contact support from [Get help](/help/get-help.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.