Plain HTML
Two ways to add consent evidence to a hand-written page: wrap your existing form, or drive the widget from the browser SDK.
Evidence tooling, not legal advice. Whether a capture satisfies a particular consent requirement is for your counsel to decide.
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.
- Give your form a stable id. Paste the wrap snippet anywhere on the same page (after the form is easiest).
- The widget finds the form when it starts, adds the consent checkboxes under it, and records the capture when the visitor submits. Your form always still submits.
- Prefer code? The SDK snippet loads the widget and tells you when a capture succeeded.
Snippets
Wrap your formwrap
<script src="https://capchacloud.com/v1/widget.js" async></script>
<capcha-auth
data-capcha-client-id="YOUR_CLIENT_ID"
data-capcha-wrap="#contact-form"
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="website"
data-capcha-form-id="contact"></capcha-auth>
Browser SDK: load, mount and listenlatebind
<form id="contact-form" action="/thanks" method="post">
<input name="name" type="text" autocomplete="name">
<input name="email" type="email" autocomplete="email">
<input name="phone" type="tel" autocomplete="tel">
<button type="submit">Send</button>
</form>
<script src="https://capchacloud.com/integrations/capchacloud-browser.js"></script>
<script>
var cc = CapchaCloudBrowser.init({ clientId: "YOUR_CLIENT_ID" });
cc.on("capture:success", function (e) { console.log("evidence recorded:", e.certificate_id); });
cc.on("widget:error", function (e) { console.warn("capture widget problem:", e.message); });
cc.load().then(function () {
cc.mount(null, { wrap: "#contact-form", company: "Your Company Name", privacyUrl: "https://example.com/privacy", termsUrl: "https://example.com/terms", campaignId: "website", formId: "contact" });
});
</script>
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
- None specific to a vendor. The test runs the real widget.js against this markup.
This is not a marketplace app, partner listing or certified integration of Plain HTML. It is a snippet for your own pages.