Use case: Team Collaboration

Uniting Developers and PMs with Asana, Github, and Slack

Core integrations

Alexandre Rimthong is a former Platform Lead at Unito. In this article, he reveals how our product and engineering teams use the tool to keep tickets in Asana automatically updated with work from GitHub.

When building software, new features and fancy tools don’t mean much if users can’t…well…use them. Solving bugs and other quality issues depends on the effective collaboration between multiple teams. The steps required demand transparency and frictionless communication. That includes everything from initial detection by a customer success expert, product triage, to building an engineering solution.

Our product managers use Asana as their work hub, while engineers build solutions in GitHub, and everyone relies on Slack for general communications. Keeping information flowing across these channels can be daunting.

The tool stack

Asana

This is the work hub for the entire company. When the support team finds a bug, they file it here. Before each sprint, product managers go through tickets, feature requests, and more in Asana before deciding what they need to prioritize. Whenever our software teams need to collaborate with other departments, that begins here, too.

GitHub

Every little bit of development work that goes into our tool happens in GitHub. We use version control to handle multiple code branches, merging when we’ve fixed a bug or finished development on a feature.

Slack

Everyone at Unito communicates through Slack, and it’s an essential tool for collaboration. We also use it to keep other teams aware of development work, with channels dedicated to deployment and software updates.

Before Unito

Uncertain ticket status

Before this workflow was automated, our engineers needed to manually update a ticket’s status in Asana as they worked on it. Team members in GitHub often forgot to share updates in Asana after pushing or merging their code. As a result, PMs couldn’t really trust ticket status as displayed in Asana. Instead they had to poke engineers for a ticket’s true status. That makes the PM’s work less efficient and disturbs an engineer who could be in the middle of a deep work session.

Communication delays mean shipping delays

This manual workflow added multiple layers of communication between teams and tools. In order to view a ticket’s status, users had to go through them all to get the latest updates. Since each team works at its own pace, a bug fixed in the morning may only be tested by the product team the next day during their daily triage. If the update is ready for deployment, that means an extra day is lost. If it’s not, more time is lost in the eventual back-and-forth between teams.

How things changed with Unito

Tickets in Asana are now automatically updated based on work in GitHub. The most important updates are pushed to Slack — without anyone having to write the same status update every week.

Accurate status updates 

Whenever an engineer marks an Asana ticket as “in progress,” we shift it to GitHub. Once the GitHub code is then ready for our staging environment, the associated ticket in Asana’s Status in queue field is updated automatically. This means that the status of our Asana ticket is always accurate. Other collaborators know how a ticket is progressing without needing to interrupt an engineer’s work for status updates.

Validate fixes as they’re available

PMs are notified in a Slack channel as soon as an engineer’s work is merged and deployed in staging. That means they can immediately execute user acceptance tests. Notifications are pushed automatically so no one needs to check Asana for updates or manually copy-and-paste status updates to Slack. Our product and engineering teams can instead deliver value faster with less manual input.

The Unito flow in detail

Everything starts in Asana. We’ve connected this project to three GitHub repositories — each representing a different part of our engineering work — with individual Unito flows. We use a custom Repo field in Asana and a filtering rule in Unito. Doing so enables us to automatically sync a ticket from Asana to the right repository without additional effort.

We’ve also built a flow connecting Asana with a Slack channel, so status updates are automatically sent to the people who need them.

The flows connecting Asana with GitHub each have an additional trigger, which looks at the Status in queue custom field. That lets people know if a ticket is being evaluated, worked on, or ready for deployment. Once it’s switched to In progress, Unito automatically creates a GitHub issue synced with a matching Asana task.

Creating a matching Github issue also gives us a simple reference to the bug in our Pull Requests, where the code fix actually lives.

When the bug fix code is ready to be integrated into the main branch, we add the keywords “fixes issue #” to automatically close the given issue number.

Once an issue has been closed, we change the status in queue of the associated Asana task to Ready for release.

When a fix has been merged and set to Ready for release, we notify the Slack #quality channel so that any last-minute checks can be done before we release to production and notify our customers.


A headshot of Alexandre Rimthong, Platform Lead at Unito.

“With Unito, our engineers can stay in GitHub and give real-time updates asynchronously. That means our PMs in Asana know the true status of a ticket without disrupting anyone, helping us ship more value to our customers faster.”

— Alexandre Rimthong, Platform Lead