# Typeform

Connect Typeforms to your workspace to automatically add people and trigger campaigns when they submit your form. Our typeform integration relies on a webhook from Typeform.

## How it works[](#how-it-works)

When you set up a Typeform integration, we’ll give you a personalized *Webhook URL*. You’ll provide this webhook URL to Typeform. Whenever someone submits your form, Typeform sends the form submission data to Customer.io.

The form submission creates a person in your workspace if they do not already exist, or updates them if they do. In both cases, we map form fields to attributes for each person.

We capture the first field on your form with an `type="email"` as the email attribute in Customer.io. For other fields, we convert the `label` to an [attributeA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages.](/journeys/attributes/)—limited to 40 characters and snake. For example, a field labeled “Form Field” is converted to a `form_field` attribute. After your first form/webhook submission, you can re-map form fields to attributes in Customer.io.

You can also trigger campaigns when people submit your form. This provides a handy way to automate personalized responses. You can personalize responses with [liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable `{{customer.first_name}}`.](/using-liquid) using either customer attributes that you assign from form submissions (`{{customer.<attribute>}}`) or form fields from the `form_submit` event (in the format `{{event.<form_field_id>}}`)!

## Connect Typeform to your workspace[](#setup)

As a part of this process, you’ll add a webhook to your Typeform. After someone submits your webhook-enabled form, it’ll appear in your workspace on the *Data & Integrations* > *Integrations* > *Forms* page. Then you’ll be able to map form fields to attributes.

1.  Go to *Data & Integrations* > *Integrations* > *Forms*. Click **Connect form** and select **Typeform**.
    
2.  Click **Copy** to get your webhook URL.
    
    [![Copy your webhook URL](https://docs.customer.io/images/typeform-setup.png)](#b9326abd944c94ba375c5a4329f56596-lightbox)
    
3.  In Typeform, go to your form > *Connect* > *Webhooks*, and click **Add a webhook**.
    
    [![Add a webhook in Typeform](https://docs.customer.io/images/typeform-webhook.png)](#eaaaee6bcedb539cb6cfd1e7a4c96f0f-lightbox)
    
4.  Paste the URL you copied in previous steps and click **Save webhook**.
    
5.  By default, Typeform webhooks are *OFF*. Make sure you turn your *Webhook ON*.
    
    [![Turn your Typeform webhook on](https://docs.customer.io/images/typeform-webhook-on.png)](#8e64d7a329d6779446b831d0737b6774-lightbox)
    

Now, Customer.io is set up to capture submissions from your Typeform. However, we suggest that you perform a test submission so that you can see how your form’s fields are mapped to attributes in Customer.io. This gives you the opportunity to re-map fields to attributes before you deploy your form to a wide audience.

### Map form fields to attributes[](#map-fields)

When you first submit a form, we map Typeform field labels to [attributesA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages.](/journeys/attributes/) in Customer.io. Friendly field labels may not map perfectly to your attributes. For example, we convert field labeled “What is your name” to a `what_is_your_name` attribute by default.

If your fields don’t map appropriately to your attributes, you can re-map them after someone submits your form for the first time.

1.  If you haven’t already, perform a test submission. In your Typeform, go to *Connect* > *Webhooks*, click **View deliveries**, and then click **Send test request**.
    
    [![typeform-test-request.png](https://docs.customer.io/images/typeform-test-request.png)](#ef18fee4cb8aed32caffaf17c89c1cb7-lightbox)
    
2.  In Customer.io, go to *Data & Integrations* > *Integrations* > *Forms* and refresh the page. If your form doesn’t appear, try clearing your browser cache.
    
3.  Click and select **Manage Form**.
    
4.  Click **Edit** under *Mapped Fields*\* to set the attributes for each form field. In each field, you can select an existing attribute or type in a new one.
    
    [![map Typeform fields to customer attributes](https://docs.customer.io/images/typeform-mapping.png)](#d817cecbfd59a704fa46046b48947a55-lightbox)
    
5.  Click **Save** when you’re done.
    

Now you can take advantage of form submissions to trigger campaigns, personalize messages, and more. See [Use form data in Customer.io](/integrations/data-in/connections/forms/forms-in-campaigns) for more information.

 Tests can create or update people in Customer.io

Whenever you send a test, it will create or update a person with test data in your workspace using the ID or email in the test request. You can use this person as a reference as you set up your form, but you should delete this person when you’re done.

## Find recent Typeform submissions[](#find-recent-typeform-submissions)

1.  Go to *Data & Integrations* > *Integrations* > *Forms*.
    
2.  Click and select **Manage Form** for your Typeform.
    

The *Submissions* card shows recent submissions. Click a submission to see details for that form.

[![A Typeform submission event](https://docs.customer.io/images/typeform-submissions.png)](#e6f27e36d0d89b8ca29f858bec826a7e-lightbox)