<!--
Sitemap:
- [Installation](/installation)
- [Upgrading](/upgrading): Version-specific steps for upgrading an existing Bento install.
- [Concepts](/concepts)
- [Build your first pipeline](/tutorials/pipeline-args)
- [Target a specific issue or PR from a URL](/tutorials/url-targeting)
- [Keep state across runs](/tutorials/pipeline-state)
- [Fire a pipeline on a schedule or on demand](/tutorials/schedule-and-fire)
- [Configuration](/configuration)
- [Knowledge Base](/knowledge-base/)
- [Method & delivery](/knowledge-base/modes)
- [Config](/knowledge-base/config)
- [MCP](/knowledge-base/mcp)
- [Pipeline configuration reference](/pipelines/config)
- [Filters](/pipelines/filters)
- [Triggers](/triggers/)
- [GitHub Trigger](/triggers/github)
- [Linear Trigger](/triggers/linear)
- [Webhook](/triggers/webhook)
- [Schedule Trigger](/triggers/schedule)
- [Manual Trigger](/triggers/manual)
- [Traces](/pipelines/traces)
- [Slack](/integrations/slack)
- [Public Access](/public-access)
- [Context Engineering](/context-engineering)
- [Best Practices](/best-practices)
- [Troubleshooting](/troubleshooting)
- [Architecture](/architecture/vision)
- [Workspaces](/workspaces)
- [Authentication](/authentication)
- [Identity](/identity)
- [Security](/security)
- [References](/references)
- [Changelog](/changelog): Bento release history.
- [CLI Reference](/cli/)
- [Setup](/cli/setup)
- [Lifecycle](/cli/lifecycle)
- [Sandbox Image](/cli/image)
- [Observability](/cli/observability)
- [Diagnostics](/cli/diagnostics)
- [Triggers](/cli/triggers)
- [Workbench](/cli/workbench)
- [Auth](/cli/auth)
- [Knowledge](/cli/knowledge)
- [Bento](/index)
- [Runtime Wrapper](/architecture/runtime-wrapper)
- [Skill Evolve](/architecture/skill-evolve)
-->

# Linear Trigger

The daemon accepts Linear webhooks at `/webhooks/linear`. Requests to any path are also matched if they carry a `linear-event` header.

:::note
Creating a Linear webhook requires workspace admin. To run a loop on your own machine without that access, skip the webhook: use a [schedule trigger](/triggers/schedule) and poll the Linear API with a token listed in the pipeline's [`env:`](/pipelines/config#env) manifest.
:::

## Event string format

Linear sends `type` and optionally `action` in the JSON payload:

```
payload.type:   Issue
payload.action: create
→ event string: "Issue.create"

payload.type:   Issue
(no action)
→ event string: "Issue"
```

## Supported events

| Event pattern | When |
|---|---|
| `Issue.create` | New issue created |
| `Issue.update` | Issue updated |
| `Comment.create` | Comment posted on an issue |

## Example

```yaml
# Fire when a new issue is created in a specific team
trigger:
  linear:
    - Issue.create
  filter:
    when:
      data.team.key: HAR
```

## Event variables

In filter expressions, omit the `event.` prefix (e.g. `data.team.key`). In `instructions`, use the full path (e.g. `{{event.data.team.key}}`).

| Variable | Value |
|---|---|
| `event.data.title` | Issue title |
| `event.data.description` | Issue description |
| `event.data.team.key` | Team key (e.g. `HAR`) |
| `event.data.priority` | Issue priority |

## See also

* [Filters](/pipelines/filters) — narrow which events reach this pipeline
