For the complete documentation index, see llms.txt. This page is also available as Markdown.

Assign Linear Issues to the Current Oncall

Put the current on-call engineer on Linear triage and issue assignment β€” using Linear's native Triage Responsibility or the Linear GraphQL API.

Linear has a first-class concept for this β€” Triage Responsibility β€” and Pagerly plugs straight into it. That is the path to use if you can. The GraphQL API covers everything else.

Linear's Triage is the inbox for issues that arrive without an owner: bug reports from customers, Sentry issues, form submissions, anything filed by someone outside the team. Triage Responsibility decides who picks them up.

Pagerly keeps a Linear time schedule in sync with your Pagerly rotation, then binds that schedule to the team's Triage Responsibility with the assign action. The effect: Linear itself assigns triage issues to whoever Pagerly says is on call, and it keeps working during overrides and swaps because the schedule is rewritten, not the rule.

Set it up

  1. Enable triage assignment on the Pagerly team. Pagerly creates the Linear time schedule and the triage responsibility for you.

Pagerly pushes schedule entries as { startsAt, userId, endsAt }, resolving each Pagerly user to a Linear user by email. Once it is running, an issue that lands in triage is assigned without anyone touching it.

This works best with a Pagerly schedule rotation rather than an ad-hoc list β€” the Linear schedule mirrors Pagerly's shift boundaries directly.

What it does not cover

Triage Responsibility only fires for issues that enter triage. Issues created directly in a project by a team member skip triage entirely. For those, use option 2.

Option 2 β€” Linear GraphQL API

Two steps: resolve the on-call user's email to a Linear user ID, then update the issue.

Step 1 β€” who is on call

Step 2 β€” email to Linear user ID

nodes is empty if the email does not match a Linear member β€” treat that as a hard failure, not a silent no-op.

Step 3 β€” assign the issue

Check success in the response β€” Linear returns 200 with success: false for a rejected update, so an HTTP status check alone is not enough.

Assign at creation time

If your service files the issue itself, set the assignee in the same call rather than creating then updating:

Full example

Reassignment on handover

Triage Responsibility handles new issues, not ones already open. If you want in-flight issues to move at shift change, run a scheduled job that queries issues in the states you care about and re-runs the mutation. Be selective β€” silently moving an issue away from someone mid-investigation loses context. Most teams only move issues that are still untouched.

Troubleshooting

Symptom
Cause
Fix

users.nodes empty

Pagerly email β‰  Linear email

Align the primary email, or map it in your automation

issueUpdate returns success: false

Issue ID is an identifier (ENG-42), not a UUID

Resolve the UUID first, or use the issue(id:) lookup

Triage assignment stopped

Pagerly team no longer linked to the Linear team

Issues created in a project are never assigned

They never entered triage

Use option 2, or route creation through triage

Last updated