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.
Option 1 β Triage Responsibility (recommended)
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
Connect your Linear account to Pagerly.
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.
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
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
Related
Last updated