> 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.

# App installed

POST 

Sent when an app is installed on a tenant. Apps cannot subscribe to this webhook – it is sent implicitly if a webhook url is present. Event type: `v2.app.installed`.

Reference: https://docs.benchling.com/docs/api/v2-webhooks/app/installed

## Request

### Payload

- `app` (AppInstalledWebhookV2EnvelopeApp, required)
- `appDefinition` (AppInstalledWebhookV2EnvelopeAppDefinition, required)
- `baseURL` (string, required) — Base tenant URL from which the webhook is coming
- `channel` (enum, required) — Channel of the webhook
  - Allowed values: `events`, `app_signals`
- `tenantId` (string, required) — Global tenant id from which the webhook is coming
- `version` (enum, required) — Version of the webhook envelope shape. Always 0.
  - Allowed values: `0`
- `message` (AppInstalledWebhookV2, required) — Sent when an app is installed on a tenant. Apps cannot subscribe to this webhook – it is sent implicitly if a webhook url is present.

## Types

### AppInstalledWebhookV2EnvelopeApp

- `id` (string, required) — Destination app's id

### AppInstalledWebhookV2EnvelopeAppDefinition

- `id` (string, required) — App definition id
- `versionNumber` (string, required) — App definition version number

### AppInstalledWebhookV2

Sent when an app is installed on a tenant. Apps cannot subscribe to this webhook – it is sent implicitly if a webhook url is present.

- `deprecated` (boolean, required)