Months later, but this makes it hard to detect memberships ending or changing, without doing it via Stripe. How do people detect those events and trigger webhooks?
I’m looking into this as well. Adding a comped subscription to user triggers a member update event, but it seems that the expiration of a comped subscription doesn’t send any event—which is really unfortunate.
I’m running into this exact issue. The member.updated event fires when adding a comped subscription, but nothing when it expires - which is indeed unfortunate for integrations. I’m building something that needs these expiration events. Currently considering tracking expiration dates locally (capturing them from member.updated events) and handling expiration myself, but that feels fragile and prone to drift. Looking at the clean-expired-comped-subscriptions.js job in Ghost, I’d be happy to contribute a PR to add webhook support directly where the expirations are processed. Two approaches come to mind:
Fire individual member.updated webhooks as each comped subscription expires (follows existing patterns)
Single batch webhook with all expired member IDs (more efficient but new pattern)
I lean toward the first option for consistency but it might send a lot of webhooks in a short time because it’s ran on a schedule.