Linear Action Block
What it does: Create, update, and manage Linear issues, add comments, link resources, and list teams — keeping your engineering issue tracker in sync with your workflows.
In simple terms: Connect your workflows to Linear to automatically file bug reports, triage issues, add context comments, and keep your issue backlog up-to-date without anyone manually creating tickets.
When to Use This
- ✅ Create Linear issues automatically from error monitoring, support tickets, or webhooks
- ✅ Add comments to issues with context from other systems
- ✅ Update issue status, priority, or assignee based on workflow events
- ✅ Link related resources (docs, Figma files, PRs) to issues
- ✅ List open issues for reporting or triage automation
- ✅ List teams to discover IDs for dynamic team routing
Features
- Issues: Create, get, update, delete, and list issues
- Comments: Add comments to any issue
- Links: Attach external resource URLs to issues
- Teams: List teams to discover Team IDs
- Variable Support: Use
{{variables}}in titles, descriptions, and comments - GraphQL-powered: Full Linear GraphQL API under the hood
Getting Your Linear Credentials
Linear uses Personal API Keys for authentication.
Step 1 — Create an API Key
- Log in to Linear and go to Settings (bottom left)
- Click API in the left sidebar
- Under Personal API keys, click Create key
- Give it a label (e.g.,
InditeAI) - Click Create key
- Copy the key immediately — you cannot view it again
Step 2 — Find Your Team ID
- Use the List Teams action (no credentials needed beyond connecting) to get all team IDs
- Or: In Linear, go to a team → Settings → the Team ID is in the URL
Step 3 — Connect in InditeAI
- Add the Linear action block to your workflow
- Click Select Credentials → Create New
- Paste your API Key
- Click Save Credentials
Setup in InditeAI
Select an Action
| Category | Actions |
|---|---|
| Issues | Create Issue, Get Issue, Update Issue, Delete Issue, List Issues |
| Comments | Add Comment |
| Links | Add Link |
| Teams | List Teams |
Working with Issues
Create Issue
Team ID (required): The team to create the issue in
{{team.engineeringId}}
abc-123-team-idTitle (required): Issue title
Bug: {{trigger.errorMessage}}
[Support] {{ticket.subject}}
{{trigger.issueTitle}}Description (optional): Issue body (Markdown supported) — supports {{variables}}
## Steps to Reproduce
{{trigger.steps}}
## Error Details
```{{trigger.stack}}```Assignee ID (optional): Linear user ID to assign the issue
{{user.linearId}}Priority (optional): Numeric priority
| Value | Priority |
|---|---|
0 | No priority |
1 | Urgent |
2 | High |
3 | Medium |
4 | Low |
State ID (optional): Workflow state (e.g., "In Progress") — get from List Issues response
Returns: gid (issue ID), identifier (e.g., ENG-123), title, url — save these for follow-up actions.
Get Issue
Issue ID (required): Linear issue GID (UUID format)
{{createIssue.gid}}
{{trigger.linearIssueId}}Returns: identifier, title, description, state.name, assignee.name, priority, url, createdAt.
Update Issue
Issue ID (required): Issue to update
Update any combination of: Title, Description, Assignee ID, State ID, Priority.
Priority: 1 (= Urgent)
State ID: {{state.inProgressId}}Delete Issue
Issue ID (required): Issue to permanently delete.
List Issues
Returns the 50 most recent issues across all teams.
Returns: Array of issues with identifier, title, state.name, assignee.name, priority, url.
Comments
Add Comment
Adds a comment to an existing issue.
Issue ID (required): Issue to comment on
Comment Body (required): Comment text (Markdown supported) — supports {{variables}}
Automatically created from Zendesk ticket #{{ticket.id}}
**Customer**: {{ticket.customerEmail}}
**Description**: {{ticket.description}}
**Freshdesk link**: {{ticket.url}}Links
Add Link
Attaches an external URL to an issue (appears in the issue's links section).
Issue ID (required): Issue to link to
Link URL (required): The URL to attach
{{ticket.url}}
{{figma.fileUrl}}
{{github.prUrl}}Link Title (optional): Display name for the link
Zendesk Ticket #{{ticket.id}}
Figma Design
GitHub PR #{{pr.number}}Teams
List Teams
Returns all teams in your Linear workspace. No fields required.
Returns: Array of teams with id, name, key.
Use this to discover Team IDs for the Create Issue action.
Common Use Cases
1. Auto-File Bug Reports
Trigger: Error monitoring webhook (Sentry, Datadog, etc.)
Workflow:
- Linear: Create Issue
Team: {{team.engineeringId}} Title: [Bug] {{error.title}} Description: **Error**: {{error.message}}\n\n**Stack**: {{error.stack}} Priority: 1 (Urgent) - Slack: Alert #engineering with issue URL
- Linear: Add Link (link to error monitoring event)
2. Support Ticket → Linear Issue
Trigger: Freshdesk / Zendesk new ticket
Workflow:
- Condition: Ticket tagged "bug" or "engineering"
- Linear: Create Issue
Team: engineering-team-id Title: [Support] {{ticket.subject}} Description: {{ticket.description}}\n\nCustomer: {{ticket.email}} Priority: based on ticket priority - Linear: Add Comment with Freshdesk ticket URL
- Freshdesk: Update Ticket (add Linear issue URL as internal note)
3. GitHub PR → Update Linear State
Trigger: Webhook (GitHub PR merged)
Workflow:
- Linear: Update Issue
Issue ID: {{extractedLinearId}} State ID: {{state.doneId}} Linear: Add Comment "Fixed in PR #{{pr.number}}"
4. Weekly Issue Triage Report
Trigger: Schedule Trigger (every Monday)
Workflow:
- Linear: List Issues
- AI Block: Summarize open high-priority issues
- Slack: Post triage summary to #engineering
Best Practices
- ✅ Use List Teams once to discover and store team IDs as workflow variables
- ✅ Store the issue
gidfrom Create Issue for Add Comment and Add Link follow-ups - ✅ Use Markdown in description and comment fields for better formatting in Linear
- ✅ Set priorities consistently — use numbers (0–4), not text
- ✅ Add links to related resources (tickets, PRs, docs) to give engineers full context
Troubleshooting
"Linear credentials not found" / 401
Fix: Verify your API key is valid and not expired. Generate a new one in Linear → Settings → API.
Issue created in wrong team
Fix: Use List Teams to confirm the exact Team ID. Team IDs are UUIDs, not names.
State ID not working
Fix: State IDs are also UUIDs. Use Get Issue on an existing issue in the target state to discover its State ID, or fetch them via an HTTP Request to the Linear GraphQL API.
Priority value ignored
Fix: Priority must be an integer (0–4), passed as a string in the field. If passing from a variable, ensure it resolves to a number like "1" not "Urgent".
Limitations
- Rate limits: Linear allows 1,500 requests per hour per API key
- Custom fields: Not supported in this block — use HTTP Request with GraphQL
- Attachments: File attachments not supported — use Add Link for resource URLs
- List Issues: Returns 50 most recent issues globally — team-specific filtering requires custom GraphQL via HTTP Request
Related Blocks
- GitHub: Create GitHub issues alongside Linear issues
- Jira: Alternative for teams using Jira
- Asana: Alternative for project management teams
- Slack: Notify engineering teams when issues are created
- HTTP Request: Advanced Linear GraphQL queries not covered by this block
Need Help?
- Review Linear API documentation (opens in a new tab)
- Explore the Linear GraphQL playground (opens in a new tab)
- Manage your API keys at Linear Settings → API (opens in a new tab)
Pro Tip: Use Add Comment + Add Link immediately after Create Issue to give engineers the full context they need — link to the triggering event (error, ticket, PR) and add a comment with key details. This prevents engineers from needing to dig through other systems.