Keelcroft / ServiceNow Sync for Jira
ServiceNow Sync for Jira
Keep a Jira issue and a ServiceNow record in step, and prove it.Published
Available on Atlassian Marketplace. Approved and published on 16 October 2026.
Start the standard 30-day Marketplace trial. Paid via Atlassian; use the Marketplace pricing calculator for your Jira site size.
Start standard 30-day free trial · Get setup help for your first linked pair
The publisher-run round trip against a live ServiceNow Personal Developer Instance (PDI) remains unrun. Marketplace publication does not establish that test result. The sections below describe the app's implemented behaviour, not a publisher-measured live ServiceNow result. Validate your configuration on a non-production instance during evaluation.
What it does
A Jira project administrator connects one Jira project to one ServiceNow task table — incidents, problems, change requests, catalog tasks, requested items, or Agile Development stories and defects — chooses which fields travel in which direction, and links issues to record numbers such as INC0010001. A change on either side is then carried to the other, verified, and recorded.
- Jira summary ↔ ServiceNow short description, and Jira status ↔ ServiceNow state, in either or both directions. Description as plain text, if you switch it on.
- A reconciliation view listing every linked pair with its agreement state, how long ago the pair was last proven identical, and a replay button for anything out of agreement.
- A setup check that signs in, creates a disposable record, reads it back, verifies the short description and deletes it again.
- Per-project scoping, with explicit connect, pause and disconnect.
How changes are noticed
ServiceNow has no outbound webhooks of its own, so the app does two things.
- Every five minutes it asks your instance, in one request per fifty linked records, for each record’s current modification counter. A counter it has not seen before becomes a sync. Nothing else is read during the poll — not the short description, not the description, nothing but identifiers and counters.
- Optionally, instantly. When you turn sync on, the app shows you a short Business Rule script, once, together with a per-connection token. Paste it into your instance as an async after-insert/update rule and a change is picked up within seconds instead of minutes. The script sends only the record number and its counter, never the record content.
Both paths produce the same change identifier, so a record announced by the rule and found again by the poll is synced exactly once. Jira changes reach the app through Jira’s own issue-updated event, immediately.
How verification works
Writing a field and assuming it landed is the usual reason a sync quietly drifts. This app does not assume.
- It reads both sides and works out which fields actually changed.
- It writes only those fields.
- It then issues a separate read against the platform it just wrote to, and compares the stored values with what it asked for.
- The outcome, including any field the platform refused to store, is recorded against the pair and shown in the reconciliation view.
Forge delivers at least once, so jobs are serialized per connection and repeated deliveries stop when their durable event is already complete.
What it deliberately will not do
- It never deletes a record on either side. If one side of a pair disappears, the pair is marked failed and the surviving record is left alone. The only record this app ever removes is the disposable one its own setup check created.
- It never overwrites an edit silently. Edits on both sides are applied in both directions when they touch different fields. A real collision is resolved by the policy you chose and the losing edit is always reported. If both sides changed at the same instant, the pair is held as a conflict rather than guessed.
- It never writes a state it was not told about. An unmapped Jira status is reported to you instead of being forced onto the record.
- It never truncates to make a value fit. A ServiceNow short description holds 160 characters. If ServiceNow keeps only part of what Jira sent, the app reports exactly that instead of pretending the two sides agree.
- It never posts work notes or comments. Only the mapped fields are written, so your ServiceNow activity stream shows the field changes and nothing else.
- It does not relay your data through our servers. Jira talks to your ServiceNow instance directly from Atlassian Forge. There is no vendor-hosted middleman.
Current limits
- State labels are yours to type. Every ServiceNow instance can rename its states, so the app offers the base-system labels as suggestions and sends whatever label you map. A label your instance does not recognise is refused by ServiceNow and reported by the app.
- Closing a record may need more than a state. Many instances require a resolution code and notes before an incident can be Resolved. When ServiceNow refuses the write for that reason, the app reports ServiceNow’s own message against the pair rather than inventing values.
- Labels are not synced. ServiceNow records have no labels, so that field is always off.
- Assignee sync is not supported. ServiceNow supplies a user record and Jira needs an Atlassian account ID.
- Description sync is off by default. Jira descriptions are rich text and ServiceNow descriptions are plain text; what travels is plain text.
- Polling latency. Without the optional Business Rule, a ServiceNow change is noticed within about five minutes, and only for records changed in the last 48 hours.
- One Jira project to one ServiceNow table.
- Both records must already exist. Link a Jira issue key to a ServiceNow record number; automatic new-record creation, comments, work notes and attachments are not supported in the current production app.
- Runs on Atlassian does not apply. Any app that talks to a third-party API needs egress, which makes that badge unavailable by definition.
What you need to connect
- A ServiceNow instance on
service-now.com(orservicenowservices.comfor government instances). Self-hosted domains are not supported. - A dedicated ServiceNow user for the app with the
itilrole, which grants read and write on the task tables, and with Web service access only ticked so it cannot sign in interactively. Additil_adminonly if you want the setup check to delete its own disposable record; sync itself never deletes anything. - Jira project administrator rights on the project you connect.
- No Integration Hub subscription, no ServiceNow Store app and no update set. Only the optional Business Rule touches your instance, and it is a script you paste yourself.
Support
Email support@keelcroft.com. Security reports: same address, subject line “Security”.
ServiceNow is a trademark of ServiceNow, Inc. Keelcroft is an independent publisher and is not affiliated with, endorsed by, or sponsored by ServiceNow or Atlassian.