Skip to content

Jira Integration

TwoWeeks can pull ticket titles and descriptions from Jira and push final estimates back.


TypeURL formatAuthAPI base
Jira Cloudhttps://your-domain.atlassian.netEmail + API Token/rest/api/3/
Jira Serverhttps://jira.your-company.comUsername + Password or PAT/rest/api/2/
Jira Data CenterSame as ServerSame/rest/api/2/

Self-signed certificates on private servers are supported via the Allow insecure toggle.

  1. Go to Atlassian API tokens
  2. Create an API token
  3. Use your email address and the API token for authentication

Option A — Personal Access Token (recommended):

  1. In Jira, go to your profile → Personal Access Tokens
  2. Create a token with read/write access
  3. Use your username and the token for authentication

Option B — Basic Auth:

  1. Use your username and password for authentication
  1. As a session host, click Import from Jira in the sidebar
  2. Fill in the connection form:
FieldDescription
Jira URLFull URL to your Jira instance
Server typeCloud or Server/DC
Email / UsernameYour Jira login
API Token / PasswordYour token or password
Estimate field IDJira custom field for story points (e.g. customfield_10026)
Allow insecureEnable for self-signed certificates on private servers. Your administrator can disable this (INTEGRATION_ALLOW_INSECURE_TLS=false); you’ll then see a warning and the certificate is always checked
  1. Click Test connection & continue

If successful, you’ll see the list of available projects.

Your Jira API token is encrypted at rest in the database when the server is configured with an ENCRYPTION_KEY environment variable. Without it, the token is stored in plaintext (a warning is logged at server startup). The Jira URL, email, and field ID are persisted so you don’t need to re-enter them when you come back to a draft session.

A token saved in your host defaults is never sent back to the browser: the settings form shows Token saved · Replace, and the importer can leave the token field empty (“Saved token will be used”) because the server uses the saved token for the same Jira URL. Changing the saved URL without entering a new token clears the old one.

After connecting, use the filter panel to build a JQL query:

FilterJQL equivalent
Projectproject = KEY
Issue typeissuetype = Story
Statusstatus = "To Do"
Labelslabels = "needs-estimation"
Text searchtext ~ "search term"

Filters combine with AND. For example:

project = PROJ AND issuetype = Story AND labels = "needs-estimation"

Toggle Use raw JQL to write custom JQL directly — useful for complex queries like sprint filters or date ranges.

  1. Click Search issues after setting up filters
  2. Review the results — you’ll see key, summary, type, and status for each issue
  3. Check the boxes for issues you want to import (or use Select all)
  4. Click Review import
  5. Confirm the list and click Import N tickets

Imported tickets appear in your session ticket queue. Each ticket stores its Jira key (PROJ-123) and URL for later updates.

After finalizing an estimate for a Jira-imported ticket:

  1. Click Confirm & update to finalize the estimate
  2. An Update PROJ-123 in Jira button appears
  3. Click it to push the final estimate to the configured custom field in Jira

The estimate value is sent as-is (string for T-Shirt sizes, number for story points). If the field expects a number, TwoWeeks attempts numeric conversion.

If a Jira issue’s title, description, or labels change after it’s been imported, the host can pull the latest version without re-importing:

  1. Open the ticket’s details panel (double-click the ticket)
  2. Click 🔄 Resync next to the Jira key
  3. The title, description, and labels update from Jira and sync to everyone currently viewing the ticket

Resync is only available for tickets that were imported from Jira — manually-added tickets have nothing to resync from.

ErrorFix
Could not reach JiraCheck the URL and network. Error messages are deliberately generic — your administrator can see the detailed reason in the server log
URL is not allowedThe server’s integration policy blocks that address (for example cloud-metadata addresses, or localhost unless your administrator allow-lists it with INTEGRATION_HOST_ALLOWLIST)
Jira rejected the credentialsVerify email/username and token/password. For Cloud, make sure you’re using an API token, not your login password
Could not verify Jira’s TLS certificateEnable “Allow insecure” for self-signed certificates (if your administrator allows it), or ask your administrator to configure CA_BUNDLE_PATH
Search returns no resultsCheck JQL syntax. Try using the filter widgets instead of raw JQL
Update failsVerify the estimate field ID is correct. Check that the field exists on the issue’s project screen
Resync failsThe issue may have been deleted or moved in Jira, or the connection may have expired — reconnect to Jira and try again