A subscription renewal should be a unique event, and not associated with subscription.updated

I have worked on numerous stripe projects in the context of SaaS, and this trips me up everytime. When a subscription renews an event is created called customer.subscription.updated, this same event is also triggered if any changes are made to the subscription.

I’m advocating for a new event titled customer.subscription.renewed A renewal should trigger anytime the subscription renews as expected. Example: I signup for a monthly subscription on May 19th, on June 19th when the subscription gets a new end period an event should be triggered customer.subscription.renewed.

Currently the customer.subscription.updated event is triggered. This is confusing as I think something has changed with the subscription. Maybe the customer updated their plan, or an admin changed their billing period. Both of which do trigger the customer.subscription.updated.

A renewal is expected, and happens routinely to every subscription. A price change, product change, billing period change is not routine. This is why I believe these should be separate events.

Webhooks
If this feature was implemented it would make my webhook implementation much simpler. In SaaS it’s common for us to perform some logic based on the renewal. A common scenario is adding credits to an account at the beginning of this subscription.

Currently it’s challenging to listen for a subscription renewal. We can either listen to subscription.updated or invoice.paid. I’ve settled on using invoice.paid, but this is less than ideal as some invoices aren’t tied to a subscription.