V3 Events
V3 events tell your app that something changed in Benchling, so you can react to it instead of polling. Every V3 event corresponds to a resource in the V3 REST API: a v3.run.created event refers to the same Run resource you can fetch from /api/v3/run/{run_id}.
Private beta
V3 events are in private beta and require access to both the V3 REST API beta and V3 events. Contact your account team to request access.
Every V3 event is listed in the public Webhooks Reference, but events are only delivered once the necessary flags are enabled on your tenant. Until then, a subscription is accepted and nothing arrives.
If you have not set up webhook delivery before, start with Getting Started with Webhooks and Receiving Events in Your App. This page covers what is specific to V3.
Event types
Event types are named {developer_platform_version}.{resource}.{action}:
- Developer platform version. The version of the public API the event is emitted from,
v3here. - Resource. The domain model that changed, in camelCase, matching the V3 API resource.
- Action. What happened, such as
createdorupdated.
V3 currently emits these events:
More events are added continuously, with full coverage of all objects expected by late 2026. The Webhooks Reference is the current list; watch the changelog for additions.
There is no field-scoped event type
To act on a change to one particular field, subscribe to the resource’s updated event and check the properties array in the payload, which names the fields that changed. Event types have exactly three segments; a fourth field segment is not a supported subscription target.
V3 events are delivered over webhooks only. EventBridge delivery is not available for them.
Payload shape
A webhook payload is an envelope with the event in its message field. Everything outside message is the standard webhook envelope, identical across V2 and V3; message is what varies by event type.
Every V3 event message carries these fields:
updated events add one more:
V3 event payloads are thin: they identify what changed, not the new values. Fetch the resource by resourceId from the V3 API to read its current state.
Use the Webhooks Reference or the interactive Webhook Playground (Feature Settings > Developer Console > Apps > [App] > Webhook Playground) to check the exact shape of any event you subscribe to.
Subscribing to V3 events
Any Benchling App can subscribe to V3 events. The app needs a valid webhook URL to receive them.
Declare the event types in your App Manifest:
Then upload the manifest through the API (PUT BenchlingAppDefinitionVersionManifest) or in the UI when you create or update the app.
Implicit webhooks
Some webhooks need no subscription and are sent to any app with a valid webhook URL. These cannot be subscribed to:
v2.app.installed
Activating and deactivating a subscription
A subscription becomes active on a tenant as soon as an app version containing it is installed there. To deactivate one on a particular tenant, do either or both of:
- Install a version of the app that does not include the subscription.
- Deactivate the app installation on that tenant.
An app can unsubscribe universally by publishing a new version without the subscription, but active subscriptions on tenants stay active until each tenant installs that new version. If other tenants use your app, keep handling those event types until they have all upgraded.
Best practices
Acknowledge webhooks quickly
Your app should acknowledge an incoming webhook with an HTTP 2xx response within 3 seconds.
This matters most for events tied to a subsequent user action in Benchling, such as v2.canvas.userInteracted, where a slow acknowledgement shows the user an error saying the app did not respond.
Put incoming webhooks on a queue and process them separately, rather than doing the work before responding. That keeps acknowledgements inside the window no matter how long processing takes.
Expect out-of-order delivery across resources
Events are ordered per object but not across a tenant. If Project A is updated at time t and Project B at t+1, delivery is attempted for A before B, but no such guarantee holds between unrelated objects. Do not use arrival order to reconstruct a tenant-wide sequence.
Permissions
Apps are permissioned the same way as people, and those permissions apply to event subscriptions. An app added to Team A receives events only for objects Team A can access. Apply least privilege when deciding what an app can see.
Security
Verify every webhook before acting on it. See Webhook Security for the verification procedure and related guidance.