benecaster_subscriber_feed_inactive
Fires once per inactivity event, from the daily engagement check, when an active subscriber’s podcast app has not polled their feed within the configured inactivity threshold. The threshold defaults to 30 days and is configurable per show via the benecaster_subscriber_engagement_threshold filter and via Settings → Subscribers → Feed inactivity threshold.
When the threshold is crossed, the token’s engagement_status transitions from 'active' to 'at_risk', and this hook fires once. It does not re-fire on subsequent cron runs until the subscriber reactivates (triggering benecaster_subscriber_feed_reactivated) and goes inactive a second time. Tokens whose last_accessed_at is NULL — representing subscribers who have never added the feed to a podcast app — are excluded and handled separately by benecaster_token_first_accessed.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
$user_id |
int |
— | WordPress user ID |
$show_id |
int |
— | ID of the show |
$tier_slug |
string |
— | Tier slug for this subscription |
$days_inactive |
int |
— | Number of days since last feed access |
Examples
Tag inactive subscriber in email platform
add_action( 'benecaster_subscriber_feed_inactive', function (
int $user_id,
int $show_id,
string $tier_slug,
int $days_inactive
): void {
$user = get_userdata( $user_id );
if ( ! $user ) {
return;
}
my_esp_add_tag( $user->user_email, 'podcast-at-risk' );
my_esp_trigger_sequence( $user->user_email, 're-engagement', [
'show_id' => $show_id,
'days_inactive' => $days_inactive,
] );
}, 10, 4 );
Notes
The inactivity threshold is per-show-filterable via benecaster_subscriber_engagement_threshold. A monthly show has a naturally longer listening cadence than a daily one — adjust the threshold per $show_id to avoid false positives.
Need this built rather than just documented? See our services →