benecaster_follower_signup_limits
Filters the abuse limits applied to the public [benecaster_follower_signup] form. Defaults: 3 submissions per email address per show per hour, 10 per IP per hour, over a one-hour window.
The IP limit is deliberately not scoped per show. A submitter working through every show on the site is the same abuse as one hammering a single show, and a per-show IP bucket would multiply their allowance by the number of shows on the install.
A limit of 0 or less disables that limit entirely. On this form that is not “unlimited signups” — the form always reports success, sends an email on every submission, and collects no password, so an unlimited version of it is an open mail relay pointed at addresses of the submitter’s choosing, on your domain and your sending reputation. If legitimate traffic is being caught, raise the number rather than removing the limit.
These are filterable and the unlicensed follower cap deliberately is not — that is not an inconsistency. The cap is a licensing gate, where a filter let a site owner grant themselves a bigger free product from a one-line mu-plugin; it shipped with one and had to have it removed. These are abuse limits on the site owner’s own form. Do not cite either as precedent about the other.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
$limits |
array |
— | `array{address_limit:int, ip_limit:int, window:int}` — submissions per address per show, submissions per IP, and the window in seconds. |
$show_id |
int |
— | Show being followed. Scopes the address limit, so following two shows from one mailbox is not self-throttling. |
$email |
string |
— | The submitted address, for per-address policy. Hashed before it becomes a rate-limit key. |
Returns:
array
Examples
Loosen the IP limit for one show running a signup drive
add_filter( 'benecaster_follower_signup_limits', function ( array $limits, int $show_id ): array {
if ( 42 === $show_id ) {
$limits['ip_limit'] = 30;
}
return $limits;
}, 10, 2 );
Notes
Both limits are always recorded, even once one has tripped. An early return on the address limit would leave the IP counter untouched, so an attacker cycling through fresh addresses would never accumulate against the limit actually meant to stop them.
Programmatic callers are not throttled. The limits are applied by the shortcode, not by FollowerSignup, so benecaster_follower_signup() and add-ons doing bulk enrolment are unaffected. A public form and a trusted server-side call are different exposures and deliberately do not share a limit. This is also the answer for a podcaster whose bulk import through the form stopped working: use the import tooling, which is not throttled.
The signed-in path is not throttled either. It sends no mail and a second click mints no second token, so neither abuse applies.
Need this built rather than just documented? See our services →