Skip to main content

Follower Tier — REST API Reference

Followers add a follower_tier field to the show tiers endpoint and a token_type field to subscriber list responses.

follower_tier is a routing and reporting object, not a tier definition. A follower feed carries your public feed’s episodes and has no per-episode availability of its own, so there is nothing here describing what a follower can see — only where their feed lives and how many of them there are.

GET /benecaster/v1/shows/{id}/tiers

The response now includes a top-level follower_tier object alongside the items array (bridge tier list).

{
  "items": [
    { "slug": "gold", "name": "Gold", ... },
    { "slug": "silver", "name": "Silver", ... }
  ],
  "follower_tier": {
    "internal_slug": "follower",
    "internal_name": "Followers",
    "feed_url": "https://yoursite.com/podcast-feed/your-show/follower/",
    "subscriber_count": 142
  }
}

follower_tier always appears in the response — even when no followers have signed up yet (subscriber_count will be 0). It is not conditional on follower signups existing.

internal_slug reflects the show’s follower tier slug. The default is "follower". If you’ve overridden it via the benecaster_follower_tier_slug filter, the overridden value is returned here.

feed_url is the base feed URL for followers, without a token. This is the URL prefix used to construct individual follower feed URLs.

GET /benecaster/v1/shows/{id}/subscribers

Each subscriber item now carries a token_type field, plus token_type_label (a human-readable label — an orphaned type, from an add-on since deactivated, takes its base type’s label):

{
  "id": 47,
  "email": "listener@example.com",
  "token_type": "subscriber",
  "token_type_label": "Subscriber",
  ...
}
{
  "id": 91,
  "email": "follower@example.com",
  "token_type": "follower",
  "token_type_label": "Follower",
  ...
}

token_type isn’t limited to these two: a row can also carry purchaser (a buy-up holder) or a type an active add-on registers. See Subscribers REST API for the full token_types, token_type_label, and token_type_base picture.

The summary object gains two fields alongside the existing keys:

{
  "summary": {
    "paying": 84,
    "followers": 142,
    "total": 226
  }
}

paying is the count of tokens whose type is not one Benecaster exempts from paying (follower and purchaser — a deny list, not token_type = 'subscriber'; TokenRepository::PAYING_EXEMPT_TOKEN_TYPES) and whose tier is not a free-mapped bridge tier. Any other token type, including one an add-on defines, counts on a paid tier. This is the figure that drives plan threshold logic — use paying, not total or active, when evaluating against subscriber limits.

followers is the count of tokens where token_type = 'follower'. Followers do not count toward plan limits.

Overriding the Follower Slug

Filter: benecaster_follower_tier_slug

Overrides the slug that appears in the follower feed URL path. Applied per-show. Cosmetic — it changes where the feed lives, not what it carries.

add_filter( 'benecaster_follower_tier_slug', function( string $slug, int $show_id ): string {
    // Return a custom slug for a specific show
    if ( $show_id === 5 ) {
        return 'free-listeners';
    }
    return $slug; // default: 'follower'
}, 10, 2 );

Changing this on a live show changes every follower’s feed URL. The per-tier form /podcast-feed/{show}/{slug}/?token=… is built from this value, so podcast apps holding the old URL stop resolving. Set it before you publish the signup form, or accept that existing followers need to re-add their feed.

See Also

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

Last updated