How it works
When a form requires a bot check:- The allGood script renders the widget on your page.
- The visitor’s browser produces a token, usually without them doing anything.
- The token is sent with the submission.
- allGood verifies it and refuses a missing or invalid one.
Provisioning it
There’s no “create widget” button. Connect a domain, wait for it to reach active, then press Sync on Settings → Web Edge. The widget is created — or extended to cover the new hostname — as part of that sweep. Until then the screen tells you so, and forms that require a bot check can’t be registered.
The Bot protection card, showing how many hosts the widget covers and the public sitekey.
Both switches have to agree
Bot protection is a two-sided decision.
A check runs only when both are on. Per-form opt-in is off by default.
The failure worth knowing about
Two places tell you before it bites:- The coverage chip on each row of the allowed origins list.
- The fourth step on a domain row, Bot protection ready.
What the visitor sees
If you use the allGood script, the widget is placed just before your form’s submit button and the Turnstile loader is fetched once per page. Style it with the.cf-turnstile class if you need to move it.
If you build the request yourself, you render the widget yourself and send the token. See the Form capture API.