Skip to main content

benecaster_subscriber_feed_inactive

Action Free

Fires once per inactivity event, from the daily engagement check, when an active subscriber’s podcast app has not polled their feed within the show’s inactivity threshold: the Feed inactivity threshold in Show Settings → Subscription (default 30 days), then the benecaster_subscriber_engagement_threshold filter, which can raise or lower it. benecaster_get_engagement_threshold() returns the value the check uses.

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_subscriber_never_accessed and 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 — The token's stored tier — `follower` for a follower, the subscriber's tier otherwise. The same value all four engagement hooks pass; to classify the listener, use benecaster_get_token_type().
$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 podcaster sets the threshold per show in Show Settings. A monthly show has a naturally longer listening cadence than a daily one, so that setting is the first place to adjust it; the benecaster_subscriber_engagement_threshold filter overrides it in code.

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