← All integrations
Salesforce → Jira

Salesforce Jira integration

In short

A Salesforce to Jira integration turns an escalated Case or a deal blocked on a missing feature into a Jira issue carrying the account, tier, and contract value engineering needs to prioritise, then pushes transitions, fix versions, and resolutions back onto every linked Salesforce record. Done properly it is not a field mirror: it joins on immutable record and issue IDs, drives Jira through legal workflow transitions instead of writing statuses, respects both API budgets, and never reacts to its own events.

What a Salesforce to Jira integration actually does

Salesforce holds the commercial truth: the Account, the renewal date, the Case a support agent opened this morning, the Opportunity stalled for six weeks on a missing feature. Jira holds the work: a bug in a sprint, an epic on a roadmap, a fix version with a release date attached.

Between them sits a handover most companies still do by hand. An agent copies a Case into Jira and pastes the issue key back into a text field. An engineer looks at a bug with no idea whether it affects one trial account or three of the largest contracts in the book. A CSM asks in Slack, for the fourth time, whether PROD-4172 shipped.

A Salesforce to Jira integration closes that loop both ways. Escalated Cases and blocked Opportunities become Jira issues carrying the account context engineering needs to prioritise, and transitions, fix versions, and resolutions travel back onto every linked Salesforce record automatically.

What data moves

Salesforce object / eventBecomes / updates in JiraNotes
Case escalated (status, Escalated flag, or a trigger field)New issue, or link to an existing oneProject and issue type routed by product, record type, or queue
Case Subject and DescriptionIssue summary and descriptionSalesforce rich text converted to Atlassian Document Format
Case Priority / SeverityJira priorityMapped to that project’s priority scheme, never assumed 1:1
Case Comment (published vs internal)Issue commentInternal comments stay restricted, never customer-visible
Account, tier, ARR, renewal dateJira custom fields on the issueGives engineering the commercial weight behind a defect
Opportunity blocked on a product gapFeature request issue, or link to an existing epicMulti-currency orgs need an explicitly converted amount
Files (ContentVersion / ContentDocumentLink)Issue attachmentsSize caps differ; large logs stay as a link, not a copy
Jira eventUpdates in SalesforceDirection reverses
Workflow transitionCase status or a dedicated engineering status fieldPer-project workflows mapped onto one Salesforce picklist
Fix version assigned / releasedField update, Chatter post to the Case ownerTells Support and Sales when the customer can be told
Issue resolution (Done / Won’t Do)Case update, optional closure, notificationOne fix fans out to every linked Case

The exact routing rules, field mapping, and which transitions matter to a support agent are agreed once during scoping and encoded in the pipeline. After that, nobody re-maps them by hand.

The details that break naive syncs

How we build and run it

We treat this as a pipeline, not a two-way field mirror. Case, Comment, and Opportunity changes reach it through Platform Events or Change Data Capture where the org is set up for that, and through SystemModstamp-based polling where it is not. Each change is validated, routed to the agreed Jira project and issue type, mapped onto that project’s priority scheme and custom fields, converted to Atlassian Document Format, and written through the Jira REST API using legal workflow transitions. Jira webhooks drive the reverse leg and write a remote issue link back to the Salesforce record, so the trail runs both ways.

The pipeline is idempotent. Every synced record carries a stable correlation key, so a retry, a replay, or a webhook the pipeline itself triggered never produces a duplicate issue, a duplicate comment, or an endless echo. It runs on cloud-native, fully EU-hosted AWS infrastructure, so Case, Account, and contact data never leaves the EU, which keeps your DPA / AVV and GDPR position clean.

Then we keep it running. Monitoring, alerting, incident response, and watching for Salesforce and Atlassian API changes are our responsibility under contract, scoped at a fixed price with a named owner and an SLA.

When this integration is worth building

If one support team escalates a handful of bugs a month into a single standard Jira project, a marketplace connector or even a manual link on the Case is genuinely fine, and we will tell you that. A managed pipeline earns its place when several Jira projects with different workflows are in play, when prioritisation depends on account tier and contract value sitting on the issue, when one fix has to close dozens of Cases, when comment or field visibility cannot fail even once, when you run Jira Data Center or a mix of Cloud and self-hosted, or when support and account teams spend real hours every week chasing a status a pipeline should already have delivered.

Frequently asked questions

We already have a marketplace connector between Salesforce and Jira. Why build anything?
Marketplace connectors do a competent job of one Salesforce org talking to one standard Jira project with a near-identical field set. They get thin once you run several Jira projects with different workflows, need routing rules based on product or record type, want many Cases pointing at one bug, or care that a specific field never crosses. We build the mapping and the operating rules your teams actually work by, and then we run it under contract rather than handing you an admin screen.
Can engineering see how much revenue is behind a bug?
Yes, and it is usually the strongest argument for the integration. We write account name, contract tier, renewal date, and ARR or open Opportunity value onto Jira custom fields when the issue is created, and refresh them as the Salesforce record changes. Product and engineering then prioritise against real commercial weight instead of asking Sales in Slack. Multi-currency orgs need an explicit converted amount, since Jira has no currency-aware field type.
How do you stop internal comments and hidden fields reaching a customer?
By mapping visibility deliberately rather than trusting a default. A Case Comment marked internal never becomes a customer-visible Jira Service Management reply, and fields your integration user cannot see under Salesforce field-level security never reach an issue. On the Jira side we use issue security levels and comment restrictions as part of the mapping, agreed with you during scoping and tested before go-live.
What happens when twenty accounts report the same bug?
They all link to one Jira issue. Opening twenty duplicates buries engineering and destroys the prioritisation signal. When that issue is resolved or assigned a fix version, the pipeline fans the update back out to every linked Case and, where you want it, notifies each Case owner. A one Case to one issue connector cannot express that relationship.
Who operates it after go-live, and what about Salesforce and Atlassian API changes?
We do. The pipeline runs on cloud-native, fully EU-hosted infrastructure that we monitor, with alerting, incident response, and a named owner under an SLA. Salesforce ships three seasonal releases a year and retires old API versions on a published schedule; Atlassian deprecates Jira Cloud endpoints on its own. Tracking both and adapting the pipeline before anything breaks is our contractual obligation, not a ticket your admin discovers after a failed sync.

Need this integration built and permanently operated? Tell us which systems connect and what data has to move. Fixed-price scoping quote within 48 hours.

Request a scoping call