<botshield-verify> element as BotShield Gate. With the offer on and a platform-user-ref that is not yet secured, the element draws the Link with BotShield ID chip instead of the verify button. This page covers what is specific to that chip. For everything else, see Web component.
The widget renders the chip only. Your page owns any heading, explanation or signed-in line around it.
- Link with BotShield ID surface
- Human Gate
The surface is set up in the Console under Secured Accounts, then Link with BotShield ID. The site key finds it, so no
scope is needed.The 3.3 widget (
3.0.12) is the current /sdk.js. A page pinned to an earlier 3.0 version labels the chip Link BotShield ID and can’t show the Link surface without a gate. See Widget versions.Attributes
state is set by the widget: idle, verifying, verified or failed. Read it, do not write it.
When the chip appears
In every row except the first two, the widget stays usable as a gate.
Chip states
Each state is the chip, a title over a short line, with at most one small link under it on a desktop.
On a phone the chip opens BotShield directly. There is no QR code and no code.
The code
The code has 6 characters from the letters and digitsABCDEFGHJKLMNPQRSTUVWXYZ23456789. It lasts 5 minutes and works once. On a desktop the code is always shown beside the QR code, so a person whose camera cannot scan can type it at app.botshield.ai/link.
The two refusals
Both refusals keep one BotShield ID to one account on your platform. Neither changes any existing link.botshield:failure.reason carries whichever name BotShield sent. Handle both.
Events
All events bubble and cross the Shadow DOM boundary, so you can listen on the element, a parent, ordocument.
botshield:success
Fired when the person confirmed.
Verify the token on your server before you act on it.
botshield:presence
Fired when BotShield’s answer about the account changes: whether it is secured right now, with no tap. The detail is { state, fresh_until }, and state: "none" means not, or no longer, secured. See Staying in sync.
botshield:presence-error
Fired once, with { reason: "stream_unavailable" }, when the widget cannot hold its live connection. The widget then asks every 60 seconds instead.
botshield:link-code
Fired when a code is created, for platforms that draw their own code and countdown.
botshield:failure
detail.reason is always present. These reasons are specific to Secured Accounts. For the reasons shared with BotShield Gate, such as origin_not_allowed and gate_not_active, see Web component.
An Unavailable result is not an accusation. It means the account was not secured this time.
Methods
verify(), reset() and getToken() work as they do for a gate. A call to verify() from your code is not a user gesture, so on a desktop the widget cannot open a new tab. It goes straight to the QR code and the code.
