This guide explains how to configure Jira webhooks for real-time updates in SprintIQ.
- Jira Admin Access: You need administrator access to your Jira instance
- Active Jira Integration: SprintIQ must be connected to your Jira instance
- Webhook Secret: Set up a webhook secret for security (optional but recommended)
Add these to your .env.local file:
# Jira Webhook Configuration
JIRA_WEBHOOK_SECRET=your-webhook-secret-here
# If you haven't already, add your Jira credentials
JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_EMAIL=your-email@company.com
JIRA_API_TOKEN=your-jira-api-tokenYour webhook endpoint URL will be:
https://your-sprintiq-domain.com/api/webhooks/jira?organizationId=YOUR_ORG_ID
- Go to your Jira instance
- Navigate to System → WebHooks (or Settings → System → WebHooks)
- Click Create a WebHook
Basic Settings:
- Name:
SprintIQ Integration - URL:
https://your-sprintiq-domain.com/api/webhooks/jira?organizationId=YOUR_ORG_ID - Description:
Real-time updates for SprintIQ platform
Events to Subscribe:
✅ Issue Events:
- Issue created
- Issue updated
- Issue deleted
- Issue commented
- Issue transitioned (status changes)
✅ Sprint Events:
- Sprint started
- Sprint closed
- Sprint updated
✅ Project Events:
- Project created
- Project updated
- Project deleted
Advanced Settings:
- Exclude body: Uncheck (we need the full payload)
- SSL verification: Check if using HTTPS (recommended)
If you set JIRA_WEBHOOK_SECRET, configure the webhook to include a signature:
- In webhook settings, find Advanced or Security section
- Add your webhook secret
- Enable signature verification
The webhook endpoint processes these Jira events:
jira:issue_created- New issuesjira:issue_updated- Issue changes (status, assignee, description, etc.)jira:issue_deleted- Issue deletion
sprint_started- Sprint activationsprint_closed- Sprint completionsprint_updated- Sprint modifications
project_created- New project creationproject_updated- Project settings changesproject_deleted- Project removal
The webhook automatically:
- Verifies Security: Validates webhook signature (if configured)
- Stores Events: Logs all webhook events for audit and replay
- Updates Database: Syncs Jira issues and sprints to SprintIQ database
- Triggers Analysis: Queues background jobs for GraphRAG processing
- Generates Insights: Updates AI insights when sprints complete
- Issue Key →
externalId - Summary →
title - Description →
description - Status → Mapped to SprintIQ status (TODO, IN_PROGRESS, COMPLETED, BLOCKED)
- Priority → Mapped to SprintIQ priority (HIGH, MEDIUM, LOW)
- Assignee →
assigneeId(if user exists in SprintIQ)
- Sprint ID →
externalId - Sprint Name →
name - State → Mapped to SprintIQ status (PLANNED, ACTIVE, COMPLETED)
- Dates →
startDate,endDate
Test if the webhook endpoint is responding:
curl -X GET "https://your-domain.com/api/webhooks/jira"Expected response:
{
"status": "healthy",
"service": "jira-webhook",
"timestamp": "2024-01-01T00:00:00.000Z",
"version": "1.0.0"
}Create or update a Jira issue to trigger a webhook event.
- Check the Integrations page for recent activity
- Look for new tasks appearing in your dashboard
- Check AI insights for updated analysis
Webhook Not Triggering:
- Verify the URL is correct and accessible
- Check Jira webhook logs for errors
- Ensure your SprintIQ instance is publicly accessible
Authentication Errors:
- Verify webhook secret matches environment variable
- Check that organizationId parameter is correct
Data Not Syncing:
- Confirm Jira integration is active in SprintIQ
- Check server logs for processing errors
- Verify database permissions
Monitor webhook activity in:
- Server Logs: Check for webhook processing messages
- Integration Events: Database table with all webhook events
- Background Jobs: Queue processing status
Example Jira issue webhook payload:
{
"timestamp": 1640995200000,
"webhookEvent": "jira:issue_updated",
"user": {
"accountId": "5b10ac8b82e05b22cc7d4ef5",
"displayName": "John Doe",
"emailAddress": "john@company.com"
},
"issue": {
"id": "10000",
"key": "PROJ-123",
"fields": {
"summary": "Implement new feature",
"description": "Feature description here",
"status": {
"id": "3",
"name": "In Progress"
},
"priority": {
"id": "2",
"name": "High"
},
"assignee": {
"accountId": "5b10ac8b82e05b22cc7d4ef5",
"displayName": "Jane Smith"
}
}
}
}- Use HTTPS: Always use secure webhook URLs
- Verify Signatures: Enable webhook signature verification
- Restrict Access: Limit webhook access to Jira IPs if possible
- Monitor Events: Regularly review webhook event logs
- Rotate Secrets: Periodically update webhook secrets
The webhook endpoint includes rate limiting to prevent abuse:
- 100 requests per minute per organization
- 1000 requests per hour per organization
If you encounter issues:
- Check the server logs for detailed error messages
- Verify your Jira integration is properly configured
- Test the webhook endpoint health check
- Contact support with webhook event IDs for investigation
Next Steps:
- Configure additional Jira projects for webhook monitoring
- Set up custom alert rules for critical issue changes
- Enable advanced sprint analytics with completed sprint webhooks