quilt

Benchling Webhook Integration for Quilt

The Benchling Webhook creates a seamless connection between Benchling’s Electronic Lab Notebook (ELN) and Quilt’s Scientific Data Management System (SDMS) for Amazon S3. It not only allows you to view Benchling metadata and attachments inside Quilt packages, but also enables users to browse Quilt package descriptions from inside Benchling notebooks.

The webhook works through a Benchling App that must be installed in your Organization by a Benchling Administrator and configured to call your stack’s unique webhook (see Installation, below).

Availability

It is available in the Quilt Platform (1.65 or later; Referenced Entities and bucketless deployments require 1.71.0 or later) or as a standalone CDK stack via the @quiltdata/benchling-webhook npm package.

Functionality

Auto-Packaging

Packaged Notebook

When scientists create notebook entries in Benchling, this webhook automatically:

Bucketless Deployments

Auto-Packaging writes each entry’s package to a configured package bucket. That bucket is now optional — you can run the webhook without one. This suits organizations that link Benchling entries to Quilt packages spread across many buckets rather than a single dedicated one.

When no package bucket is configured:

Note: Requires Quilt Platform 1.71.0 or later (or standalone benchling-webhook v0.19.0 or later).

Referenced Entities

When packaging a notebook entry, the webhook also discovers the Benchling objects that entry references — custom entities, sequences, results tables, and so on — and makes them searchable by their human-readable name. This answers questions like “show me every experiment that referenced QB-2743.1.”

The package metadata gains a links array, one object per referenced entity, each with four fields:

[
  {
    "type": "custom_entity",
    "id": "bfi_xCUXNVyG",
    "name": "QB-2743.1",
    "slug": "qb-2743-1"
  }
]

To find packages that reference a given entity, search the Quilt Catalog for its name (e.g. QB-2743.1); matches are scoped to links.name.

The raw discovery is also written to a links.json file in each package for auditing and reprocessing.

Note: This requires Quilt Platform 1.71.0 or later (or standalone benchling-webhook v0.18.0 or later). It is distinct from the manual Package Linking below, which tags packages by experiment_id.

Package Linking

experiment_id

In addition, Quilt users can ‘tag’ additional packages by setting the experiment_id (or a custom metadata key) to the display ID of a Benchling notebook, e.g., EXP00001234.

From inside the Quilt Catalog:

  1. Navigate to the package of interest
  2. Click ‘Revise Package’
  3. Go the metadata editor in the bottom left
  4. In the bottom row, enter experiment_id as key and the display ID as the value.
  5. Set the commit message and click ‘Save’

Benchling App Canvas

App Canvas - Home

The webhook includes a Benchling App Canvas, which allows Benchling users to view, browse, and sync the associated Quilt packages.

App Canvas - Updated

The canvas also allows you to browse package contents:

App Canvas - Browse

and view package metadata:

App Canvas - Metadata

Inserting a Canvas

If the App Canvas is not already part of your standard notebook template, Benchling users can add it themselves:

  1. Create a notebook entry
  2. Select “Insert” → “Canvas”
  3. Choose “Quilt Package”
  4. After it is inserted, click the “Create” button

App Canvas - Insert

Installation

1. Installing the Benchling App

This requires a Benchling admin to use npx from NodeJS version 18 or later.

1.1 Generate a manifest

npx @quiltdata/benchling-webhook@latest manifest

This will generate an app-manifest.yaml file in your local folder

1.2 Upload the manifest to Benchling

Follow Benchling’s create and install instructions. Save the App Definition ID, Client ID, and Client Secret for the next step.

2. Configuring the Benchling App

Your command-line environment must have AWS credentials for the account containing your Quilt stack. All you need to do is use npx to run the package:

npx @quiltdata/benchling-webhook@latest

The wizard will guide you through:

  1. Catalog discovery - Detect your Quilt catalog configuration
  2. Stack validation - Extract settings from your CloudFormation stack
  3. Credential collection - Enter Benchling app credentials
  4. Deployment mode selection:
    • Integrated: Uses your Quilt stack’s built-in webhook, if any
    • Standalone: Deploys a separate webhook stack for testing

Note: Configuration is stored in ~/.config/benchling-webhook/ using the XDG Base Directory standard, supporting multiple profiles.

3. Configure Webhook URL

Add the webhook URL (displayed after setup) to your Benchling app settings.

In the Benchling Webhook Setup dialog, set Webhook Routing Setting to Suffixed. Benchling then appends a path suffix based on the kind of event (/lifecycle, /event, or /canvas) to your configured webhook URL, which is what the Quilt webhook expects.

Webhook Routing Setting

Important: Do not select Stable. It posts every event to the bare webhook URL with no suffix, which the Quilt webhook does not handle — requests return 404 Endpoint not found.

4. Test Integration

In Benchling:

  1. Create a notebook entry
  2. Insert Canvas → Select “Quilt Package”
  3. Click “Create”

A Quilt package will be automatically created and linked to your notebook entry. If you run into problems, contact Quilt Support