Jira Loader

The Jira loader pulls project management data from your Jira Cloud or Jira Data Center instance into your data warehouse. It uses Jira’s REST API and supports incremental sync via the updated timestamp on issues.

Prerequisites

  • A Jira Cloud or Jira Data Center instance
  • A Jira user with access to the projects you want to sync
  • A connected Warehouse (target warehouse) with write permissions on the target schema

Authentication

The Jira loader supports two authentication methods.

OAuth 2.0 (Jira Cloud)

  1. In SignalSmith, click Add Loader and select Jira
  2. Choose OAuth 2.0 as the authentication method
  3. Click Connect with Jira
  4. You’ll be redirected to Atlassian’s authorization page
  5. Select the Jira site you want to connect
  6. Grant SignalSmith access and click Accept
  7. You’ll be redirected back to SignalSmith with the connection established

SignalSmith requests the following scopes:

ScopePurpose
read:jira-workRead issues, projects, boards, and sprints
read:jira-userRead user profiles

API Token (Jira Cloud or Data Center)

For environments where OAuth isn’t practical:

Jira Cloud:

  1. Go to Atlassian API Token Management
  2. Click Create API Token
  3. Label the token (e.g., “SignalSmith Loader”)
  4. Copy the generated token
  5. In SignalSmith, provide:
FieldDescriptionExample
Site URLYour Jira Cloud URLhttps://mycompany.atlassian.net
EmailYour Atlassian account emailuser@mycompany.com
API TokenThe generated API tokenaBcDeFgHiJ...

Jira Data Center:

  1. In Jira, go to your Profile > Personal Access Tokens
  2. Click Create Token
  3. Name the token and set an expiry (or no expiry)
  4. Copy the generated token
  5. In SignalSmith, provide:
FieldDescriptionExample
Site URLYour Jira Data Center URLhttps://jira.mycompany.com
Personal Access TokenThe generated PATMDM2OTk5...

Available Objects

ObjectAPI NameDescriptionDefault Sync Mode
IssuesissuesIssues with summary, description, status, assignee, and custom fieldsIncremental
ProjectsprojectsProject definitions with lead, category, and typeFull Refresh
SprintssprintsScrum sprints with dates and completion statusIncremental
BoardsboardsScrum and Kanban board configurationsFull Refresh
UsersusersJira user profilesFull Refresh
Issue Typesissue_typesIssue type definitions (Bug, Story, Task, Epic, etc.)Full Refresh
StatusesstatusesWorkflow status definitionsFull Refresh
PrioritiesprioritiesPriority level definitionsFull Refresh
ResolutionsresolutionsResolution type definitionsFull Refresh
ComponentscomponentsProject component definitionsFull Refresh
VersionsversionsProject version/release definitionsFull Refresh
WorklogsworklogsTime tracking entries on issuesIncremental
Issue Linksissue_linksRelationships between issues (blocks, relates to, duplicates)Incremental
Issue Changelogissue_changelogField change history for issues (status transitions, reassignments)Incremental

Issues and Custom Fields

Jira issues are the primary data object. Each issue includes:

  • Standard fields: summary, description, status, assignee, reporter, priority, issue type, created/updated dates
  • Custom fields: Any custom field defined in your Jira instance is extracted as an additional column

Custom fields are named using their field ID (e.g., customfield_10001). The issue_types and field metadata tables provide human-readable labels for mapping.

Issue Changelog

The issue changelog captures every field change on an issue — status transitions, assignee changes, priority updates, sprint changes, and more. Each changelog entry includes:

  • field — The field that changed
  • from_value / to_value — The previous and new values
  • author — Who made the change
  • created — When the change occurred

This data is essential for building cycle time, lead time, and flow metrics.

Sprints

Sprints are extracted from Jira Software boards. Each sprint includes:

  • Sprint name, start date, end date, and completion date
  • State (future, active, closed)
  • Board association

Sprint-to-issue assignments are tracked via the sprint custom field on issues.

Configuration

SettingDescriptionDefault
Site URLYour Jira instance URL— (required)
Auth MethodOAuth 2.0, API Token, or PATOAuth 2.0
ProjectsJira project keys to sync (empty = all accessible projects)All
ObjectsList of objects to sync— (you choose during setup)
Sync ModeFull Refresh or Incremental (per object)Incremental
Cursor FieldField used for incremental syncupdated
Primary KeyField(s) that uniquely identify a recordid
Include ChangelogWhether to extract issue change historytrue
JQL FilterOptional JQL to limit which issues are synced— (optional)
Target SchemaWarehouse schema for Jira tables— (required)
Table PrefixOptional prefix for table namesjira_
ScheduleSync frequencyHourly

JQL Filter

You can optionally provide a JQL (Jira Query Language) expression to limit which issues are synced. This is useful for large Jira instances where you only need an access filter of projects or issue types.

Examples:

project IN (ENG, PLATFORM) AND issuetype IN (Bug, Story, Task)
created >= -365d
project = ENG AND status != Done

Scheduling Notes

  • Rate limits: Jira Cloud enforces rate limits per user. SignalSmith handles rate limiting with automatic backoff. For large instances with many issues, the initial backfill may take several runs to complete.
  • Pagination: Jira’s REST API returns a maximum of 100 results per page (50 for search). SignalSmith handles pagination automatically.
  • Custom field performance: Instances with many custom fields may have slower API responses. Consider limiting the custom fields extracted if you don’t need all of them.
  • Changelog volume: The issue changelog can be very high-volume for actively worked issues. Consider disabling changelog extraction if you don’t need flow metrics.
  • Jira Data Center: Data Center instances may have different API behavior and rate limits compared to Jira Cloud. Ensure your Data Center version is 8.x or later for full API compatibility.

Schema Mapping

Jira field types are mapped to warehouse-compatible types:

Jira TypeWarehouse TypeNotes
stringVARCHAR
numberDOUBLEStory points, numeric custom fields
datetimeTIMESTAMPUTC normalized from ISO 8601
dateDATEDue dates, sprint dates
userVARCHARStored as user account ID or username
optionVARCHARSingle-select custom fields
arrayJSON / VARCHARLabels, components, fix versions
issuetypeVARCHARStored as the issue type name
statusVARCHARStored as the status name
priorityVARCHARStored as the priority name
resolutionVARCHARStored as the resolution name

Troubleshooting

IssueSolution
”401 Unauthorized”Token has expired or is invalid. Re-authenticate or regenerate the API token
”403 Forbidden” on specific projectsThe authenticated user lacks access to the project. Verify project permissions in Jira
”429 Rate limit exceeded”SignalSmith handles rate limits automatically. Reduce sync frequency if persistent
Custom fields showing as customfield_XXXXXJoin with the field metadata to get human-readable names, or use Jira admin to look up field IDs
Missing sprintsSprints require Jira Software (not Jira Work Management). Verify the board type is Scrum
Changelog table is very largeDisable changelog extraction if you don’t need flow metrics, or filter to specific projects
JQL filter syntax errorValidate your JQL in Jira’s issue search before entering it in SignalSmith
Data Center connection timeoutEnsure your Jira Data Center instance is accessible from SignalSmith’s IP addresses

Next Steps

  • Create a model to transform your raw Jira data
  • Build engineering metrics dashboards (cycle time, throughput, sprint velocity)
  • Correlate engineering activity with customer outcomes using other loader data