Skip to main content

Hello!
Could somebody tell me how to use Revenue event described here:
https://help.amplitude.com/hc/en-us/articles/115003116888-Track-revenue

to draw MRR chart per user?  

Please consider, that one payment (revenue) e.g 6000 $ can be connected to 5 different users like 5x1200$.

Additionaly, this 1200$ can be an amount per 12 months, so its 100$ per month per one user.

Do you have any idee? Or i should create my own custom event?

Do you have a single batched revenue event? Why not fire a revenue event per user per transaction? (i.e. 5 payment events at $1,200 each, with a unique user property for each event). If you’re doing the revenue drawdown kind of thing (e.g you get paid $1,200 at once, but you only want to recognize $100 of revenue for each month), then you’ll definitely have to make a custom event, I'm pretty sure amplitude doesn’t support that kind of revenue reporting natively, and it’s pretty uncommon outside of media publications that do it for print-advertising audits.


Hi! thanks for your answer. Look for my note below

 

I can assign revenue event to ever single payment, but There are 2 problems:
1. One user can buy a subscription for entire year (so there is one event for one year - i dont know how to recognize this event for next months)

2. One user can buy a subscription for other users


So the big thing I’ll start with is that amplitude isn’t good for this kind of revenue reporting, I’ll get more on that below, but if you want to carry ahead then there’s a couple of thoughts on how i’d handle this (also i’m not a huge expert here).
First, there’s a fundamental question on revenue recognition. Amplitude, as far as I know, can’t project future revenue forward like that. Especially when it comes to acknowledging 1/12th of the annual revenue each month. It would be much easier to do in excel or another platform. You can however look back at already incurred revenue. And the Amplitude formulas might help here, if you were to go to the ‘Segmentation’ chart, and say pick ‘Any transaction even’t’ You could then adjust ‘Measured as’ to something like dividing total revenue for a period by 12, then diving among unique users:

(REVENUETOTAL(A)/12)/UNIQUES(A) 
 

But this is only going to give the value in the lookback period and doesn’t help at all.

The other option could be to reinstrument your revenue events. let’s use a subscription example where you process payments on some processor and then apply a subscription entitlement to a user on your own system. Imagine a user called ‘Richguy’ spent $6000 on 5 subscriptions for his friends (user1, user2, user3 etc).

 

You could generate several events. A single revenue event for the purchase of the actual item 

subscriptionPaid ($price = “6000”; quantity = 1, SKU=”annual_plan”, currency = “USD”, user = “Richguy”, recipient = n“user1”,”user2”,”user3”,etc]

 

Then a revenue event for each person the item is given to

subscriptionStarted ($price = “1200”, SKU=”annual_plan”, user=’user1”, currency=”USD”, payer=”Richguy”

subscriptionStarted ($price = “1200”, SKU=”annual_plan”, user=’user2”, currency=”USD”, payer=”Richguy”

subscriptionStarted ($price = “1200”, SKU=”annual_plan”, user=’user3”, currency=”USD”, payer=”Richguy”

and so on…

If you wanted to make this really really convoluted you could actually just those second events every 30 days for $100, but this would be a PIA to maintain if you start to diversify subscription tiers or options. 

 

 

Also since this is a subscription we’re assuming you’ve got events coming from some payment processor (like stripe or whatever), and then an event for each person who gets an entitlement. Depending on your payment processor you might actually be able to send over itemised revenue events, in which case you’ll be able to skip that first event and just record each individual transaction in amplitude itemised. Or Potentially passover a single event that contains a quantity of 5 and $1200 each 
subscriptionPaid ($price = “1200”; quantity = 5, SKU=”annual_plan”, currency = “USD”, user = “Richguy”, recipient = “user1”,”user2”,”user3”,etc]

 

Both of these let you look at ARPU easily enough, but I’d try to avoid having two events probably isn’t because if you ever get sloppy you could easily wind up double counting revenue, and it’s just messier to maintain. 

The best option though is probably to use Amplitude only for things like high level ARPU and overall runrate, and do MRR reporting somewhere else


Thank you for your interest and help - I had the same impression that it would be difficult to do without custom events


Reply