Typeform is hosted on Typeform’s domain, even when embedded in your page. A cookie set on your site cannot be read there, so the standard cookie hand-off used by a plain website connection does not apply. The visitor’s identifier has to travel as a URL parameter instead.
Two settings do that: a custom parameter in the form, and one line removed from the embed code.
Set up the connection in KO
- In Connects, click Add connect….
- In the Websites, quizzes, lead forms, chats category, choose Website: tracking & events and click Connect.
- Set the platform to Typeform and describe the connection.
- Keep the HTML code and the Webhook URL open — both are used below.
Install the tracking script
Install the HTML code on the site that embeds the form — inside <head>, or through your
tag manager. The script has to run on your page, not inside the form: your page is
where the visitor’s source is known.
Let the form receive the identifier
- In Typeform, open the form and go to Logic.
- Open the first Pull data in block for editing.
- Add a Custom URL parameter named
ko_touch_id. KO fills this parameter in on your page, and Typeform carries the value through to the submission. - Optionally enable the
utm_*parameters under Source tracking — they will then be visible on the response inside Typeform itself, which is handy when checking your work. - Save.
Add the webhook
- In Typeform, go to Connect → Webhooks.
- Click Add a webhook and paste the webhook URL from the KO connection. Save.
- Switch the webhook to Webhook ON.
Fix the embed code
Typeform gives you an embed snippet like this:
<div data-tf-live="XXXXX"></div><script src="//embed.typeform.com/next/embed.js"></script>
Use only the first part — drop the <script> tag:
<div data-tf-live="XXXXX"></div>
KO loads the form itself and appends ko_touch_id and the UTM tags to it. Leaving
Typeform’s own loader in place means the form is embedded before those parameters are
added, and every submission arrives without a source.
Turn the connection on
When you have set all the options, switch the connection status to Active:
- Active — everything works.
- Setting up — everything works, but data updates are paused.
- Archived — the connection is off; data and statistics are kept.
- Delete — removes the connection’s data and statistics.
Check that data is coming in
Open the page with the form and submit a response yourself.
In the connection settings, press Reload data: your visit should appear in Last visits and the response in Last leads, with a source.
If it doesn’t add up
Responses arrive without a source — check the embed. The <script> line is the usual
culprit; it is easy to paste the snippet back in unchanged after a redesign.
Check the parameter name. It is ko_touch_id exactly, in the form’s Pull data in
block.
Check the tracking script is on the embedding page, not only on the home page.