Revenue

Your biggest customer might be your least profitable one

Gross margin per customer comes out of the ERP and looks fine. What it leaves out is the twelve support tickets, the three rush shipments, the returns, and the account manager who spends a day a week on this one relationship. Coheed adds the cost of serving to the margin of selling, and the ranking changes.

Systems combined
Exact (ERP)HubSpot (CRM)Dynamics 365 SCM
Runs
Daily at 7am

Sound familiar?

Teams bring us this use case when one or more of these is true.

  • Your top-revenue list and your top-profit list are assumed to be the same list.
  • Nobody can say what a support ticket or a rush shipment costs on a specific account.
  • Discount renewals are argued on revenue, not on what the account actually leaves behind.
  • Account managers spend most time on the customers who shout loudest rather than the ones worth it.

How it works

Coheed runs this daily and builds the number from three systems that each hold one part of it.

  1. 1

    Gross margin is taken from the ERP

    Revenue, cost of goods, credit notes, and discounts per account form the starting margin, using the same numbers your finance team already trusts.

  2. 2

    Service effort is taken from the CRM

    Tickets, meetings, calls, and logged activity per account are converted into a service load, so a demanding relationship becomes a visible cost instead of an anecdote.

  3. 3

    Fulfilment cost is taken from the SCM

    Rush shipments, partial deliveries, returns, and exception handling are counted per account, because these are the costs that never appear on the customer's invoice.

  4. 4

    Accounts are ranked by what is actually left

    The result is a net contribution per account, updated daily, that makes the difference between a big customer and a good customer explicit.

Which data it uses

Only the fields this use case needs are read. Nothing is copied that the insight does not use.

Exact (ERP)

Revenue, cost of goods sold, discounts, credit notes, and invoice history per account.

HubSpot (CRM)

Tickets, calls, meetings, and logged activity per account, plus the account owner.

Dynamics 365 SCM

Rush and partial shipments, returns, and exception handling per account.

What changes

What a team notices once this runs. No invented percentages: the effect depends on your data and your process.

  • Contract and discount renewals are argued on net contribution instead of revenue.
  • Service effort becomes a number, so the cost of a demanding account is visible.
  • Loss-making accounts are identified early enough to renegotiate rather than drop.
  • Commercial and operations teams work from one shared profitability picture.

From insight to action

Cost-to-Serve Review Agent

Available as an agent

The natural agent for this insight prepares the renegotiation pack: which accounts fell below the contribution threshold, what drove it, and what the proposed correction is. Anything touching price or contract terms stays a human approval.

Mode: Human-in-the-loop

Every insight can stay read-only, run with human approval, or run autonomously. You decide per action type, and you can change it later.

FAQ

Frequently asked questions

How do you cost a support ticket?

With a rate you set per activity type. Coheed does not guess your internal cost; it counts the activity accurately and applies your rate, so the model stays yours and stays auditable.

Is this an accounting-grade number?

It is a management number, built to rank and compare accounts rather than to close your books. It uses your ERP margin as its base, so it reconciles with finance at the top.

What if we have no SCM data?

You still get margin plus service load, which already reorders most customer rankings. SCM adds the fulfilment cost layer once it is connected.

How often does it update?

Daily by default. Cost-to-serve moves slowly, but a daily run means the number is never stale when a renewal conversation comes up.

See this on your own data

Tell us your ERP, CRM, and SCM stack and we will show what this use case looks like on your systems.