How to Keep Salesforce Cases and Jira Issues in Sync When Engineering Fixes a Bug
There's no built-in path. Salesforce and Jira are separate systems with no default awareness of each other, so "can someone update Salesforce" is a real, recurring complaint, named almost word for word in Atlassian's own community forums: "Can someone update Salesforce?" or "Engineering already fixed it yesterday. The customer still thinks it's open." Someone has to notice the Jira issue closed, remember which case it maps to, and go type a status update by hand, and at any real volume that person eventually doesn't.
Fixing it takes one of two things. Build a Jira automation rule wired to a Salesforce API call and maintain it yourself, or use a purpose-built connector that already does the wiring. Both close the same gap. Neither closes it for cases nobody thought to link in the first place, which is the part worth understanding before you pick one.
Why the systems don't talk on their own
A Salesforce Case and a Jira issue are unrelated records the moment they're created. Nothing in either platform knows the other exists. A support rep files a case, decides it needs engineering, and from there the connection between "this case" and "that issue" lives only in a person's memory, or in a comment someone typed linking them, unless something is built to hold that link instead. When the issue's status changes, Salesforce has no way to hear about it, because nothing told it to listen.
That's a wiring problem, not a Salesforce or Jira design flaw. Both products expose the pieces needed to solve it. Salesforce has a REST API and Platform Events for exactly this kind of inbound update. Jira has automation rules that can fire a "Send web request" action off any trigger, including a status transition. What's missing is the part that connects them, and you either build that part or buy it.
Option 1: a Jira automation rule that calls Salesforce directly
This is the DIY path, and it's genuinely buildable in an afternoon for the simplest version. Set a Jira automation rule with a trigger of "issue transitioned to Done," scoped to whatever project engineering ships bug fixes from. The rule's action is a web request. It posts the issue key and resolution to an endpoint on the Salesforce side, usually an Apex REST class, which looks up the case by a stored Jira issue key and updates its status field.
The honest limits show up fast:
- It's one field, one direction. Status flows from Jira to Salesforce. Comments, attachments, and priority don't move unless you build a rule for each one, and a rep's reply on the case doesn't reach the Jira issue at all.
- The link has to already exist. The rule updates a case by matching a stored Jira key, so something upstream still has to write that key onto the case in the first place, which is back to a rep doing it manually unless you build that half too.
- It's your code to maintain. A Salesforce API change, a renamed status, or a swapped-out workflow breaks the rule silently until a case stops updating and someone notices weeks later.
This is worth building if the volume is small and the one field you care about is status. Past a few dozen linked cases, most teams stop maintaining bespoke rules and move to option two.
Option 2: a connector built for this specific pairing
Atlassian doesn't ship a Salesforce connector and Salesforce doesn't ship a Jira one, so the gap is filled by third-party AppExchange apps built for exactly this pairing. The Atlassian community thread cited above recommends Sinergify. Grazitti, the company behind it, describes on its own blog an "automated status syncing" feature that "instantly syncs updates made to the case status in either Salesforce or Jira" and lets a rep "easily create Jira issues directly from Salesforce when they come across customer-reported bugs." Exalate does the same job from the other direction, with more written detail on what it moves: "as developers work on the item in Jira, status updates flow back to Salesforce automatically," comment sync is configurable in both directions, and in Exalate's own example, "resolution in JSM automatically closes the Case with resolution notes."
Both work the same way mechanically. A rep creates or links a Jira issue from inside the case, the connector watches both records, and changes on either side propagate to the other without anyone relaying them by hand. That's a real fix for the exact complaint in the community thread. It's also, like the DIY version, dependent on that first link existing. The connector syncs a case to an issue once someone has attached one to the other; it has no opinion about cases that never got linked.
Where the link still doesn't fit at Larkspur POS
Larkspur POS sells point-of-sale software to independent restaurants, support runs through Salesforce, and engineering ships fixes through Jira. Priya Deshmukh, who leads support, pushed for Sinergify after the third week in a row of a rep asking in Slack whether a ticket engineering closed had actually shipped. Once it was configured, cases linked to a Jira issue updated themselves the moment the issue moved to Done, resolution note and all, the same mechanism described above for both connectors.
Three weeks later, Priya pulled a list of open cases older than five days before a call with a multi-location customer:
Priya, in Slack to the on-call engineer: Case 40218 says the tip-adjustment screen is still broken for Harlow's Diner, but I thought Beck shipped that fix last Friday.
Beck Sorensen, engineering: I did, PLAT-2207, closed Friday. Nobody linked 40218 to it though, someone must have opened a fresh case instead of finding the existing ticket.
The connector did exactly what it was built to do on every case that had a Jira issue attached. Case 40218 wasn't one of them, because the rep who took it never searched for PLAT-2207 before deciding it needed a new report, and a case with nothing linked has nothing to sync. That's not a Sinergify bug. It's the shape of a tool that syncs known pairs and has no way to notice an unmade one.
What neither the rule nor the connector catches
Both the DIY rule and a connector like Sinergify or Exalate solve the same thing well. A case that's already linked to the right issue stays current without a human relaying it. Neither one solves the step before that, noticing which of several differently worded cases are the same underlying bug, or catching a fix that ships as a merged PR with no formal Jira issue ever created for it, which happens constantly for small fixes engineering doesn't bother filing separately. A rule or a connector can only update a link that exists; they have no view into the requests sitting outside one.
Modem approaches this from the request side instead of the sync side. Worth disclosing plainly. Modem also wrote this guide, so read what follows knowing where it came from. Modem's Salesforce integration reads accounts, contacts, and cases for context rather than trying to out-sync a connector, and its Jira integration watches the projects you connect and can search, comment, and update issues directly. Modem reads the request itself, wherever it lands, groups differently worded reports of the same bug into one counted topic, and links that topic straight to the PR or Jira issue that actually resolves it, whether or not a rep ever thought to search for an existing ticket first. When the fix ships, the topic already knows, and everyone who reported it is attached, not just the one case someone remembered to link.
For the native-only version of tracking requests inside Salesforce, see how to track feature requests natively in Salesforce. For the Linear side of this same case-to-ticket question, can Salesforce show which engineering ticket fixed a customer's case covers what a native link looks like when the tracker isn't Jira.
What to actually set up this week
If the volume is low and you only need status, write the Jira automation rule and the matching Apex endpoint, and accept that comments won't travel. If it's higher, evaluate Sinergify or Exalate against your case volume before building anything custom, since both already do more than a first rule will. Either way, the linking step is still manual, so the next question worth asking isn't whether the sync works. It's how many cases never got linked to anything at all.
