Asana is a project management tool that teams rely on to plan, estimate work and complete tasks associated with each project. For many companies, time tracking is essential information to help their business run smoothly, and teams want to know how much time is tracked to each of these tasks.
Harvest provides a time tracking integration through Asana, and gets many new trials through this channel. The business problem is that these customers have a very low conversion rate compared to the overall Harvest conversion rate. We found that of the ~1100 customers who start a trial from Asana each month, they have a low 3.5% conversion rate to paying customers. Compared to the overall 15% conversion rate, this is very low and presented a clear opportunity for improvement.
In early research we found that the biggest challenge that managers are having is with the cumbersome and time consuming process of creating projects in Harvest.
The diagram above shows the existing user flow when setting up the integration between Asana and Harvest. Currently, Asana customers need to set up projects and tasks in both apps in order to get the integration to work, which requires switching back and forth between the two and doing duplicate work.
There are a lot of customers who use Zapier for an easy way to sync their two accounts, but it’s error-prone and not a perfect solution.
The Platform is Harvest’s way of providing time tracking functionality common to all of our integrations that can be implemented in two ways - a button or an embedded form. This allows customers using a multitude of integrations to select the correct project and start tracking time directly to Harvest.
Because all time tracking activity occurs in the Platform iframe dialog, another clear pain point was that there’s no indication of the time you’ve tracked in Asana. Customers need to go into the individual task every time they’d like to see how much time they’ve tracked, and there’s no indication of a running timer at the task list level. To solve this some customers bypass the Platform dialog altogether and track time via the Harvest desktop app while Asana is open in the browser.
To solve this I began exploring a more custom integration in Asana that would solve the customer need to view time tracking data in the context of their task. Asana provides custom fields as a premium feature, and I connected with their partnerships lead to include Harvest time in a custom field in Asana task cards.
Another option was to explore using our browser extension to implement Harvest features in Asana. For example, through their Chrome extension Everhour (a competitor) created a time tracking field within the Asana task card that allows users to estimate and view time tracked.
Due to the custom work required of Asana and difficulty getting our feature on their development roadmap, we decided to go in the direction of providing a more streamlined account setup in Harvest in order to solve the problem.
In a technical research phase, I investigated the data structure of Asana to understand more about how we could provide a seamless set up between the two apps. The diagram above shows the hierarchy of data types in both apps. Most data in Harvest and Asana don’t map 1:1 because Asana doesn’t have the concept of “Client” and Harvest’s “Team” are individual users, but there are some similarities with their concept of projects.
I paired with an engineer who looked into the requirements for syncing between the two apps, and he found that the Asana API provided web hooks for syncing projects. We would discover later on however, that we had built the project on the assumption that there were web hooks at the project creation level, which was incorrect.
Also, at this time I created a competitive analysis of the syncing functionality of similar software, and created a board with user flows from competitors Everhour and Toggl, plus automation tool Zapier.
Early design explorations
In one of my early explorations, I created a prototype to allow for syncing projects and people within the Platform dialog (above). Due to the desire to keep the platform generic for all integrations, and the complexity of creating features custom for only one integration, I changed course to design the syncing flow within Harvest app.
As an alternative to syncing projects, I design some flows that would allow for creating a project “on-the-fly” in the Platform dialog. Customers could choose “Create New”, then type in a project name, select the billing type all within the iframe. Another alternative would be to rely on Asana to add an “Add project to Harvest” toggle in their project creation form.
Also, in early explorations I created a proposal for a more streamlined sign up flow via the Platform, with account detection. This would eliminate a lot of confusion for users who sign up for duplicate Harvest accounts because besides Google sign in, we don’t have any safeguards in place to prevent it. For example, one issue I saw during research was that end users would miss the invite from their employer and sign up for a new account in Harvest. This leads to the customer contacting support to cancel the duplicate account.
After honing in on the syncing solution as the best opportunity to improve the integration with Asana, I played around with a few design iterations for that user flow. In this process, I spent a lot of time on the onboarding screens - both the welcome and success screens - to make it clear to customers what to expect and how to use this new feature. In one iteration I used a stepper to show progress between the screens, but decided that it wasn’t necessary for only 2 main steps plus onboarding screens. I also proposed a new selection pattern with an indeterminate selection, however since it’s a new pattern for Harvest it would have required more design discussion than time allowed.
Syncing projects and people in Harvest
At this point, I understood that there was clear value in providing a more seamless setup and workflow between Asana and Harvest. I scheduled remote interviews with 7 Harvest customers that regularly use the integration and used a design prototype to test the syncing flow. In these interviews I began to understand more clearly what their workflows and pain points were, and they underscored everything we already knew from early research.
One question I set out to answer in the interviews was how customers would want to configure their settings for the sync. Would they want to transfer Projects in Asana as Clients in Harvest? Would they want Projects to transfer 1:1 between the two? While there was an outlier of one customer wanting Asana tasks to transfer over as projects, the majority of customers would find a 1:1 projects sync useful.
In a design exploration above, I offered three possibilities for customers to choose the configuration. However, in the interest of streamlining the set up process and providing our best guess on the functionality that would be most valuable I felt confident with syncing projects 1:1 between Asana and Harvest.
Importing projects and people from Asana
As we began development on the new syncing feature, the developers I was working with discovered that our assumption about webhooks was wrong and there was no way to sync projects and people to Harvest when they’re created in Asana.
This was difficult to learn as syncing was the core functionality that the project was revolving around. We made an assessment of all the alternatives and decided that a manual import would be the least effort and would still be useful to customers and accomplish our goals. So we moved forward in the process of building a manual import flow targeted to new trials from Asana to Harvest.
A note about permissions
Harvest permissions add a layer of complexity to any new feature, and especially one that involves creating new users and projects. We went with the direction of allowing only one authenticated user per company, which means that this admin user is responsible for adding their team to Harvest.
New imported people will receive an email invite to Harvest and will automatically be added to the same projects they’re on in Asana, so they can hit the ground running. These end users will have regular permissions in Harvest, so they’re unable to create or import projects themselves.
Rollout and next steps
Our final solution was an update to the Harvest for Asana integration that offers a seamless project and people import for new Harvest users. Once an account is authenticated, the admin can continue to import projects and people as needed.
The Harvest design and development process is time-boxed to 6-week cycles, so it was good that despite our setbacks we were able to release the new feature to our customers within the required timeframe. Due to the nature of discovery of this feature, we weren’t able to do a staggered release in order to test. We had to implement the redirects and release the feature to 100% of customers simultaneously.
Our success metrics relate to the trial-to-paid conversion rate and adoption of the new feature. The conversion rate from this channel has increased 1% since launch, and adoption looks really good too. Over 1000 projects are now being imported every month into Harvest by new trials from Asana, with minimal support requests.
For next steps we’re staying up-to-date with Asana on their API developments to monitor the introduction of webhooks at the project creation level (to allow for syncing), and also staying in touch with them for the possibility of using custom fields for Harvest data so that it’s easier to see how much time you’ve tracked within the Asana task.
This feature can be found at the following URL in Harvest app (account required): https://harvestapp.com/asana/connect