benecaster_subscription_cancellation_requested
Fires when a built-in membership subscriber requests to cancel their subscription through the native billing portal — immediately after the cancellation request is accepted. The subscriber retains feed access until the end of the current billing period. This is the cancellation-intent event; the terminal cancellation event, [benecaster_subscription_cancelled](/hooks/benecaster_subscription_cancelled/), fires later when the billing period ends and the subscription is actually deleted.
This hook fires only for subscriber-initiated cancellations via the billing portal and only for built-in (Phase 2) membership subscribers. If a subscription is cancelled through the Stripe Dashboard or programmatically with immediate effect, only [benecaster_subscription_cancelled](/hooks/benecaster_subscription_cancelled/) fires — this hook is not called.
Examples
Enqueue win-back sequence on cancellation request
add_action( 'benecaster_subscription_cancellation_requested', function (
int $user_id,
int $show_id,
string $stripe_subscription_id
): void {
$email = get_userdata( $user_id )->user_email;
my_crm_enqueue_sequence( $email, 'winback-24h', [ 'show_id' => $show_id ] );
}, 10, 3 );
Track cancellation intent in analytics
add_action( 'benecaster_subscription_cancellation_requested', function (
int $user_id,
int $show_id,
string $stripe_subscription_id
): void {
my_analytics_track( 'subscription_cancellation_requested', [
'user_id' => $user_id,
'show_id' => $show_id,
] );
}, 10, 3 );
Notes
Fires only for Phase 2 built-in membership subscribers. External bridge subscribers (MemberPress, WooCommerce Subscriptions, Restrict Content Pro, Paid Memberships Pro) do not trigger this action.