# GitHub & Jira Sync

> Automatically create and link Jira tickets when a new GitHub issue is opened, ensuring product and engineering stay aligned.

**Starting point · about 15 minutes · 3 steps**

Mirror every new GitHub issue into Jira, then comment back on the GitHub issue with the Jira key so each side carries a link to the other.

This recipe builds on the earlier mapping work. The final action writes back to the system that started the run, using a value the Jira action produced.

GitHub trigger → Jira → Back to GitHub

## What you will use

- Two connected apps in one workflow.
- A reference to an earlier step's output, to carry the new Jira key back to GitHub.

## Prerequisites

- A connected **GitHub** account.
- A connected **Jira Cloud** account.

---

## Building the Workflow

### 1. The Trigger: GitHub (Issue Opened)
Drag a **GitHub** trigger onto the canvas. Authenticate and select your target repository. Choose the "Issue Opened" event.

### 2. The Action: Jira (Create Issue)

Add a **Jira** action step and select "Create Issue".
Map the incoming GitHub data into the Jira fields:

- **Summary:** `{{ 1.issue.title }}`
- **Description:** `Reported by @{{ 1.issue.user.login }} in GitHub: {{ 1.issue.html_url }}`, then press **Enter** for a blank line and add `{{ 1.issue.body }}`
- **Issue Type:** Bug (or Task)

A trigger's fields sit at the top level, which is why every path here starts `1.` with no wrapper. Insert them with the Workflow data panel rather than typing them.

### 3. The Loop-Back: GitHub (Add Comment)

Link the new Jira ticket back to GitHub so the engineer who opened the issue can see it was picked up.
Add a second **GitHub** action step and select "Create Issue Comment".

The paths below are the shape a Jira **Create Issue** step typically returns. Confirm yours before you rely on them: run step 2 once, open its **Executions** tab, and read the actual field names. What sits after the step number is decided by the step, not by Glow, so there is no wrapper you can assume beyond `ret`.

> _"Tracking this internally as `{{ 2.ret.issue.key }}`. You can view the Jira ticket here: `{{ 2.ret.issue.url }}`"_

> **Want true bidirectional sync?** You can build a second workflow in Glow that
> does the exact opposite. Trigger on **Jira (Issue Transitioned)**, use a
> **Conditions** step to check if it moved to "Done", then use a **GitHub**
> action to close the corresponding GitHub issue.

## Test and go live

### Create one unmistakable test issue

Open a GitHub issue titled `Glow sync test — safe to close` with a short body. Run the trigger, then inspect the Jira step's stored output before configuring the final comment. Insert the returned issue key and URL from the Workflow data panel; do not rely on the example paths if your connector returns another shape.

### Check both systems

Confirm Jira contains one issue with the GitHub title, body and source link. Return to GitHub and confirm one comment links to that same Jira issue. If Jira succeeds but the comment fails, check the repository and issue number mapped into **Create Issue Comment** as well as the Jira output fields.

### Set the workflow Live

Close or label the test records according to your team's convention, switch the workflow to **Live**, then create one final controlled GitHub issue. Confirm one Jira issue and one GitHub comment are created.

## What's Next?

👉 **[Continue to Support Ticket Triage with AI →](/getting-started/cookbook/zendesk-sentiment-triage)**

- Build the reverse-direction branch described above with the [Conditions Step](/build/action-steps/conditions).
- Map fields between the two systems confidently using [Workflow Data](/build/core-concepts/workflow-data).
