Linear

Embed
Preview of the card
<a href="https://forumulate.com/p/watchtower/docs/linear"><img src="https://forumulate.com/api/public/orgs/watchtower/spaces/docs/pages/379bd101-8f35-477c-b485-c73bc405aa21/social-card.svg?v=3e7ae33eec8b" alt="Linear" width="600" height="315"></a>

Create Linear issues from Watchtower issues, incidents and action items with a backlink, and keep status in sync. GraphQL (issueCreate, issueUpdate) with a Linear API key.

Install (organization admin)

POST /internal/connect/linear/install (called by the API after ManageConnectors):

{"org_id": "...", "user_id": "...", "project_id": "...",
 "config": {"team_id": "...", "priority_map": {"high": 2, "medium": 3, "low": 4}, "done_state_id": "..."},
 "secrets": {"api_key": "...", "webhook_secret": "..."}}

The API key and team are checked against Linear at save time. In Linear create a webhook for Issue events pointing at https://<WT_PUBLIC_URL><webhook_path> (from the answer) and pass the signing secret Linear shows as webhook_secret. Requests carry Linear-Signature (hex HMAC-SHA256 of the raw body); it is verified in constant time before parsing, and a timestamp more than a minute off is refused.

Tickets and sync

Same as Jira: POST /internal/connect/linear/tickets, idempotent per target, backlink in the description. An Issue update to a completed state resolves the linked Watchtower issue (as the system actor linear); a resolved Watchtower issue moves the Linear issue to done_state_id. ticket_links.external_state prevents a loop.

Updated