Skip to main content

Typeform Integration

Signups from Typeform can be imported into CamBuildr automatically

Written by Domonkos Horváth

Integration

To integrate Typeform into CamBuildr a Webhook has to be added to the created form. This Webhook is triggered each time someone completes the typeform and sends data to the Cambuildr.

In the Form view, click the 'Connect' Tab, then 'Webhooks' and finally the button 'Add a webhook' (see screenshot):

Webhook configuration in Typeform

In the popup, the Webhook URL, that defines where the data will be sent, has to be entered. This is a CamBuildr endpoint and can be located in your CamBuildr under Settings > Integrations. Your URL will look similar to the one in the screenshot:

After adding the URL you need to enable the Webhook, as it is disabled by default, and you are ready to go.

Basic Configuration

CamBuildr always requires an email address to be able to store data. Thus, exactly one of the answers in your typeform needs to be of type 'Email', otherwise no data will be stored in CamBuildr:

CamBuildr Action

For every person that completes the typeform, an action in the CamBuildr is set. By default the action has the following properties:

  • name: submitted

  • source: Typeform-{Form-ID}

  • vendor: Typeform

The following screenshot shows the default action in the action overview of a person:

It is possible to overwrite name and source (and define a context) by appending the respective query parameter to the Webhook URL, for instance:

https://demo.cambuildr.com/api/v1/hooks/typeform?action=my_action&source=my_source&context=my_context

Extended Configuration

Custom Fields

The user input of specific questions can be stored in custom fields of CamBuildr.

For this to work, a custom field needs to exist, whose name can be found in the text of one of the typeform questions. If this is the case, the answer is stored into this custom field. We would suggest to use the complete text of the typeform question as custom field name.

As an example, we created a question "How satisfied are you?" and created a custom field with exactly that name in the CamBuildr. After completing the typeform, the participant now has his answer set in the custom field:

If the typeform field accepts multiple values, these values are stored in the custom field comma-separated.

Tags

To set specific tags to all people that complete a typeform, the query parameter person_tags can be appended to the Webhook URL (can also contain a list of comma separated tags):

https://demo.cambuildr.com/api/v1/hooks/typeform?person_tags=tag1,tag2

The tags are given as names, not as IDs, and the same list is applied to every submission of that form. If a name does not exist yet, a new tag is created when your workspace allows tags to be created on signup.

Tags that are consents

If your workspace uses Multi-Consent, a tag that represents a consent belongs in the separate consentable_tags parameter, not in person_tags:

https://demo.cambuildr.com/api/v1/hooks/typeform?consentable_tags=Newsletter,Campaign updates

Sending a tag through consentable_tags records the consent, so only use it for a consent your typeform actually asks for. What happens next depends on the tag:

  • A consentable tag that requires double opt-in triggers the confirmation email. For somebody who is not in your database yet, the whole signup waits in the quarantine zone and is only stored once they click the link.

  • A consentable tag that does not require double opt-in is set immediately, and the consent is logged with the tag's consent text.

A consentable tag placed in person_tags instead behaves as before: one without double opt-in is still set, one that requires double opt-in is ignored, because person_tags cannot express that somebody accepted a consent.

Sending tag IDs or a rejected consent

A comma separated list is always read as tag names. To address tags by their CamBuildr ID, or to pass an unticked checkbox through explicitly, send JSON instead (URL-encoded):

consentable_tags=[{"id":1234,"consent_accepted":true},{"screen_name":"Newsletter","consent_accepted":false}]

Each entry needs an id (as a number) or a screen_name; consent_accepted defaults to true when it is left out.

One URL for every submission

The webhook URL is fixed, so whatever you put in it is sent with every submission of that form. That is right for a consent your form requires — a mandatory checkbox people have to tick to submit — but not for an optional one. For an optional consent, collect the signup with a CamBuildr landing page form, or send it to the People API (directly or through a tool like Zapier), where the consent can be passed per submission.

Action Value

If a 'score' is passed from the typeform, this score is stored as 'value' for the created CamBuildr action.

Campaign Association

To associate every person who completes the typeform with a specific campaign, append the campaign_id query parameter to the Webhook URL:

https://demo.cambuildr.com/api/v1/hooks/typeform?campaign_id=1234

It can be combined with the other parameters above. Unknown or cross-tenant campaign IDs are ignored.

Did this answer your question?