🚀 Feature: GitHub Integration — missing state mapping for "issues referenced by an open PR"
@Saurabhkmr98 is already working on this.
Since May 13, 2026.
- Dominant language
- TypeScript
- Stars
- 59.6k
- Forks
- 5.8k
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 49
Description
Summary
The GitHub integration supports two state mappings — issue opened → configurable
state, issue closed → configurable state. There is no mapping for the intermediate
case: issue open and referenced by an open PR.
Current behaviour
| GitHub condition | Plane state |
|---|---|
| Issue opened | Ready for Dev (configurable) |
| Issue closed | In Review (configurable) |
When a PR is opened with Closes #NNN or Fixes #NNN in its body, the linked
Plane ticket stays in its current state — even though the work has clearly moved
into code review.
The only native workaround is the PR state automation feature, which requires
putting the Plane ticket ID in brackets in every PR title (e.g. [XTREND-77]).
This creates friction — developers must manually look up and include the Plane ID
on every PR, and it breaks down as soon as anyone forgets.
Requested behaviour
A third configurable mapping in the GitHub integration settings:
| GitHub condition | Plane state |
|---|---|
| Issue open, no PR referencing it | Ready for Dev |
| Issue open, referenced by an open PR | Code Review ← missing |
| Issue closed | In Review |
With its reversal: if the PR is closed without merging, the ticket returns
to the "open, no PR" state.
Why this is feasible
The data already exists on both sides:
- Plane stores
external_source: "GITHUB"andexternal_id: "<issue_number>"
on every synced ticket — the lookup chain is already there. - GitHub fires a
cross_referencedevent on the issue timeline when a PR body
containsCloses / Fixes / Resolves #NNN.
Impact
Without this, the integration covers the beginning and end of the dev lifecycle
but misses the most visible middle step. Teams either lose the state transition
entirely or add process overhead by requiring Plane IDs in PR titles.
As a workaround we have built a GitHub Actions workflow that calls the Plane API
on PR events, but this belongs natively in the integration.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.