Git integrations: connect your code to your planning workflow

Link GitHub, Bitbucket, or GitLab repositories to your Flying Donut project. See commits on cards, update tasks from commit messages, and keep delivery progress visible.

What you get

When you connect a Git repository to a Flying Donut project, every push sends commit data to your project. Commits that reference card or task IDs appear in the card detail view with a direct link to the commit in your repository.

  • See which commits are related to each card or task
  • Click a commit hash to jump directly to the commit in GitHub, Bitbucket, or GitLab
  • Update task status and track time directly from commit messages
  • GitHub Issues integration links issues with backlog cards bidirectionally
  • All team members see commit activity in real time

Setting up the integration

Navigate to Project Settings → Integrations. Only project Administrators or Owners can enable integrations. All three platforms follow a similar setup flow:

  • GitHub: click Enable, then use automatic setup (recommended) or manual webhook configuration
  • Bitbucket: click Enable, generate a Payload URL, and add the webhook in Bitbucket
  • GitLab: click Enable, generate a Payload URL and Secret, and add the webhook in GitLab

Linking commits to cards and tasks

Reference a card or task by its ID (shown as #number in the top-left corner of each card or task) in your commit message. Flying Donut automatically links the commit to that item.

  • Include the ID anywhere in the commit message: 'Fix login bug #1234'
  • Multiple IDs in one commit are all linked: 'Refactored for #3224 and #3236'
  • Linked commits appear in the card detail view with author, date, message, and a link to the commit

Workflow commands in commit messages

Beyond linking, you can update task status and time tracking directly from your commit message. This is especially useful for developers who want to update Flying Donut without leaving their terminal.

Task commands:

  • #taskId -todo — move the task to To Do
  • #taskId -doing — move the task to Doing (default when referencing a To Do task)
  • #taskId -done — move the task to Done
  • #taskId -left 5h 20m — update time remaining to 5 hours 20 minutes (also accepts -left 5:20)
  • #taskId -spent 3h — log 3 hours of time spent

Card commands:

  • #cardId -done — move all tasks on the card to Done, completing the card

Commands can be combined:

  • #532 -left 2h -spent 8h — updates time remaining and time spent, moves task to Doing
  • #3224 -done #3236 -left 15h — completes one task and updates another in the same commit

Example commit message:

#3224 is -done and I -spent 12h. Started working on #3236. Already -spent 3h but it was underestimated. I think it has -left 15h

User identification

Flying Donut matches commits to team members using the email address in your local Git configuration. For this to work, the same email must be verified in your Flying Donut account.

  • Check your Git email: git config user.email
  • Make sure that email is added and verified in your Flying Donut account settings
  • Once verified, your commits will be attributed to your Flying Donut profile
  • Without email verification, commits will still appear on cards but may not be attributed to a specific user

GitHub Issues sync

The GitHub integration includes optional Issues sync. When enabled, Flying Donut creates bidirectional links between backlog cards and GitHub Issues:

  • Cards created in a linked backlog bucket are automatically created as GitHub Issues
  • Issues created in GitHub appear as cards in Flying Donut
  • Custom labels with an 'fd:' prefix reflect Flying Donut status in GitHub
  • Approving a card in Flying Donut closes the linked GitHub Issue
  • Import existing GitHub Issues into your backlog with the import tool

Example: An open-source project uses GitHub for issue reporting and Flying Donut for sprint planning. Community-reported issues flow into the backlog automatically. The team triages them, pulls them into sprints, and when cards are approved, the corresponding GitHub Issues close.

Common questions

Can I connect multiple repositories to one project?+
The integration links one repository per project. If you need multi-repo support, create separate projects and group them in a workspace.
Why does GitHub request write permissions?+
GitHub's API requires the 'repo' scope to list private repositories and create webhooks. Flying Donut only uses read access for repository listing and write access for webhook creation and (optionally) GitHub Issues sync.
Do workflow commands work in merge commits?+
Yes. Any commit message that includes #taskId or #cardId with a command will be processed, including merge commits and squash commits.
Can I use the integration with GitHub Enterprise?+
The automatic setup works with GitHub.com. For GitHub Enterprise, use manual webhook configuration with the generated Payload URL.
How do I disconnect the integration?+
Go to Project Settings → Integrations and disable the integration. The webhook is removed and no further commits will be synced. Existing commit links on cards are preserved.

Connect your repository and keep code and planning in sync

Link commits to cards, update tasks from the terminal, and give your team visibility into delivery progress — all without leaving the workflow they already use.