Linear Integration
Coming Soon — Linear integration is currently in development. Contact us to be notified when it’s available.
Table of contents
- Overview
- Prerequisites
- Setup Instructions
- Issue Templates
- Workflow Automation
- GraphQL API Usage
- Keyboard Shortcuts
- Troubleshooting
- Best Practices
- Advanced Features
- Next Steps
Overview
Linear integration brings modern, fast issue tracking to ButterStack. Sync tasks, track progress, and manage your asset pipeline with Linear’s keyboard-first interface.
Prerequisites
- Linear workspace (Team or Enterprise plan for API access)
- Admin access to Linear workspace
- ButterStack project with admin rights
Setup Instructions
Step 1: Generate Linear API Key
- Go to linear.app/settings/api
- Click Create new API key
- Name it “ButterStack Integration”
- Copy the generated key immediately
Step 2: Configure ButterStack
- Navigate to Settings → Integrations
- Click Add Integration → Linear
- Enter configuration:
API Key: lin_api_xxxxxxxxxxxxx
Workspace: your-workspace
Default Team: ENG
Sync Direction: Two-way
Step 3: Team and Project Mapping
Map Linear teams to ButterStack projects:
| Linear Team | ButterStack Project | Auto-sync |
|---|---|---|
| ENG - Engineering | Main Game | ✅ Enabled |
| ART - Art Team | Asset Library | ✅ Enabled |
| QA - Quality | Testing Builds | ⬜ Manual |
Step 4: Webhook Setup
Configure Linear webhooks for real-time updates:
- In Linear, go to Settings → API → Webhooks
- Click New webhook
- Configure:
- Label: ButterStack Sync
- URL:
https://app.butterstack.com/webhooks/linear/YOUR_PROJECT_ID - Resource types:
- ✅ Issues
- ✅ Comments
- ✅ Projects
- ✅ Cycles
Step 5: Custom Attributes
Create Linear custom attributes for ButterStack data:
- Go to Settings → Attributes
- Create these attributes:
- ButterStack Asset (URL type)
- Build Status (Select: Pending, Building, Complete, Failed)
- Asset Type (Select: Model, Texture, Audio, Animation)
- Version (Text)
Issue Templates
Create Linear templates for common ButterStack workflows:
Asset Review Template
## Asset Review Request
**Asset Name:** [Asset Name]
**Type:** [Model/Texture/Audio]
**Version:** [v1.0]
**ButterStack Link:** [Link]
### Checklist
- [ ] Technical requirements met
- [ ] Art direction approved
- [ ] Performance validated
- [ ] Integration tested
### Notes
[Additional context]
/label needs-review
/assign @reviewer
Build Failure Template
## Build Failure Report
**Build ID:** #[BUILD_ID]
**Platform:** [Platform]
**Error Type:** [Compilation/Link/Test]
### Error Details
[Error output]
### Steps to Reproduce
1. [Step 1]
2. [Step 2]
### Impact
- **Severity:** [High/Medium/Low]
- **Blocked Assets:** [List]
/label bug build-failure
/priority high
Workflow Automation
Linear Automations
Configure these automations in Linear:
Asset Approval Flow
When: Issue moved to "In Review"
And: Has label "asset"
Then:
- Create ButterStack approval request
- Notify assigned reviewer
- Start review timerButterStack Rules
Set up reciprocal rules in ButterStack:
Rules:
- name: "Linear Issue Creation"
trigger: asset.uploaded
conditions:
- asset.type in ['model', 'texture']
- asset.size > 10MB
actions:
- create_linear_issue:
team: "ART"
title: "Review: ${asset.name}"
labels: ["asset-review", "${asset.type}"]
- name: "Status Sync"
trigger: linear.issue.updated
conditions:
- issue.state == "completed"
actions:
- update_asset_status: "approved"
- trigger_build: true
GraphQL API Usage
Linear uses GraphQL. Here are useful queries:
Get Issues with ButterStack Assets
query GetButterStackIssues($teamId: String!) {
issues(
filter: {
team: { id: { eq: $teamId } }
labels: { name: { eq: "butterstack" } }
}
) {
nodes {
id
identifier
title
state {
name
type
}
assignee {
name
email
}
customAttributes
}
}
}
Create Issue with Asset Link
mutation CreateAssetIssue($input: IssueCreateInput!) {
issueCreate(input: $input) {
issue {
id
identifier
url
}
}
}
# Variables:
{
"input": {
"teamId": "TEAM_ID",
"title": "Asset Review: Character Model v2",
"description": "Review required for updated character model",
"labelIds": ["LABEL_ID"],
"customAttributes": {
"butterstackAsset": "https://app.butterstack.com/assets/123"
}
}
}
Keyboard Shortcuts
Enable ButterStack shortcuts in Linear:
| Action | Shortcut | Description |
|---|---|---|
| View in ButterStack | G then F | Open linked asset in ButterStack |
| Trigger Build | Cmd + B | Start build for linked asset |
| Approve Asset | Cmd + Shift + A | Quick approve from Linear |
Troubleshooting
API Connection Failed
Error: “Invalid API key” or “Connection refused”
Solutions:
- Verify API key starts with
lin_api_ - Check workspace ID is correct
- Ensure API key has required scopes
- Test with Linear’s GraphQL playground
Test Query:
curl https://api.linear.app/graphql \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { id name } }"}'
Webhooks Not Triggering
Symptoms: Updates in Linear don’t sync to ButterStack
Debugging Steps:
- Check webhook logs in Linear settings
- Verify webhook URL is publicly accessible
- Ensure resource types are selected
- Check ButterStack webhook endpoint logs
- Validate webhook signature if configured
Custom Attributes Missing
Issue: ButterStack data not appearing in Linear
Fix:
- Ensure attributes are created at workspace level
- Add attributes to team’s issue views
- Check attribute permissions
- Refresh Linear page after creation
- Verify attribute IDs in API calls
Best Practices
Advanced Features
Cycle Integration
Align ButterStack milestones with Linear cycles:
Cycle Sync:
- Linear cycle start → Create ButterStack milestone
- Add cycle issues → Link related assets
- Cycle progress → Update build priorities
- Cycle complete → Generate asset report
Team Insights
Track asset-related metrics in Linear:
- Assets per cycle
- Review turnaround time
- Build success rate by team
- Asset approval velocity
Next Steps
- Compare with Jira integration for enterprise needs
- Set up Trello for visual workflows
- Configure notifications for team updates
Have questions? Join our Discord community