Typeform
Typeform runs inside its own iframe, so CapchaCloud cannot wrap its fields. Capture consent on your page, hand the certificate id to Typeform, and use webhooks for server-side checks.
Set up
- Get your client id (it starts with tnt_) from Magic Setup in the dashboard at capchacloud.com/app. Your site origin must be allowlisted there, or the widget will not boot.
- Be clear about the limit: a Typeform embed is a cross-origin iframe. No script on your page, ours included, can read or wrap fields inside it. CapchaCloud evidence is therefore captured on YOUR page, before or beside the Typeform.
- Use the hand-off snippet: it listens for the capture-success event and passes the certificate id into the Typeform as a hidden field, so every response carries the id of its evidence record.
- Optionally point a Typeform webhook at Zapier or Make and run server-side checks (see the Zapier / Make page). This is webhook-based, no marketplace listing.
Snippets
Hand the certificate id to Typeform as a hidden fieldhandoff
<script src="https://capchacloud.com/v1/widget.js" async></script>
<script src="https://capchacloud.com/integrations/capchacloud-browser.js"></script>
<capcha-auth id="capcha-consent" data-capcha-client-id="YOUR_CLIENT_ID" data-capcha-company="Your Company Name" data-capcha-privacy-url="https://example.com/privacy" data-capcha-terms-url="https://example.com/terms" data-capcha-campaign-id="typeform" data-capcha-form-id="typeform-intro"></capcha-auth>
<div id="tf" data-tf-live="TYPEFORM_FORM_ID" style="display:none"></div>
<script src="//embed.typeform.com/next/embed.js"></script>
<script>
var cc = CapchaCloudBrowser.init({ clientId: "YOUR_CLIENT_ID" });
cc.on("capture:success", function (e) {
var tf = document.getElementById("tf");
tf.setAttribute("data-tf-hidden", "certificate_id=" + encodeURIComponent(e.certificate_id || ""));
tf.style.display = "block";
});
</script>
Server-side check of a Typeform submission (run from Zapier, Make or your own endpoint)server
curl -sS https://capchacloud.com/api/v1/verify-lead \
-H "Authorization: Bearer $CAPCHACLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"lead@example.com","phone":"+15551234567"}'
What is tested
Every snippet on this page is checked by an automated test that loads the page, takes the snippet out of it, and runs the real /widget.js in a browser DOM: the attributes must be exactly the ones the widget reads, the form selector must match exactly one form, and a test submission must produce a capture request carrying your campaign and form ids.
What is not verified
- We have not run this against a live Typeform account. The data-tf-hidden attribute follows Typeform's embed documentation; confirm hidden fields are enabled on your form.
- A server-side webhook cannot create browser-captured consent evidence (the capture API requires a human Turnstile token). The server-side calls shown check and enrich a lead; they do not substitute for the on-page capture.
This is not a marketplace app, partner listing or certified integration of Typeform. It is a snippet for your own pages.