How much revenue can you earn from each of those customers?

You need to answer a range of questions about your revenue, because not all of your revenue is created equal.

The easy part: What types of Revenue do I have?

You need to establish a Mutually Exclusive and Exhaustive revenue hierarchy

(It should be able to describe 100% of your revenue without duplication)

This hierarchy definition will be unique for every business, but 99% of businesses should be able to cleanly define a 3-level hierarchy that will cover 100% of their revenue in a descriptive way.

example hierarchy for a business that offers hardware, software, and professional services.

Note:

Before you go on - SHARE THIS WITH EVERYONE IN YOUR COMPANY

If you’ve created this alignment and are confident in it - celebrate it! Every member of your company should be able to have a clear understanding of how you generate revenue - and have a shared vocabulary with which to talk about it.

The difficult part: How do I track this?

datecustomer_idlevel_1level_2level_3amountend_date

Each row will represent the amount purchased by each customer, for each day, across every category. It will also contain information on when the long-term/recurring purchases conclude/reset

Example:

datecustomer_idlevel_1level_2level_3amountend_date
2024-03-02aaa111RECURRINGSTARTUP_PLANNULL10002025-03-02
2024-03-02aaa111NON-RECURRINGPRO_SERVICESONBOARDING1500NULL
2024-03-15bbb222RECURRINGENTERPRISE_PLANNULL100002025-03-15
2024-03-15bbb222NON-RECURRINGHARDWAREROBOT5000NULL
2024-03-15bbb222NON-RECURRINGPRO_SERVICESONBOARDING3000NULL
2024-03-15bbb222NON-RECURRINGPRO_SERVICESOTHER595NULL

ok…How do I create that table?

  1. Create a clean transaction line items table. This has proven to be the most difficult step for most companies.
    1. The table is clean when you have a column with ‘amount’ that sums to a value you wholeheartedly trust, with each transaction broken down to its component line items, with all revenue accounted for.
  1. You will need to assign each line item into a revenue category
    1. Usually this will be 3 simple but lengthy CASE WHEN SQL statements (one per level) added to line_items table
  1. convert Line Items table to REVENUE table format
select 
	date, 
	customer_id, 
	level_1,	
	level_2,
	level_3, 
	sum(amount) as amount, 
	end_date 
from line_items
group by 
	date, 
	customer_id, 
	category_1, 
	category_2, 
	category_3,  
	end_date