The billing webhook treated subscription.canceled and subscription.revoked
as the same event. In Polar, the first means the customer asked to cancel,
which normally takes effect at the end of the period they have already paid
for. The second means access has actually ended.
So an account that cancelled on day 2 of a paid month dropped to the free plan immediately, losing 29 days it had paid for.
Now a cancellation request changes nothing except the record that one is
coming, and only revocation downgrades the plan. Changing your mind, through
subscription.uncanceled, already restored the account and still does.
Found by comparing the weekly owner report against the payment dashboard, which disagreed. Both now say the same thing.