Title: Bang! Invites &#8211; Invite People to Register by Email
Author: Bang! Plugins
Published: <strong>August 13, 2026</strong>
Last modified: August 13, 2026

---

Search plugins

![](https://ps.w.org/bang-invites/assets/banner-772x250.png?rev=3645972)

![](https://ps.w.org/bang-invites/assets/icon-256x256.png?rev=3645972)

# Bang! Invites – Invite People to Register by Email

 By [Bang! Plugins](https://profiles.wordpress.org/bangplugins/)

[Download](https://downloads.wordpress.org/plugin/bang-invites.1.0.38.zip)

 * [Details](https://wordpress.org/plugins/bang-invites/#description)
 * [Reviews](https://wordpress.org/plugins/bang-invites/#reviews)
 *  [Installation](https://wordpress.org/plugins/bang-invites/#installation)
 * [Development](https://wordpress.org/plugins/bang-invites/#developers)

 [Support](https://wordpress.org/support/plugin/bang-invites/)

## Description

Bang! Invites lets you invite people to register on your site by email. Each person
gets a private link that expires, lets them set a password, and gives them the role
you pick. You can track every invitation – pending, accepted or expired – and resend,
regenerate or copy any link.

Features:

 * Invite one or several people at once by email.
 * Choose the role new registrants receive.
 * A branded, editable invitation email with a secure one-click link.
 * A registration form via the [banginvites_form] shortcode, with optional auto-
   login and a redirect of your choosing.
 * A welcome email and a team notification on each new registration.
 * Tracking list with resend, regenerate-link, copy-link, delete and bulk delete.

#### The registration page

Create a page, add the shortcode [banginvites_form] to it, then choose that page
under Bang! Invites > Settings. Invite links point there.

Documentation lives at [bangplugins.com/docs/invites](https://bangplugins.com/docs/invites).

## Screenshots

[⌊Send an invitation: enter one or more email addresses and choose the role each
person will get.⌉⌊Send an invitation: enter one or more email addresses and choose
the role each person will get.⌉[

Send an invitation: enter one or more email addresses and choose the role each person
will get.

[⌊The invitation email, edited in place with click-to-insert tokens for the registration
button, the plain link and the expiry date.⌉⌊The invitation email, edited in place
with click-to-insert tokens for the registration button, the plain link and the 
expiry date.⌉[

The invitation email, edited in place with click-to-insert tokens for the registration
button, the plain link and the expiry date.

[⌊The registration page an invited person lands on, with their email already filled
in and the button styled to match the site.⌉⌊The registration page an invited person
lands on, with their email already filled in and the button styled to match the 
site.⌉[

The registration page an invited person lands on, with their email already filled
in and the button styled to match the site.

[⌊Settings, with an "On this page" index that follows you as you scroll.⌉⌊Settings,
with an "On this page" index that follows you as you scroll.⌉[

Settings, with an “On this page” index that follows you as you scroll.

## Installation

 1. Upload the plugin through Plugins > Add New > Upload, or copy the `bang-invites`
    folder to `/wp-content/plugins/`.
 2. Activate it.
 3. Create a page containing the shortcode [banginvites_form].
 4. Under Bang! Invites > Settings, choose that page, the default role, and where people
    go after registering.
 5. Send your first invitation from the Invite tab.

## FAQ

### A used invitation link still shows the registration form

That is a page cache serving an old copy of the registration page. The plugin sends
no-cache headers, sets the DONOTCACHEPAGE constant, and sets a cookie on invite-
link requests, which prevents caching on virtually all hosts and caching plugins.
If your host’s cache still stores the page, add your registration page (e.g. /portal-
setup/) to the host’s cache exclusion list (on 20i: StackCache > Cache Exclusions)
and purge the cache once.

### Do invited people need an existing account?

No. The invite link lets them create one. If they already have an account, they 
are told to log in instead.

### How long is a link valid?

14 days by default, configurable from 1 to 365 days under Settings.

### Can a link be reused?

No. A link is single-use and is consumed when the account is created.

### Can an invited person choose their own role?

No. The role is chosen by an administrator when the invitation is sent, stored on
the server, and never read from the visitor’s request. For security, invitations
can only assign low-privilege roles: no role that can edit or publish content, or
manage the site, is ever offered or applied. The check is capability-based rather
than a fixed list, so custom roles work too – any low-privilege role on your site,
whether registered by a membership or LMS plugin or created by you, appears in the
role selector automatically. To give someone a higher role such as Editor, invite
them and then promote their account under Users once they have registered. The role
is checked again at the moment the account is created.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Bang! Invites – Invite People to Register by Email” is open source software. The
following people have contributed to this plugin.

Contributors

 *   [ Bang! Plugins ](https://profiles.wordpress.org/bangplugins/)

[Translate “Bang! Invites – Invite People to Register by Email” into your language.](https://translate.wordpress.org/projects/wp-plugins/bang-invites)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/bang-invites/), check
out the [SVN repository](https://plugins.svn.wordpress.org/bang-invites/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/bang-invites/) by
[RSS](https://plugins.trac.wordpress.org/log/bang-invites/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.38

 * Naming and structure tidied for the plugin directory. The admin screen’s page
   identifier now carries the plugin’s own prefix, so it cannot collide with another
   plugin’s menu. The old unprefixed registration shortcode has been removed – if
   you were using it, replace it on your registration page with [banginvites_form],
   which has always been the documented shortcode and behaves identically. The plugin’s
   functions are no longer wrapped in existence checks, so a name collision surfaces
   as a clear error rather than quietly disabling part of the plugin.
 * Invitations are now restricted to low-privilege, subscriber-like roles. No role
   that can edit or publish content (Contributor, Author, Editor) or manage the 
   site (options, users, plugins, themes) can be assigned by an invitation link;
   membership and client-area roles built on read-level access are unaffected. The
   role is re-checked at the moment the account is created, so a tampered record
   or a role that later gained capabilities falls back safely to your default role.
   To give someone a higher role, invite them and promote their account under Users
   after they register.
 * Registration is processed before the page renders rather than while the registration
   page is being output. On sites where the theme or a page builder (Elementor’s
   image-loading module is one) sends output early, the post-registration login 
   and redirect could previously fail with “headers already sent” warnings and the
   person would not be logged in or moved on. Handling it earlier removes that class
   of conflict.
 * An accepted invitation can no longer be flipped back to Pending by generating
   a new link for it (previously possible from a stale Tracking tab). Send a fresh
   invitation instead.
 * Every settings screen with more than one section now has an “On this page” index
   down the side that tracks where you are as you scroll and jumps to any section
   when clicked. Fields and help text fill the full width of the panel; below a 
   narrow width the index becomes a row of pills above the content.

#### 1.0.35

 * Stronger cache prevention on invitation links, covering every class of cache:
   no-cache headers for standards-respecting caches and CDNs, the DONOTCACHEPAGE
   constant for WordPress caching plugins, a dedicated header for LiteSpeed servers,
   and a session cookie for platform caches that override the site’s own headers(
   20i’s StackCache among them) – the same layered approach WooCommerce uses to 
   keep checkouts out of caches. A hint under the registration page selector and
   an FAQ entry cover the rare host cache that ignores all of these, where the page
   should be added to the host’s cache exclusion list.

#### 1.0.34

 * Invitation links are never cached. Page caches were able to serve a stale copy
   of the registration page from before an invitation was accepted, so a used single-
   use link could keep showing the registration form to logged-out visitors. Requests
   carrying invite parameters, and the registration page itself, now send no-cache
   headers and set the DONOTCACHEPAGE constant that the major cache plugins respect.
 * Re-inviting an address now clears its old accepted record too (previously only
   pending ones), so Tracking no longer shows a stale Accepted row beside the fresh
   Pending invitation.
 * Deleting a WordPress user now clears their accepted invitation record, so Tracking
   never shows Accepted for an address with no account behind it. Pending invitations
   for that address are left live, so the person can use their link again.

#### 1.0.33

 * Housekeeping for the plugin directory. All admin and front-end CSS and JavaScript
   now goes out through WordPress’s own enqueue system against a registered handle,
   instead of being printed as raw style and script tags. The admin’s Inter font
   is served as four ordinary font files rather than being base64-encoded into the
   stylesheet on every page load, which is both lighter and no longer looks like
   obfuscated code to a scanner. Author details updated to Bang! Plugins.

#### 1.0.32

 * New admin logo: the “bang! invites free” artwork now heads the plugin screens.

#### 1.0.31

 * Settings tab tidy-up. The shortcode now appears exactly once, as a click-to-copy
   chip right under the registration page selector (it used to be mentioned three
   times, with copying possible only at the bottom); the Invite tab’s setup reminder
   uses the same chip. Cards are reordered to follow the setup flow: Registration
   method, then the form’s styling directly beneath it (so in external mode everything
   greyed out sits together), then invitation behaviour, then Pages – which now 
   also holds the invitation-only protection toggle, since that protects the page,
   with the redirect and login destinations. In external mode the page hint now 
   says to place your registration plugin’s form there instead of the shortcode.

#### 1.0.30

 * Works alongside other registration plugins. A new “Registration method” choice
   at the top of Settings lets you say “I’m using another registration plugin”: 
   place that plugin’s form on your registration page instead of the shortcode, 
   and everything else keeps working. Invite links, expiry and tracking are unchanged;
   the moment the other plugin (or an admin) creates the account, the invitation
   is marked accepted, the invited role is applied, and the welcome and notification
   emails send. In this mode the page itself validates every invite link on load–
   a valid pending link shows the page, a used link shows “you have already signed
   up” with a Log in button, and an invalid or expired link shows a notice – so 
   single-use enforcement no longer depends on the built-in form. Acceptance matches
   by the invited email address. Settings that belong to the built-in form (post-
   registration destination, auto-login, form styling) are greyed out, not hidden,
   while this mode is on.

#### 1.0.29

 * Review fixes. Silencing WordPress’s own account emails no longer triggers PHP
   warnings from core on PHP 8 (the filter now returns a properly-shaped value).
   A custom post-registration destination on another domain now actually redirects
   there instead of silently falling back to the dashboard. Tracking no longer offers“
   Copy link” on an expired invitation, since that link is dead – use New link or
   Resend, which issue a fresh one.

#### 1.0.28

 * Clear “already signed up” handling on the registration page. Someone who revisits
   a used invite link now sees “You have already signed up – this invitation has
   been used” with a Log in button pointing at your chosen login page, instead of
   the generic invalid-or-expired notice. The same applies when an account already
   exists for the invited email even though the invite is still pending (e.g. registered
   another way). A logged-in visitor now gets a “Go to your client area” button 
   pointing at your post-registration destination. All of these notices share one
   branded style, tinted from your registration-button colour.

Earlier versions: the complete history back to 1.0.0 ships in this plugin’s changelog.
txt.

## Meta

 *  Version **1.0.38**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [Invite](https://wordpress.org/plugins/tags/invite/)[membership](https://wordpress.org/plugins/tags/membership/)
   [registration](https://wordpress.org/plugins/tags/registration/)[users](https://wordpress.org/plugins/tags/users/)
 *  [Advanced View](https://wordpress.org/plugins/bang-invites/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/bang-invites/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/bang-invites/reviews/)

## Contributors

 *   [ Bang! Plugins ](https://profiles.wordpress.org/bangplugins/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/bang-invites/)