> This page is for Developer Documentation.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.benchling.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.benchling.com/_mcp/server.

## \[Webhooks Promotion] Duplicate Webhooks for `beta` and stable versions

Duplicate webhook notifications (one `v0-beta` and one `v0`) are sent for each single trigger to ease the migration from beta to stable webhooks. Developers should acknowledge a single notification, depending on whether they’re using `v0-beta` or `v0`, and ignore the other. `v0-beta` webhooks are now deprecated, and will be sunset at some point in the near future.

### What’s changing?

Previously, app developers subscribing to Benchling Webhooks would expect that a single trigger will result in a single webhook notification. For example, a user in Benchling clicking a button in an app canvas will result in a single webhook notification similar to the following:

```
{
   "version": "0",
   "baseURL": "tenant.benchling.com",
   "tenantId": "ten_foo",
   "app": {
        "id": "app_bar",
        "version": "x.y.z",
   },
   "channel": "app_signals",
   "message": {
        "type": "v0-beta.x.y"
        ...
   },
}
```

As a part of the promotion of Benchling Webhooks from `beta` to stable, Benchling will eventually transition to sending the stable version of webhooks (i.e. `v0` instead of `v0-beta`). To ease the migration process, Benchling will be temporarily sending **two webhook notifications** for each trigger; a `v0-beta` and a `v0` webhook notification. For the example above, two distinct webhook notifications would be sent:

```
{
   "version": "0",
   "baseURL": "tenant.benchling.com",
   "tenantId": "ten_foo",
   "app": {
        "id": "app_bar",
        "version": "x.y.z",
   },
   "channel": "app_signals",
   "message": {
        "type": "v0-beta.x.y"
        ...
   },
}
// Separately:
{
   "version": "0",
   "baseURL": "tenant.benchling.com",
   "tenantId": "ten_foo",
   "app": {
        "id": "app_bar",
        "version": "x.y.z",
   },
   "channel": "app_signals",
   "message": {
        "type": "v0.x.y"
        ...
   },
}
```

It’s important to note that these are **duplicate notifications** send for the purposes of providing simultaneous support for apps that depend on either `v0-beta` or `v0` webhooks. They do not represent distinct user interactions or triggers; developers should expect to receive **both** webhooks, but only respond to **one of them**. We recommend working to support stable webhooks (i.e. `v0`) as soon as possible.

`v0-beta` webhooks are now officially marked as deprecated, and will be fully sunset at some point in the near future. A full sunset announcement will be posted to the changelog when a firm date has been established. Two important things to note about the webhooks promotion:

* As a part of the promotion of Webhooks to stable, `app->version` will be removed from all webhook versions.
* App activation webhooks (i.e. `lifecycle.activateRequested`) will continue to be sent in duplicate indefinitely due to legacy dependencies

### When is this happening?

Both `v0-beta` and `v0` webhook notifications are currently being sent; this will be the case for at least **30 days**, or until Webhook’s full promotion to stable. A separate sunset announcement with a firm sunset date is forthcoming; after, Benchling will no longer send `v0-beta` webhooks nor `app->version` in the payloads.