Good list. The 30 October grants change is going to catch a lot of people with a 42501 they can't explain. One I'd add next to the invoice.paid point is the failure side of a renewal. If the handler only listens for paid events, a failed renewal never reaches Supabase, so the user stays active in your table while Stripe has the subscription past_due. Handling customer.subscription.updated and reading the current status covers both directions.