How to measure client profitability in Asana? (Total cost vs Monthly fee)

:light_bulb: Hello, community! :waving_hand:

I’m looking for a way to measure our clients’ profitability directly in Asana and would like to know how you handle this.

1. What I’m trying to do: I need to have a complete overview of how much each client is costing the company (considering ALL active projects with them) and compare it with the monthly fee they pay. The goal is to identify whether the client is profitable and which bottlenecks I can adjust to improve this relationship.

Example: “Client X pays $5,000/month → Costs us $6,500/month in worked hours → Not profitable”

2. What I’ve already considered/tested:

  • I’m not referring only to Workload (team capacity)

  • It’s not just about estimated vs actual hours on isolated tasks

  • I don’t want to evaluate just one specific project, but rather a consolidated view per client

  • I explored Portfolio, but it doesn’t automatically sum the hours from custom fields in tasks, nor does it add actual hours in the list view

3. What’s not working/my question: I would like to manage this directly in Asana, without relying on external integrations or spreadsheets.

My idea would be: as each employee completes tasks and adds “actual hours” (custom field), these values would automatically sum up per project (keeping in mind that each employee has a different cost/hour rate). In Portfolio, I would then have an overview of each project and could group by client.

However, Portfolio doesn’t automatically pull the sum of time tracking fields from tasks.

My questions:

  • Has anyone managed to implement something similar using only Asana?

  • Is there any way to make these automatic sums that I’m not aware of?

  • Do you use any specific structure (tags, portfolios, custom fields) for profitability tracking?

If it’s not natively possible, I’d like to leave this as a feature suggestion: allow Portfolios to automatically calculate sums/averages of numeric custom fields from project tasks according to different cost/hour rates for each employee.

I appreciate any insights! :folded_hands:

@Mauricio_Donati Welcome back to the forums.

Assumption: The portfolio you are working with only contains projects for a single client (projects can belong to multiple portfolios if you need to report in other ways).

Option 1:

  1. At the portfolio level, create a Rollup custom field for Actual hours. This will bring the total Actual Hours from each project into the Portfolio.
  2. Add a formula field to the portfolio that calculates the cost using an average rate for your entire organization.
  3. Create a report in the dashboard that shows total cost (which would be a number chart that sums your Cost formula field). This will be your total cost for all projects within that portfolio.

Option 2: Alternatively

  1. Add a role and average hourly rate custom field to your projects.
  2. Add a formula field (ex: Task Cost) that calculates the cost per task based on the rate and the actual hours. The role and average hourly rate can be set via rules.
  3. Add a rollup field to the portfolio for Task Cost.
  4. Add a numbers chart to the portfolio dashboard that sums Task Cost.

Option 2 may be a bit more accurate since there is typically less spread in cost by role or team versus an organization as a whole. It really depends on how accurate the costs need to be.

A custom field could also be added at the portfolio level to track the amount the client is paying per project (maybe breaking down the monthly rate charged to the client by percentage of hours estimated per project). Then add a formula field to calculate the difference between actual cost and estimated cost. Lots of ways to set this up.

1 Like

Thank you for such a quick response!

First, I wanted to mention that I’m writing in my native language and using AI to translate. Perhaps some terms in my version of Asana aren’t the same as in English.

Regarding Option 1:

  1. In the rollup custom field, I only have the following “input” options available: “estimated duration, due date, completion date, start date, and today.” There is no “actual duration” option (which is Asana’s native field)

  2. For this item, how could I do it? Do I need to have a task for each employee and a column for each hourly cost? And would this need to be added to all projects for that client? It didn’t make much sense to me.

  3. Could you elaborate on this item as well?

Regarding Option 2:

  1. Ok, but all projects would need to have this field. I have an average of 10 different projects per client. Each one with different team members working on it and employees with different cost/hour rates. Even if I establish an average hourly rate, would each project need to have this “section,” correct?

  2. I confess I don’t use the formula field and know little about it. Could you explain it better to me?

  3. Would this summary field be another formula? I also didn’t understand.

  4. Ok

Thank you so much again!

When creating the Rollup custom field, the formula should be as shown below. Of course, change the Field Title as you see fit. #Actual Time can be manually typed into to brackets in the formula field.

For Option 1 you only need to add two fields at the portfolio level, the rollup field as described above and a formula field that multiplies the Actual Hours field by the average hourly rate for your organization. Nothing needs to be created at the project level.

To get the full cost of all projects within the portfolio, add a widget (or chart) to the Portfolio dashboard. This will be a number type chart:

  • Report on: Tasks
  • Chart style: number
  • Chart Data
    • Value: Actual Time and Sum
    • Unit of time: Probably Hours and can be set to whatever makes sense for you

Correct, each project would need to have the custom fields described above. If you are on Enterprise licenses, you can create a bundle to add these fields across multiple projects.

Formula fields provide mathematical equations that are able to calculate values between two or more number fields. It is a field type just like single select or multi select.

The Rollup field described in Option 2 is the same as the Rollup field in Option 1. Only, instead of rolling up the actual hours, you are rolling up the calculated cost per task from each project.

In the project you would have something like the below table where Task Cost is a formula field that multiplies Actual Hours x Role Hourly Rate:

Task Name Actual Hours Role Hourly Rate Task Cost
Task 1 1 50 50
Task 2 3 60 180
Task 3 2 50 100

The Rollup field in the Portfolio would be for Task Cost. This will provide the total cost per project within the portfolio. The Numbers widget in the Dashboard will provide the total cost of all projects within the portfolio.

1 Like

Wow, I did it!

It will take me a while to understand 100% of everything I can do there in portfolio, but what you taught me should be more than enough!

Thank you so much!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.