You have connected Freshservice and Jira. Tickets flow, updates sync, and your ITSM and dev teams finally feel like they are working from the same page. And then, one day, a developer opens a Jira issue and sees something they were never supposed to read: an internal support note meant exclusively for the service desk. It might be a sensitive workaround, an escalation flag, or an agent's candid assessment of the requester's technical skill. Whatever it is, it is now visible to everyone with access to that Jira project.
This is not a hypothetical. It is one of the most common, quietly damaging side effects of Freshservice to Jira integrations that have not been configured with comment visibility in mind. And it happens because Freshservice and Jira treat the concept of "internal notes" very differently - one platform has them built into its data model, and the other simply does not.
Before jumping to solutions, it helps to understand why this problem exists at a structural level.
Freshservice supports two distinct comment types on every ticket:
Jira, on the other hand, has a flat comment model. Every comment added to an issue is visible to anyone with access to that Jira project. There is no native concept of a private or internal comment in standard Jira (though Jira Service Management has some visibility controls, standard Jira Software does not).
When a naive integration simply syncs all Freshservice comments to Jira without filtering, it treats both public replies and private notes as equivalent data. The result: every internal note your agents write in Freshservice ends up as a plain, public Jira comment
The problem is not the integration itself. The problem is a missing filter for the internal note visibility flag in the Freshservice comment payload.
Freshservice comment types and their behavior in Jira integrations
You might be tempted to think of this as a cosmetic annoyance - a bit of information pollution in Jira. It is not. Internal notes in Freshservice often contain:
According to Gartner, data leakage between IT service management tools and development platforms is among the top causes of unintended information exposure in enterprise environments. The risk is amplified when integrations are set up quickly, without detailed attention to data visibility policies.
In regulated industries such as financial services, healthcare, or government IT, exposing internal notes to broader development teams can create audit findings and policy violations. Even outside regulated sectors, the erosion of trust between service desk and development teams - once agents realize their private notes are public - is significant and difficult to repair.
A European bank discovered that internal ServiceNow work notes had been synced to Jira during an integration rollout. The issue triggered an internal security inquiry before it was corrected. The same pattern applies to Freshservice private notes.
The solution requires three layers of control in your integration configuration:
These three controls, applied correctly in your integration's trigger conditions and field mappings, give you a clean, secure comment sync. Let's look at how ZigiOps handles each one.
ZigiOps is a 100% code-free, standalone integration platform that connects enterprise tools without storing any transferred data. It is not a plugin and requires no scripting - all configuration happens through a guided UI with point-and-click field mapping and conditional logic.
For the Freshservice-Jira comment sync challenge, ZigiOps gives you three specific mechanisms:
In ZigiOps, each operation (a directional sync between two systems) has a Trigger Conditions section. Here you define what records ZigiOps should collect from the source system.
For Freshservice comments, you add the condition:
[internal note visibility flag] = public (verify exact Freshservice field name with your technical team)
This condition ensures ZigiOps only collects notes where the visibility is set to public. Internal notes are excluded before any data movement occurs. The exact field name exposed by Freshservice should be verified against your Freshservice API documentation or confirmed with your ZigiOps implementation team.
You also add:
author/id is not {integrationUser}
This prevents the integration from picking up its own previously synced comments and creating an infinite duplication loop.
ZigiOps supports "Last Time" expressions - a timestamp-based filter that records when an operation last ran and uses that time as the starting point for the next data collection. For comment syncing, this is configured as:
{lasttimecomment}
This expression ensures that on each run, ZigiOps only collects comments created after the previous successful sync. Without this, every operation run would re-collect and re-send the entire comment history, creating duplicates in Jira. With it, comment sync is clean, precise, and incremental.
Beyond trigger conditions (which filter at the collection level), ZigiOps also supports conditional mappings at the field level. This gives you a second layer of defense:
IF [internal note flag] = internal/private THEN discard this field (do not map to Jira)
Even if a note somehow passes the trigger condition, the conditional mapping acts as a hard block at the field level - the value is discarded and never written to Jira. This defense-in-depth approach means internal notes are protected at two independent points in the data flow.
ZigiOps supports unlimited conditions per field, so you can layer additional logic - for example, excluding notes from specific agent groups, or filtering notes that contain specific prefix tags used by your team for internal categorization.
Recommended ZigiOps configuration to prevent Freshservice internal notes from appearing in Jira.
Once configured correctly, the Freshservice to Jira comment sync works as follows:
The result is a clean, secure communication channel: developers see only what is operationally relevant, agents retain full control over their internal discussions, and neither team has to think about what is safe to write where.
Technically, yes - if you map the private field without filtering, any comment (including private ones) will sync. But this is exactly the configuration you want to avoid. The correct approach is to use trigger conditions in your integration to exclude all comments where private = true, as described above.
Every internal note your service desk agents write in Freshservice will appear as a standard visible comment in the linked Jira issue. All developers and stakeholders with project access can read it. This can lead to information leakage, compliance issues, and a loss of trust in your internal communication channels.
No. ZigiOps does not store any of the data it transfers. Comments, ticket fields, and note content pass through the platform in real time and are written directly to the target system. Nothing is persisted in ZigiOps itself. This is a core ZigiOps architectural principle and part of its ISO 27001 certified security posture.
Can I also filter Jira comments from syncing back to Freshservice?
Yes. The same conditional logic applies in reverse. In the Jira-to-Freshservice operation, you can configure conditions to exclude specific comment authors (such as automation bots), comment types, or comments matching certain content patterns. ZigiOps supports unlimited conditions per operation, so the filtering logic can be as granular as your use case requires.
What is the difference between trigger conditions and conditional field mapping in ZigiOps?
Trigger conditions determine which records (tickets, issues, comments) ZigiOps collects from the source system. Conditional field mapping applies logic at the individual field level - it controls what value is sent to the target field and whether to send anything at all. For maximum security, use both: trigger conditions as your first filter, conditional mappings as your backup.
Comment visibility in Freshservice-Jira integrations is one of those configuration details that feels minor until it causes a real incident. The pain point is niche enough that many teams discover it only after private notes have already been exposed - sometimes days or weeks after the integration went live.
Fixing it after the fact is awkward. You need to review what was already exposed, assess whether any sensitive information was seen, notify relevant parties if necessary, and then reconfigure the integration. None of that is fun.
Getting it right from the start is straightforward when you use a platform that supports the filtering logic described above. Atlassian's own guidance on Jira permissions and visibility makes clear that standard Jira project visibility does not include a native internal-note concept - which means the responsibility falls on the integration layer to respect comment privacy from the source system.
ZigiOps handles this through its guided, no-code configuration. You do not write scripts. You do not modify APIs. You configure conditions through the UI, apply field-level logic, and test the flow before going live. The ISO 27001 certified platform ensures that even the integration infrastructure itself meets enterprise security standards
If your team is running or planning a Freshservice-Jira integration and you want to make sure private notes never make it to Jira, ZigiOps gives you the conditional mapping, trigger filtering, and security architecture to get it right.
Explore the ZigiOps Frehservice Jira integration on the Atlassian marketplace or book a demo to see the configuration in action with your specific setup.