Keelcroft / GitHub Issues Sync for Jira / Support
Support
One monitored address for questions, incidents and data requests: support@keelcroft.com. Support hours are Monday to Friday, 09:00–18:00 IST.
October 27 upgrade deployed: Forge production 2.9.0. Health, repair, optional auto-create/comments/explicit assignees and confirmed Reconciliation unlink are included in this build. The separate submitted technical Privacy & Security update awaits Atlassian approval. Existing support hours and response targets are unchanged.
Never send a credential.
Support will never ask for your GitHub personal access token, Atlassian password, or any API token. Do not include one in an email, a screenshot or a log excerpt. If you think a token has been exposed, revoke it in GitHub first and tell us afterwards.
Response targets
- Critical — security incident, or data written to the wrong repository: 1 business day.
- High — sync stopped, or a field written incorrectly: 1 business day.
- Normal — setup, mapping, an isolated error, or a data request: 2 business days.
- Low — feature request or documentation feedback: 5 business days.
What to include
Your Jira Cloud hostname, the Jira project key, the repository, the approximate time of the problem, the agreement state shown in the reconciliation view, and the Jira issue key and GitHub issue number of an affected pair.
Things you can check first
- A pair shows “conflict”. Both sides changed the same field to different values. Decide which is right, make that edit on one side, then press Replay.
- A label was not written to Jira. GitHub labels may contain spaces and Jira labels may not. The app deliberately stores only a generic warning, so inspect the GitHub labels, rename any unsupported one, and replay.
- A status was not written. The Jira status is missing from your status map. Add it and replay.
- Nothing syncs at all. Check the connection is enabled. Use Check connection for a read-only repository/webhook check. Unlike the setup check, it creates no disposable issue and makes no webhook changes. It reports active state, required events, TLS verification and GitHub's last delivery HTTP status.
- The webhook is missing, inactive or misconfigured. On an enabled connection, choose Repair webhook, then Check connection again and independently verify an edit on the other platform. Repair uses the stored signing secret, preserving the enable boundary, mappings and pairs. It searches up to five pages of 100 hooks and refuses incomplete enumeration. A paused connection must be turned on instead.
- GitHub last recorded HTTP 202 or another 2xx. That means a delivery was accepted, not that the queued sync completed. Check Reconciliation and the receiving issue too. There is no continuous monitoring heartbeat or guaranteed delivery time.
- The pair failed with GitHub 401 or 403. Non-retryable responses without a retry delay stop instead of retrying indefinitely. Store a replacement token or restore repository access/required authorization, use Check connection and repair if needed, then replay the affected pair. Never send the token to support. Rate limits and transient errors such as 503 use bounded retries.
- A matching issue was not created. Check the New issues direction. Without a trigger label, the issue must be new and created after sync was enabled; with a trigger label, the label must match. A label rule can include older issues. Pull requests are not GitHub issues.
- A comment was not copied. Check its enabled direction and that it was added after linking. Restricted/internal Jira comments and pull-request comments are excluded; edits/deletions are not mirrored. Each pass reads up to five pages of 100 per platform, pauses if history is incomplete, and copies at most 10 per direction. A later change or replay can run another pass, but cannot override incomplete-history safety. Long source text beyond 30,000 characters is visibly shortened.
- Saving an old connection did not enable comments. Legacy missing comment settings remain off unless explicitly enabled. New connections default to both directions; confirm that is appropriate for the repository's audience.
- An assignee did not change. Supply an explicit Jira account ID to GitHub login mapping and enable the required direction. The app does not search the user directory. It manages the first GitHub assignee, preserves other assignees and refuses unassignment if it would remove them; unassign on GitHub in that case.
Unlink, pause and retained data
Open Project settings, Apps, GitHub Issues Sync for Jira, then Reconciliation, Unlink pair and Confirm unlink. Neither issue nor any copied comment is deleted. Remove the trigger label or change the auto-create rule to prevent relinking. Pause sync disables further processing, clears the webhook signing secret and attempts webhook deletion; it does not clear the stored token, settings/mappings, links or history. If GitHub refuses webhook removal, remove the stale hook in repository settings. There is no general disconnect/delete-connection control. See data deletion for retention and uninstall limits.
Supported boundaries
Descriptions are plain text/Markdown, not rich-text conversion. Files/attachments, native priority and arbitrary custom fields are not copied. The October 27 development checks do not establish teammate permission behavior, throughput under load or GitHub Enterprise Server behavior; no new scopes or egress destinations were added.
Guided evaluation setup
The app is approved and available on the Atlassian Marketplace. We can help configure your first issue pair during the standard 30-day trial at no additional charge. Email support@keelcroft.com with your project type, whether you use GitHub.com or Enterprise Server, and which fields matter. Do not send tokens, signed session URLs or customer issue content.
Security reports
Send suspected vulnerabilities privately to support@keelcroft.com with the subject line “Security”. Include reproducible steps and impact, but do not access data that does not belong to you.