Skip to content

Link pull requests to tickets

A pull request on its own tells you what shipped. Tied to a ticket, it also tells you which project and initiative the work was for — so its cost shows under Spend across initiatives, and its code can count towards effort.

Go to Insights → Engineering insights → Pull requests.

The list

Each row shows the pull request's number and title, repository, author and team, initiative, cost, and lines added and removed. Bot pull requests are badged bot, and agent-written or AI-assisted ones are marked.

Every pull request, who wrote it, which initiative it was for and what it cost.
Pull requests list with author, initiative, cost and lines changed, including pull requests written by agents with the person who ran each one underneath

Every pull request, who wrote it, which initiative it was for and what it cost.

  • Filter by State (Merged, Open, Closed), by Author (people or bots), and by Linkage → Unlinked.
  • Sort by last activity, merged date, opened date, cost, number or lines added.
  • Select a row to see the pull request's Cost & effort, Authorship, Line authorship and Linked sessions (the AI sessions tied to it).

How a pull request is tied to a ticket

Flowstate looks for a ticket in the branch name, the pull request's title and description, and commit messages. Once it finds one, the pull request takes that ticket's project, and the project's initiative.

Project toolMention the ticket like this
LinearThe issue key, in any capitals — for example FLO-123, or a branch like will/flo-123-fix. Pull requests Linear's own GitHub integration attaches to an issue also count.
Azure DevOpsAB#398362 anywhere, or a branch that starts with the work item number, such as 398362-fix or users/will/398362-fix. A plain number in a title isn't read, so version numbers don't create false links.

If the ticket arrives in Flowstate after the pull request, Flowstate links it on its daily re-check.

Not available yet: Jira ticket references

Pull requests aren't tied to Jira tickets automatically. Link each one to its project or initiative by hand, as below.

There's no setting to map a whole repository to a project. A pull request is placed by its ticket, or by hand.

  1. On Pull requests, filter by Linkage → Unlinked.
  2. Open a pull request.
  3. Choose its Project or Initiative.
  4. Check for the message Link updated.

To remove a link, choose Clear link. From the weekly effort report, See this person's unlinked pull requests opens this list for one person.

The lasting fix is to mention the ticket in the branch or title, so future pull requests link themselves.

Cost per pull request

A pull request's cost has two parts:

  • People's time — the days the people who committed to it spent on it, at their day rate. It shows straight away. It doesn't wait for weeks to be submitted, and the pull request doesn't need to be on a project. Bots have no cost. A pull request whose commits haven't arrived yet has no cost until they do.
  • AI cost — the cost of the AI sessions linked to it. See AI impact.

How day rates are worked out is in How costs are calculated. Without access to financial figures, you see days of effort instead of money.

Agent pull requests and operators

When a coding agent writes a pull request, its cost belongs to the person who ran the agent — the operator. The list shows the agent, with the operator beneath.

Flowstate works out the operator for you where it can. To help it, ask people to add a Co-Authored-By: line with their details to agent commits, or to start the branch name with their GitHub username (for example will/…).

When Flowstate can't tell who ran the agent, the pull request shows Operator unresolved. Only its AI cost counts until an operator is found.

If something's not right

The initiative shows "—". The pull request isn't tied to a ticket, or its ticket's project isn't in an initiative. Mention the ticket, link the pull request by hand, or add the project to an initiative.

Spend across initiatives is empty. No pull requests in the period are tied to an initiative.

A Linear key in the branch didn't link. The Linear issue hasn't arrived in Flowstate yet, or the key is mistyped. It links on the daily re-check once the issue arrives.

A pull request shows Operator unresolved. Flowstate couldn't tell who ran the agent. Use a Co-Authored-By: line or a branch name that starts with the person's GitHub username on future agent work.

Flowstate Documentation