Skip to main content

Bulk Subscriber Enrollment

Bulk enrollment lets you import a list of email addresses and immediately grant them access — either as active subscribers on a tier, or as followers — no payment required. It is designed for onboarding a founding cohort, fulfilling a Kickstarter backer reward, migrating subscribers from a platform whose export you can’t run through the standard Migration Wizard, or seeding a follower list.

Enrolling subscribers requires Built-in Membership to be active on your show. Enrolling followers works under any membership plugin, or none.


Opening the Screen

From the Subscribers screen, click Bulk enroll (the person-with-plus icon in the screen header). This opens the Bulk Enrollment screen at /subscribers/bulk-enroll.


Preparing Your List

The input accepts one email address per line or a comma-separated list. Blank lines and duplicates are ignored. The maximum per job is 1,000 addresses. For larger lists, split them across multiple jobs — Benecaster processes one job at a time per show and will queue a second job if one is already running.


Enrollment Settings

Field Description
Add as Subscribers on a tier (default) or Followers — see below
Tier The membership tier to assign. Only shown for Subscribers on a tier; only active native tiers are listed
Email list Paste or type addresses, one per line or comma-separated

Subscribers on a tier, or Followers

Add as: Subscribers on a tier creates an active, paid-tier subscription for each address — this is the original behavior of this screen. It requires Built-in Membership to be active on your show. On a show whose membership plugin is anything else (MemberPress, WooCommerce Subscriptions, Paid Memberships Pro, Restrict Content Pro) — or has no membership connected at all — this option is greyed out, Followers is pre-selected instead, and an amber note explains why: that the show’s subscribers are managed by the connected plugin and should be added there, or (with no plugin connected) that this show has no membership connected. A subscriber batch on such a show is refused by the same rule; the built-in-membership requirement is enforced, not just stated.

Add as: Followers works on any show, regardless of membership plugin. It assigns no tier and creates no subscription — each address gets a follower feed carrying only public episodes, plus the welcome email (sent even if this show’s welcome email is turned off — for a bulk-added follower, it is the only way they receive their feed URL). A newly created account also gets a set-password link. On an unlicensed show, the 100-follower cap applies; addresses past the cap are listed as Skipped, “Follower limit reached — [tell them how to reach you, or try again once you’ve licensed the plugin].” If double opt-in for followers is on, those addresses get a confirmation email first instead of an immediate follower token.

Either way, anyone already on the show is left untouched and not emailed — the results summary reports them as Already on this show rather than Added, whether they currently hold a paying subscription, a follower token, or (for a subscriber batch) a subscription on a different tier.


Running the Job

Click Enroll (labeled Add N subscribers or Add N followers, matching your Add as choice) to submit. Benecaster runs the job asynchronously in the background via WP-Cron. The screen shows a live progress indicator — addresses processed, successful enrollments, and any addresses that were skipped, each with a plain-language reason. On low-traffic sites, WP-Cron relies on incoming requests to trigger — if the job doesn’t start promptly, see Cron isn’t firing on time →.

For each address, Benecaster finds or creates a WordPress user account, then grants the chosen access. No action is required from the recipient — they get a welcome email with their feed URL.

Skipped addresses — an address is skipped if:

  • It is already on the show — an active subscriber on the selected tier, a subscriber on a different tier (for a subscriber batch), or an existing follower (for a follower batch)
  • The email address is invalid
  • (Followers only, on an unlicensed show) The 100-follower cap has been reached

If the show is switched off Built-in Membership while a subscriber batch is waiting to run — after you click Enroll but before the background job starts — the job finishes at once instead of running. Every address appears under Rows needing attention reading Not enrolled — this show no longer uses the built-in membership. Nobody is enrolled and nobody is emailed. (Before this fix, a job caught in that window could be left showing as in progress indefinitely.)


After Enrollment

Enrolled subscribers receive a welcome email, same as an organic sign-up. The benecaster_subscription_activated action fires for each successful enrollment with $source = 'admin_enrolled', so you can distinguish bulk-enrolled subscribers in automation or reporting code.

Two emails per new subscriber, not one

Enrollees whose account is created by the job also receive a “set your password” email, on top of the welcome email. A 400-address import therefore sends 800 messages. Plan the send accordingly — and if your list is large, be aware of what your mail provider will make of it.

The reason is that these users were never asked for a password: you created their account for them, so it has one they have never seen. Their feed works — the token in the feed URL is the credential — but without the set-password email they cannot log in to the account page to find that URL, reset a token, or manage anything. People who sign themselves up choose a password on the form and get no such email.

Only newly created accounts get it. Enrolling an address that already has a WordPress account on your site sends the welcome email but no password email — that person already has a login, and mailing them a reset link would be confusing at best.

To suppress it, a developer can return false from the benecaster_subscribe_send_password_email filter. It receives a $source argument that is bulk_enroll for this job, so you can switch it off for imports and leave it on for subscribers added by hand or through a donation. See Suppress the Set-Password Email for a Role or a Provisioning Flow.

If you suppress it, give those subscribers another way in. Otherwise they have a working feed and no account access, and the problem surfaces weeks later as a support request that looks nothing like an enrollment issue.

Suppressing the welcome email

If you want to suppress the welcome email for bulk enrollments, add a short snippet filtering benecaster_email_should_send and returning false when the activation source is admin_enrolled. See Suppressing Emails for Specific Activations for a working example.

The benecaster_bulk_enrollment_complete action fires once when the entire job finishes, with a summary of the outcome. See the developer reference for the argument list.


For Developers

REST API endpoints for programmatic bulk enrollment are documented at Bulk Enroll REST API.

Relevant hooks:

Relevant classes:

See Also

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