Skip to main content
Beta Feature: Event-based automations are in beta for OpenHands Cloud and OpenHands Enterprise users.
Event-based automations run when something happens—a PR is opened, an issue is commented on, or a webhook fires—instead of on a schedule. This is ideal for responsive workflows like auto-reviewing PRs, triaging issues, or reacting to external service events.

Built-In vs. Custom Integrations

GitHub Events (Built-In)

GitHub is a built-in integration. Create automations that respond to GitHub events without any webhook setup.

Example: Auto-Review PRs with a Specific Label

When a PR is labeled with openhands, automatically review it:
The agent will create an automation with:
  • Trigger type: event
  • Source: github
  • Event: pull_request.labeled
  • Filter: Matches PRs labeled openhands

Example: Respond to @openhands Mentions

Available GitHub Events

Use wildcards like pull_request.* to match all actions for an event type.

Filtering Events

Filters let you narrow which events trigger your automation. They use JMESPath expressions to match fields in the event payload—so you can trigger only on specific labels, users, branches, or other conditions. Common filter patterns:

Custom Webhooks

For services beyond GitHub—like Linear, Stripe, or Slack—register a custom webhook first, then create automations that use it.
Two-phase workflow for custom webhooks:
  1. Webhook registration (one-time setup): You execute the curl command yourself to register the webhook. This keeps your signing secrets secure—the agent provides the command but never handles your credentials directly.
  2. Automation creation (repeatable): Once the webhook is registered, the agent can create, update, and manage automations for that webhook source conversationally—no manual curl commands needed.

Walkthrough: Linear Integration

This example walks through setting up a Linear webhook to auto-triage new issues.

Step 1: Get Your Webhook Secret from Linear

Linear provides the webhook signing secret—you cannot configure your own.
  1. Go to Linear Settings → API → Webhooks
  2. Click New webhook
  3. Copy the signing secret that Linear displays (you’ll need this in the next step)
  4. Leave the webhook URL blank for now—you’ll get it from OpenHands

Step 2: Register the Webhook with OpenHands

First, set up your environment variables:
  1. Create an OpenHands API key at app.all-hands.dev/settings/api-keys
  2. Export the API key and the webhook secret from Step 1:
Then run the following command to register the webhook:
The response includes a webhook_url that you’ll configure in Linear.
The event_key_expr is a JMESPath expression that extracts the event type from incoming webhook payloads. This extracted value is what you match against in the automation’s on field.For example, Linear sends payloads like:
With event_key_expr: "type", the system extracts "Issue" as the event type. Then in your automation, you set on: "Issue" to match it.
If you’re integrating a service that lets you configure the signing secret (unlike Linear), you can omit webhook_secret from the request. The automation service will generate one and return it in the response—store it securely, as it’s shown only once.

Step 3: Complete the Linear Webhook Configuration

  1. Return to the Linear webhook you started in Step 1
  2. Paste the webhook_url from the previous step
  3. Select which events to send (e.g., Issues, Comments)
  4. Save the webhook

Step 4: Create the Automation

Now the webhook is registered, the agent can create automations for you end-to-end. Just describe what you want:
The agent creates the automation with:
  • Source: linear (your registered webhook)
  • Event: Issue (Linear’s event type)
  • Filter: action == 'create'

Custom Webhook Parameters

When registering any custom webhook, these parameters define how OpenHands processes incoming events:

Common Services

These are example configurations for popular services. Always verify with each service’s webhook documentation, as signature headers and payload formats may change.

Next Steps

New to automations? Start with the Automations Overview for the bigger picture, including cron-based scheduling and general concepts.