Hi, I wanted to go through an example and understand the current state of a subscriber. The dashboard has “Subscription expired 11 days ago” and my database still has the user marked with the subscription as active and entitled.
The way I manage the user database record with entitlements is only via webhooks (I listen to them and grand and remove entitlements accordingly).
I think I have some logic issues since in this example the record is not in sync.
Example is for user ID: eL9WN4QjQpZgB36ZCPnGhuIC2cq1
Customer History in the RC dashboard has these as last few events:

My database has these records (event is central USA time):

as you can see, the last events are a RENEWAL and then a CANCELLAION after 3 days (which is what my configured grace period is). I did not receive any “conclusion” event for this user. No BILLING_ISSUE, no EXPIRATION nothing like that.
As you can see EXPIRATION came first and that is when I removed their entitlements. But then a RENEWAL came 8 days later so I added the entitlements back. That’s why the user still has it.
In the past when I reported this, the usual answer is that Customer History shows things our of order. Which would be fixed, but also not what I rely on programmatically, The order of events from the webhook and their Type is crucial to the process and its correctness is vital.
Please advise.