Skip to main content
These changes shipped with BotShield 3.0 on September 28, 2026. Production accepts both the old and the new names until the window closes.
BotShield 3.0 renames several parameters, attributes and events. Your existing integration keeps working. For a fixed period, the alias window, BotShield accepts both the old name and the new name. An alias is an old name that still works and means the same as its replacement. 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.
An endpoint that is subscribed to an old event type receives nothing, and no error is reported. Open the endpoint in the Console under Settings, Developer Tools, Webhooks, and subscribe it to the new types. See Webhook events.

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 scope and status_legacy.
  • The widget no longer fires botshield:census-status or botshield:multipass-status, and it ignores enroll.
  • The deprecation headers and _deprecation are 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

  1. Search your code for scope in BotShield API calls and send gate. Leave the widget attribute scope as it is.
  2. Remove enroll. The gate’s Notarize account with BotShield switch in the Console turns the offer on. Use notarize="false" only to hide the offer on one placement.
  3. Remove link-on-verify and link_on_verify.
  4. Listen to botshield:gate-status and remove listeners for the two old event names.
  5. Read status and stop reading status_legacy.
  6. Check that your webhook endpoints are subscribed to the current event types.
  7. Confirm that your responses no longer carry the Deprecation header.