Jira Integration
Table of contents
- Overview
- Prerequisites
- Setup Instructions
- Advanced Configuration
- Integration Features
- Troubleshooting
- Best Practices
- API Examples
- Next Steps
Overview
ButterStack integrates with Jira to synchronize tasks, track asset assignments, and provide visibility into your development pipeline. This integration enables automatic task updates and two-way synchronization.
Prerequisites
- Jira Cloud or Server instance
- Jira administrator access
- API token or OAuth credentials
- ButterStack project with admin rights
Setup Instructions
Step 1: Create Jira API Token
- Log in to your Jira account
- Navigate to Account Settings → Security → API tokens
- Click Create API token
- Name it “ButterStack Integration”
- Copy the generated token
Jira Server Users
For Jira Server, use your regular password or configure OAuth instead of API tokens.
Step 2: Configure ButterStack Integration
- In ButterStack, go to Settings → Integrations
- Click Add Integration → Jira
- Enter your Jira details:
Jira URL: https://your-domain.atlassian.net
Email: your-email@company.com
API Token: [paste your token]
Default Project: PROJ
Step 3: Field Mapping
Configure how ButterStack fields map to Jira:
| ButterStack Field | Jira Field | Sync Direction |
|---|---|---|
| Task Title | Summary | ↔️ Two-way |
| Description | Description | ↔️ Two-way |
| Asset Status | Custom Field: Asset Status | → ButterStack to Jira |
| Assignee | Assignee | ↔️ Two-way |
Step 4: Webhook Configuration
Enable real-time updates from Jira:
- In Jira, go to Settings → System → Webhooks
- Click Create a webhook
- Configure:
- Name: ButterStack Integration
- URL:
https://app.butterstack.com/webhooks/jira/YOUR_PROJECT_ID - Events: Select relevant events
- ✅ Issue created
- ✅ Issue updated
- ✅ Issue deleted
- ✅ Comment added
Step 5: Custom Fields Setup
Create custom fields in Jira for ButterStack data:
- Go to Settings → Issues → Custom fields
- Create these fields:
- ButterStack Asset ID (Text field)
- Asset Status (Select list)
- Build Version (Text field)
- Asset Type (Select list)
Important
Make sure these custom fields are added to your project screens and have proper permissions.
Advanced Configuration
JQL Filters
Configure which Jira issues sync with ButterStack:
project = "GAME" AND type in (Task, Bug) AND status != Done
Workflow Automation
Set up Jira automation rules:
Trigger: Issue transitioned to "In Progress"
Action: Create ButterStack task
Condition: Issue has component "Assets"
Status Mapping
Map Jira statuses to ButterStack asset states:
Jira Status → ButterStack Status
To Do → Pending
In Progress → Active
In Review → Under Review
Done → Completed
Integration Features
Asset Linking
Link assets directly to Jira issues:
- In ButterStack asset view, click Link to Jira
- Search for issue by key or summary
- Select issue to create link
- Asset status syncs automatically
Bulk Operations
Perform bulk actions on linked issues:
- Update multiple asset statuses
- Bulk assign to Jira users
- Mass comment on issues
- Batch transition workflows
Reporting
Access integrated reports:
- Asset completion by sprint
- Time tracking across assets
- Issue-to-asset mapping
- Team velocity metrics
Troubleshooting
Common Issues
Authentication Failed
Error: “401 Unauthorized”
Solutions:
- Verify API token is correct
- Check email matches token owner
- Ensure user has project access
- For Jira Server, verify base URL includes
/rest/api/2
Test with cURL:
curl -u email@example.com:api_token \
https://your-domain.atlassian.net/rest/api/2/myself
Webhooks Not Firing
Symptoms: Changes in Jira don’t reflect in ButterStack
Solutions:
- Check webhook URL is accessible
- Verify webhook is enabled
- Review webhook logs in Jira
- Ensure events are selected
- Check ButterStack webhook logs
Field Mapping Issues
Symptoms: Custom fields not syncing
Solutions:
- Verify field IDs match configuration
- Check field permissions
- Ensure fields are on screens
- Validate field types are compatible
- Clear field cache in ButterStack
Best Practices
API Examples
Create Issue with Asset
const createIssueWithAsset = async (assetId, assetName) => {
const issue = {
fields: {
project: { key: 'PROJ' },
summary: `Asset Review: ${assetName}`,
description: 'Please review the attached asset',
issuetype: { name: 'Task' },
customfield_10100: assetId // ButterStack Asset ID
}
};
const response = await fetch('https://your-domain.atlassian.net/rest/api/2/issue', {
method: 'POST',
headers: {
'Authorization': `Basic ${btoa('email@example.com:api_token')}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(issue)
});
return response.json();
};
Next Steps
- Set up Linear integration for alternative task tracking
- Configure Slack notifications for updates
- Enable Jenkins CI/CD for automated builds
Need help? Contact our support team