Documentation
Silverback Login docs.
Install, configure, and recover the plugin. If you're stuck or locked out, jump to Recovery — most support cases resolve there.
Installation
Three ways to install.
WordPress plugin directory (recommended, once published)
In your WordPress admin, go to Plugins → Add New. Search for Silverback Login. Click Install Now, then Activate.
Currently in review with the WordPress plugin directory. Until it lands there, use the zip upload method below.
Zip upload (available now)
- Download silverback-login.zip
- In your WordPress admin, go to Plugins → Add New → Upload Plugin.
- Choose the zip you just downloaded, click Install Now.
- Click Activate Plugin.
Manual FTP / SFTP
- Download the zip and unzip it locally. You'll get a folder called
silverback-login/. - Upload that folder to
/wp-content/plugins/on your web server via FTP/SFTP. - In WordPress admin, go to Plugins. You'll see Silverback Login in the list. Click Activate.
Whichever method you use, activation is where the plugin does its setup — see the next section for exactly what happens.
First-time configuration
What happens on activation.
Silverback Login is designed to be correct by default. Activation does three things automatically so you don't have to think about them:
-
Generates a random two-word slug (like
cedar-river) and moves your login page tohttps://yoursite.com/<slug>. The default/wp-login.phpand/wp-admin/URLs are blocked for anonymous visitors. - Shows a one-time green banner across the top of your admin with the new URL. Bookmark this before you navigate away.
- Emails every administrator on the site with the new URL. The email lives in your inbox permanently as a fallback if you lose the bookmark.
Do this next
- Log out and log back in via the new URL. Confirm it works from a browser you use daily.
- Enable email 2FA — Settings → Silverback Login → Login tab → check Require email verification on login.
- Log out, log in again, verify the 6-digit code arrives at your admin email and completes the login.
- Consider the Policy tab settings — forced password rotation and inactive-account lock are off by default. Turn on if you have a compliance or policy reason to; otherwise leave off.
Before enabling 2FA, make sure your site can send email. Try the WordPress password reset form (from a private browser window) and confirm the reset email arrives. If it doesn't, install an SMTP plugin like WP Mail SMTP first — otherwise you may not receive the 2FA code and could be locked out.
Login tab settings
Login settings, one by one.
Custom login URL
The slug is the path after your domain. If your slug is cedar-river and
your domain is yoursite.com, your login URL is
https://yoursite.com/cedar-river.
Letters, numbers, dashes, and underscores only. Leave the field empty to disable
hide-login entirely (default /wp-login.php works again). Click
Regenerate for a fresh random two-word slug. Nothing is saved
until you click Save Changes.
Any time this slug changes, every administrator gets an email with the new URL. You can't accidentally lock your team out.
When someone visits the default URLs
Three options for what an anonymous visitor sees when they hit /wp-login.php or /wp-admin/:
- Show a 404 page (recommended) — clean, uninformative, discourages further probing.
- Redirect to the homepage — a bit friendlier for a legitimate user who typed the old URL. Also gives a bot a valid page to load, which is slightly noisier for your analytics.
- Redirect to a custom URL — for the rare case you want to send them somewhere specific.
Email 2FA
When checked, users are asked for a 6-digit email code after their password is verified. The code expires in 10 minutes and can be attempted up to 5 times.
Apply to roles lets you require 2FA only for specific roles (usually just Administrators). Leave all boxes unchecked to require it for every user regardless of role.
After first successful verification on a device, users can check Trust this device for 30 days on the code-entry form. Doing so drops an HMAC-signed cookie that skips the code prompt on that specific browser for 30 days. Not global to the user — per-device, so a phone and a laptop are trusted independently.
Force password reset
One-click button that requires every user (including you) to save a new password before continuing in the admin. Use it if you suspect a credential leak.
The Also immediately end every active session checkbox is the escalation: check it if you think existing browser cookies might be compromised and want to kick every signed-in user out at the next request. Your current session is preserved so you can finish your own password change.
Policy tab settings
Policy settings, one by one.
Forced password rotation
Choose an interval: Off, 3, 6, 9, or 12 months. Default is Off.
When on, any user whose most recent password change is older than the interval is held on the profile screen at their next admin page load and can't leave until they save a new password. Modern security guidance (NIST 800-63B) actually prefers reuse prevention and breach screening — both of which are always on regardless — over forced rotation. If you don't have a compliance rule requiring rotation, leave this Off.
Inactive account lock
A daily background job scans users. Any non-administrator account whose last login is older than the threshold you set (1–60 months) gets locked. Locked users see a generic error on login and can't complete authentication until an administrator unlocks them.
Every administrator receives one batch summary email per scan run with the list of affected users and unlock instructions. Administrators themselves are never auto-locked.
To unlock a user: via WP-CLI, run
wp user meta delete <user_id> _silverback_locked. Or remove
the _silverback_locked user meta row directly via phpMyAdmin.
Recovery paths
If you lose the URL or get locked out.
Try these in order. Most cases resolve in the first two.
- Check your inbox. The login URL is emailed to every administrator on activation and any time it changes. Search for "Login URL has changed" or "Silverback Login activated". This is the single most common answer.
- Use your host's WordPress admin bypass. Plesk (WordPress Toolkit), WP Engine, Kinsta, Cloudways, SpinupWP, and most managed WordPress hosts have a "Log in to WordPress" button in their control panel that bypasses the URL entirely. Once you're in, note your slug from Settings → Silverback Login.
- WP-CLI, if you have SSH access. Run
wp option get silverback_options --format=jsonand read thelogin_slugfield. That's your URL suffix. - Direct database lookup. Open phpMyAdmin, go to the
wp_optionstable, filter forsilverback_options. The value is a serialized PHP array containing your slug. - Emergency disable constant. See
Escape-hatch constants below. Requires FTP/SSH
access to your
wp-config.php. - Last resort: rename the plugin folder. Via FTP, rename
/wp-content/plugins/silverback-login/to something likesilverback-login.disabled/. WordPress will treat the plugin as missing and disable it, restoring default/wp-login.phpaccess. Your settings persist for when you rename it back.
Escape-hatch constants
Two lines you can add to wp-config.php.
Both require FTP or SSH access to your server. They live at the top of
wp-config.php, just below the <?php line, alongside
the other define() statements.
Disable hide-login entirely
define( 'SILVERBACK_DISABLE_HIDE_LOGIN', true );
When this constant is defined and truthy, the plugin's URL rewriting shuts off
immediately. Default /wp-login.php and /wp-admin/ work
again. Your custom slug still resolves too (both paths work), so you can log in
via the default URL, note your slug from settings, remove the constant, and
continue.
Disable 2FA
define( 'SILVERBACK_DISABLE_2FA', true ); When this constant is defined and truthy, the plugin's 2FA challenge is skipped entirely. Passwords still authenticate; the 6-digit code prompt is bypassed. Use this if outgoing email breaks on the site and you can't receive the code.
Remove both constants once you're back in and things are working normally. Leaving them defined defeats the security controls they gate.
Updates
Keeping the plugin current.
Once Silverback Login is in the WordPress plugin directory, updates work like any other plugin — WordPress will notify you in the admin, and one-click Update handles the swap. Your settings, password history, trusted devices, and all internal state persist through the update.
If you installed via zip upload, you can update by deactivating the current version,
deleting it via the Plugins screen, downloading the new zip, and installing that. If
you're on version 0.1.10 or later, deleting the plugin fires
uninstall.php which wipes the database — so update by replacing
files via FTP instead if you want to preserve your settings.
Uninstall behavior
What happens when you delete the plugin.
Deleting the plugin (Plugins → Delete after Deactivate) runs uninstall.php,
which removes every piece of state the plugin created:
- The
silverback_optionssettings row. - The
silverback_force_password_change_afteroption, if you triggered a force-reset. - All
_silverback_*user meta records across every user — password history, trusted devices, last-login timestamps, locked flags. - The
silverback_scan_inactivecron event. - Any in-flight 2FA challenge transients.
This is deliberate — security tools shouldn't leave hashed passwords or device tokens sitting in your database once you've said you want the plugin gone. Deactivation alone doesn't trigger the wipe; you have to explicitly delete for state to be removed.
FAQ
Common questions.
Will activating this plugin lock me out?
No. On activation the plugin generates a random slug, shows it to you in a green banner, and emails every administrator with the URL. Email 2FA is off by default — you turn it on once you've confirmed outgoing mail works. Forced rotation and inactive-lock are also off by default.
Does the plugin rewrite WordPress core files?
No. It intercepts requests via standard WordPress hooks. Deactivation cleanly restores default login behavior and stops the inactive-scan cron.
How does the breach-password check work?
It uses the Have I Been Pwned password API via k-anonymity. Your server SHA-1s the password locally, sends only the first 5 characters of that hash to HIBP, and receives back a list of hash suffixes to compare against. The full password — and even its full hash — never leaves your server.
What if HIBP is unreachable?
The check fails open — the password is allowed through. We'd rather let a weak password slip than block legitimate password resets when an external API is down. Reuse prevention is local so it always runs regardless.
Does the plugin work on multisite?
Single-site is fully supported. Multisite is not officially tested in this release and is on the roadmap.
Where do I report a bug or request a feature?
Use the contact form. Include your WordPress version, PHP version, and a description of what you were doing when the issue happened. If it's a security issue, please describe it in the contact form without publicly disclosing details.
Ready to install
Download Silverback Login.
Free. No account. No license key. No paid tier.