Event

trigger.linear_event
TriggerBusiness appsconnection requiredruns in-engine

Registers a Linear webhook on publish and starts one run per delivery, verified against Linear-Signature and deduped on Linear-Delivery.

Start a run when Linear creates, updates or removes an issue or comment.

Connection

Required
Yes — the node will not save without one
Auth type
API key
Providers
Linear
Secret shape
the API key, or {"api_key": "…"}
Config it needs
team_id
Resolved by
config.connection_id, else node.connection_id
Note
A personal API key creates the webhook as the person who issued it, so it stops working if they leave the workspace. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to a public https URL — Linear requires 'a publicly accessible HTTPS, non-localhost URL'.

Configuration

2 fields, none required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
team_id
Team to watch — its UUID, or its key (the 'ENG' in ENG-412). Leave blank to watch every public team in the workspace, including ones created later.
stringNo———
resource_types
Which Linear entities to subscribe to. Linear's docs name Comment, Issue, IssueLabel, Project, Cycle and Reaction; other entity type names are accepted but were not confirmed against Linear's docs.
arrayNo["Issue"]1–64 characters; array of string—

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "resource_types": [
    "Issue"
  ]
}

Output

One shape.

linear event

A flat envelope over Linear's data-change payload, with the body under `payload`. `payload.data` is the whole serialised entity and its keys depend on type, so the shape is open below these fields.

Extra keys beyond the ones listed can appear.

FieldTypeExample
action
What happened: create, update or remove for a data-change event. Other Linear webhooks use their own verbs (an OAuthApp revocation sends 'revoked').
stringcreate
type
The entity the event is about — Issue, Comment, Project… Branch on this when the trigger subscribes to more than one resource type.
stringIssue
delivery_id
Linear-Delivery, the UUID that identifies this payload, and the run's idempotency key. Linear retries a failed delivery up to three times (after 1 minute, 1 hour and 6 hours), so a redelivery joins the run it already started rather than starting a second.
string234d1a4e-b617-4388-90fe-adc3633d6b72
data_id
Id of the entity the event is about, lifted out of data so the next node need not dig.
string2174add1-f7c8-44e3-bbf3-2d60b5ea8bc9
url
Linear URL of the subject entity.
stringhttps://linear.app/acme/issue/ENG-412/fix-the-thing
created_at
When the action took place, ISO-8601.
string2026-01-23T12:53:18.084Z
webhook_timestamp
When Linear sent the webhook, epoch milliseconds.
number1737636798084
organization_id
The Linear workspace the event came from.
string—
actor.id
Who triggered the action. Empty when the actor was deleted since.
string—
actor.name
That actor's display name.
stringOrbit
actor.type
user, oauthClient or integration.
stringuser
updated_from
On an update, the previous values of the properties that changed. Empty on every other action.
object—
payload
Linear's webhook body exactly as it arrived, including the whole serialised entity under data. Its keys depend on type.
object—
{
  "action": "create",
  "actor": {
    "id": "aacdca22-6266-4c0a-ab3c-8fa70a26765c",
    "name": "Orbit",
    "type": "user"
  },
  "created_at": "2026-01-23T12:53:18.084Z",
  "data_id": "2174add1-f7c8-44e3-bbf3-2d60b5ea8bc9",
  "delivery_id": "234d1a4e-b617-4388-90fe-adc3633d6b72",
  "organization_id": "b5ea5f1f-8adc-4f52-b4bd-ab4e84cf51ba",
  "payload": {
    "action": "create",
    "type": "Issue"
  },
  "type": "Issue",
  "updated_from": {},
  "url": "https://linear.app/acme/issue/ENG-412/fix-the-thing",
  "webhook_timestamp": 1737636798084
}

Notes

  • The webhook is created at publish and deleted on unpublish, disable or archive, so a workspace never keeps delivering to a workflow that is off.
  • Every delivery is verified against Linear-Signature (a bare hex HMAC-SHA256 of the raw body) before a run can start; an unsigned POST gets a 401.
  • One run per Linear-Delivery — Linear retries a failed delivery after 1 minute, 1 hour and 6 hours, and a retry joins the first run.
  • Linear expects a 200 within 5 seconds and may disable a webhook whose URL keeps failing; re-publishing the workflow registers a fresh one.
  • team_id and resource_types are read when the workflow is published, before any run exists, so neither can be a {{ expression }}.

Related Linear nodes

Solutions with Linear

See Event run in a workflow.

In a technical demo we add the Linear connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.