These changes shipped with BotShield 3.0 on September 28, 2026. Production accepts both the old and the new names until the window closes.
You reached this page from the
Link header of a response if your integration still sends an old name. Find the name in the tables below and replace it before the sunset.
What changes
API parameters
The value does not change.
gate takes the same gate Key that you sent as scope.
Widget attributes
The widget attribute
scope does not change. Keep scope="your-gate-key" on <botshield-verify>. Only the API parameter is renamed.Widget events
During the window the widget fires all three events with the same
detail. If you listen to more than one of them, your handler runs more than once per click. Listen to botshield:gate-status only.
Gate status values
Responses that list gates use these status values. Requests that filter by status accept the old values during the window.
During the window each row carries the new value in
status and the old value in status_legacy.
Webhook event types
Webhook event types were renamed before the window and are not aliased. BotShield sends only the new types.What dual-served means
During the window every renamed name is dual-served: accepted in both forms on the way in, and returned in both forms on the way out.
You can move one call at a time. There is no switch to flip and no version to select.
How you are told
When a request uses an old name and not its replacement, the response says so in two places.Response headers
Response body
The response envelope gains a_deprecation object beside the result.
A request that uses only new names gets neither the headers nor
_deprecation. Log either signal in your integration to find the calls you still have to change.
After the sunset
From 15 January 2027:- A request that sends only an old name is refused. The error code is
alias_retired, and the message names the replacement. - Responses no longer carry the old fields, such as
scopeandstatus_legacy. - The widget no longer fires
botshield:census-statusorbotshield:multipass-status, and it ignoresenroll. - The deprecation headers and
_deprecationare no longer sent.
Removed behavior
link-on-verify on the widget and link_on_verify in the API used to make a successful gate pass remember that your user reference belongs to the human who passed. In 3.0 a gate pass no longer records anything about an account.
To bind an account to a human, offer Trusted Accounts. The person confirms the binding with a passkey.
Checklist
- Search your code for
scopein BotShield API calls and sendgate. Leave the widget attributescopeas it is. - Remove
enroll. The gate’s Notarize account with BotShield switch in the Console turns the offer on. Usenotarize="false"only to hide the offer on one placement. - Remove
link-on-verifyandlink_on_verify. - Listen to
botshield:gate-statusand remove listeners for the two old event names. - Read
statusand stop readingstatus_legacy. - Check that your webhook endpoints are subscribed to the current event types.
- Confirm that your responses no longer carry the
Deprecationheader.
