August 10, 2026
Asana has an official GitHub app. It does not have an equivalent for Bitbucket, which leaves Bitbucket teams doing by hand what GitHub teams get for free: telling everyone in Asana what has actually been built.
Astogi covers that gap. Reference an Asana task in a commit message, push, and the commit shows up as a comment on the task. This guide walks through the setup and the Bitbucket-specific details that matter.
Astogi connects to Bitbucket Cloud, the hosted service at bitbucket.org. Authentication goes through Bitbucket Cloud's OAuth, so self-hosted Bitbucket Data Center and the older Bitbucket Server are not supported. If you are self-hosted, skip to the last section.
When you push to a repository Astogi is tracking, Bitbucket sends a webhook. Astogi reads the commit from that push, checks the Asana projects linked to the repository, and looks for tasks whose identifier appears in the commit message. Each match gets a comment on the Asana task containing the commit message, the author's name and a link to the commit in Bitbucket.
The author name comes from your Bitbucket account's display name, falling back to the raw author string on the commit if the account is not resolvable. If commits show an unexpected name, the author line in your local Git config is usually why.
One comment is posted per push, built from the head of that push, rather than one comment per commit. Pushing eight commits at once gives the task one readable update instead of eight.
There is no special keyword or trailer. Astogi looks for the task identifier as plain text anywhere in the commit message.
Identifiers are built from settings on the project: a start character such as #, a short project code such as AB, a divider such as -, and the task number with optional zero padding. A task might therefore carry #AB-0042 and read #AB-0042: Fix the login redirect in Asana.
git commit -m "#AB-0042 handle expired refresh tokens"
git commit -m "Handle expired refresh tokens (#AB-0042)"
git commit -m "#AB-0042 #AB-0051 rework the token refresh path"
The last one posts to both tasks.
The rule that catches people out: Astogi ignores a match when the next character is a digit, so a reference to #AB-4 will not also hit #AB-42. The flip side is that if your project pads numbers, #AB-42 does not match #AB-0042 and nothing gets posted. Copy the identifier from the task title rather than typing it from memory.
Bitbucket organises repositories under workspaces, and that shapes what Astogi can see.
When you authorise Astogi, it can list repositories your Bitbucket account has access to. If a repository lives in a workspace you are not a member of, it will not appear, and adding yourself to the workspace is the fix rather than anything in Astogi.
Workspace admins can restrict third-party OAuth access. If your repository list comes back short or empty and you know you have access, check with whoever administers the workspace.
Astogi registers a webhook on the repositories you select and receives push payloads. It does not push code, open pull requests or change repository settings.
Astogi works from push events, so branches are irrelevant to matching. Commits on a feature branch post to the task exactly like commits on main, which means progress is visible while work is in flight rather than only after it merges.
Squash merging needs a moment's thought. When Bitbucket squashes a branch, the resulting commit message is what lands on the destination branch, and that is what Astogi reads. If your individual commits carried the identifier but the squash message does not, the merge produces nothing on the task. Putting the identifier in the pull request title solves it, since Bitbucket seeds the squash message from the PR title.
Bitbucket pull requests themselves are not tracked. Astogi reports commits, not PR state.
A repository can be linked to several Asana projects, and a project can have several repositories linked to it.
That means a monorepo works without special handling: link it to every relevant project and each commit reaches the task it names. It also means a task spanning three repositories collects commits from all three into one thread, which is usually the clearest record you can get of work that would otherwise be scattered.
Identifiers only need to be unique within a project, since matching is scoped to the projects a repository is connected to.
Nothing appeared on the task. Check the task title has an identifier. No identifier means numbering is not running on that project, and tasks created before numbering was enabled never get one retroactively.
The identifier does not match exactly. Zero padding is the usual cause. #AB-42 and #AB-0042 are different strings.
The repository is not linked to that project. Matching only covers projects the repository is connected to. Check the link in the Repositories section.
The Astogi user was removed from the Asana project. Comments are posted as that user, so removing it stops everything. This is a common cause of a setup that worked for months and then stopped.
The webhook is not firing. In Bitbucket, open Repository settings, then Webhooks, and look at the recent deliveries. No deliveries means the webhook is missing, and reconnecting the repository recreates it.
The squash message dropped the identifier. Check what actually landed on the destination branch.
Does this work with private repositories? Yes. Astogi works from webhooks rather than reading your code, and private repositories send webhooks the same as public ones.
Is Bitbucket Data Center or Bitbucket Server supported? No. Astogi authenticates against Bitbucket Cloud only. If you are self-hosted, tell us on the custom integration page.
Can I connect both Bitbucket and GitHub? Yes. Both can be connected at the same time, including to the same Asana project. See the Asana and GitHub guide.
Do I have to use task numbering? Yes. It is what creates the identifiers commits are matched against.
Does it post pull request status? No, commits only.
The Git commit tracking integration page has the feature detail, and task numbering is the companion you will need alongside it.
Self-hosted, or need something this does not cover? Tell us on the custom integration page.
You can try Astogi for free on your first project. Need more? Get more for just €29/month.
If you have any question or need support, feel free to contact us, our team is always happy to come up with the best solutions to your problems.
Overvoorde 49,
Amsterdam, The Netherlands
Made with ❤️ in the Netherlands
©Astogi 2026
Registered at the
Chamber of Commerce #42271509