How to track partial churn

I was wondering if I could get some insight on best practices to track partial churn. We utilize Salesforce Opportunities to track our renewals and Gainsight as our CS tool. We can easily track full churn, as the opportunity is marked as lost, but if a customer decides to only renew 2 out of 3 products, for example, our current process is to modify the quote to the right products and then the opportunity is marked as won. In the background, we then mark what product was removed, but obviously, that's a very manual process and a reporting nightmare.

How does your company handle this? Ideally, I'd like to accomplish it using our current tools without introducing another expense/tool to our team.