Skip to main content

benecaster_subscription_expired

Action Free

Fires when a membership LAPSES — it ran out and was not renewed: a fixed-term plan reaching its end, or renewals that failed until the membership plugin (or Stripe, for built-in memberships) gave up. Use it to tell a lapse from a deliberate cancellation — a “your card stopped working” win-back message rather than a “sorry to see you go” one.

It fires IN ADDITION to benecaster_subscription_cancelled, never instead, and after it. Every listener on the cancelled hook — the cancellation email, webhooks — keeps working unchanged. It fires only when the subscriber holds no remaining tier on the show; an expiry reported while another tier is still active (MemberPress expires each period’s transaction even on a subscription that renewed) is not a lapse and fires nothing.

Which plugin events count as a lapse: Restrict Content Pro expired; Paid Memberships Pro’s expiry run; MemberPress transaction-expired; WooCommerce Subscriptions expired; built-in memberships whose Stripe subscription was deleted with reason payment_failed.

Parameters

Name Type Default Description
$user_id int — WordPress user ID
$show_id int — ID of the show
$tier_slug string — The tier the subscriber held, read from their token before it was revoked (empty when they had no token)

Notes

A third-party bridge reports a lapse by passing 'expired' as the third argument of its on_subscription_cancelled() callback.

Need this built rather than just documented? See our services →