Confirm subscriber app setup and fire a first-listen celebration
Signing up and actually listening are two different events, and the gap between them is where subscribers quietly fall away. Somebody pays, receives a feed URL, means to set it up later, and never does — they are paying you and receiving nothing, and nothing in the payment record shows it.
Benecaster fires an event at each end of that gap: one when the subscriber’s feed URL is created, and one the first time their app actually fetches it. Together they turn a silent failure into something you can act on. Send setup help while the gap is open, stop the moment it closes, and treat a gap that never closes as its own re-engagement segment.
Notes
Fires exactly once per token: benecaster_token_first_accessed fires when last_accessed_at transitions from NULL to a timestamp. It does not fire on subsequent feed polls.
Not the same as benecaster_token_generated: Token generation fires at sign-up, before the subscriber has a podcast app configured. First-accessed fires when their app actually downloads the feed for the first time. In practice, this can be minutes, days, or weeks after sign-up. Avoid sending “you’re all set” messaging at token generation — wait for first access.
Nurture window: Between benecaster_token_generated and benecaster_token_first_accessed is the setup window. Use this gap to send setup instructions. If benecaster_token_first_accessed never fires, the subscriber signed up but never configured their app — a useful signal for a separate re-engagement flow targeting never-started subscribers.
Related Hooks
-
benecaster_token_first_accessed— the hook this recipe uses; full parameter reference -
benecaster_token_generated— fires at sign-up; use for the welcome email and setup instructions -
benecaster_subscriber_feed_inactive— fires when an active subscriber goes silent; a different re-engagement path from never-started subscribers
Code
<?php
add_action(
'benecaster_token_first_accessed',
function ( int $user_id, int $show_id, string $tier_slug ): void {
$user = get_userdata( $user_id );
if ( ! $user ) {
return;
}
// Remove subscriber from "needs setup" nurture sequence.
my_esp_remove_tag( $user->user_email, 'podcast-setup-pending' );
// Trigger "you're all set!" celebration email or CRM event.
my_crm_event( $user->user_email, 'podcast_app_configured', [
'show_id' => $show_id,
'tier_slug' => $tier_slug,
] );
},
10,
3
);
Hooks Used
Need this built rather than just documented? See our services →