WPSmarto

Smarto Login SecurityDocumentation

Everything you need to secure every sign-in.

Setup guides, settings explained, and fixes for the most common problems. For the free plugin and the Pro add-on. Written for Smarto Login Security 1.0.0 and Pro 1.0.0. Updated 2026-11-13.

Back to Smarto Login Security

22 sections in Smarto Login Security.

Start here

What Smarto Login Security does

Every control for how people sign in, in one place. Each rule is checked on the server when credentials are checked.

Smarto Login Security decides where people sign in, how they prove who they are, and what happens to their sessions afterwards. A hidden URL or a missing button is never the only protection. The free plugin is complete on its own, with no account, license or time limit.

  • Login URL and redirects: your own login address, a hidden wp-login.php and wp-admin, and the page people land on after login and logout.
  • Two-factor authentication: authenticator apps, email codes and backup codes, required for the roles you choose.
  • Brute-force protection: failed-login limits per IP and per account, rate limits for password reset and registration, and username protection.
  • CAPTCHA: Google reCAPTCHA v2 or v3, or hCaptcha, on the forms you pick.
  • IP rules: blocklist and allowlist with IPv4, IPv6 and CIDR ranges.
  • Sessions and accounts: see who is signed in, end sessions, suspend accounts, read the Login History and get email alerts.
  • WooCommerce: My Account login, registration and lost-password forms get the same protection. Checkout is never changed.

Good to know:Requires WordPress 6.5 or newer and PHP 8.0 or newer. It is not a firewall or malware scanner.

Start here

Install and first setup

Activation switches on no restriction, so nobody gets locked out. You turn on each protection yourself.

  1. Install Smarto Login Security from Plugins > Add New Plugin and activate it.
  2. Open Login Security > Login URLs and choose a custom login address. Open it in a private window to test it before you sign out.
  3. Open Login Security > Authentication and choose which roles must use two-factor authentication. Each user sets up their own methods on their profile page.
  4. Review Login Protection, CAPTCHA and IP Rules.
  5. Open Diagnostics to check your setup.

The Login Security overview shows what is protected, users in required roles who have not set up 2FA yet, and recent security events.

Careful:Behind Cloudflare or another proxy? Set the IP source under Settings first (see "Cloudflare and proxies"). Otherwise every visitor shares the proxy's IP and limits hit everyone at once.

Login

Custom login URL

Move the login page to your own address and hide wp-login.php and wp-admin from visitors.

  1. Open Login Security > Login URLs and turn on Use a custom login URL.
  2. Type a Login address: 3 to 60 lowercase letters, numbers and hyphens. Avoid obvious words like "login" or "admin".
  3. Optional: choose where to send visitors who open wp-login.php or wp-admin. Leave it empty to show your theme's 404 page, which reveals nothing.
  4. Click Save changes, then open the new address in a private window and sign in to test it.
  • Email the new address to the site admin when it changes is on by default, so the address is never lost.
  • Record visits to the hidden wp-login.php and wp-admin adds them to the Login History as "Blocked visit to hidden login", with the username when someone tries to sign in there. Guests opening /login, /admin or /dashboard are recorded too. Repeat visits from the same IP to the same place within an hour add to the entry's visit count instead of a new row. Signed-in users are never blocked or recorded.
  • Password reset links, logging out and other WordPress actions keep working on the new address.
  • Staff can sign in only on the custom login URL (on by default once the custom URL is on): anyone who can use the dashboard is refused on every other login form, such as WooCommerce My Account or another plugin's login page, even forms the plugin has never seen. They see the usual "wrong username or password" message, so a stolen password reveals nothing, and you get an email alert. Customers and members are not affected, and apps that use application passwords keep working.
  • Where people sign in lists the places people signed in from in the last 30 days, found automatically from the Login History, and whether staff are allowed there. "No login form" means another plugin or tool signed someone in directly, for example an auto-login link; those sign-ins are not limited by this setting.
  • Need staff on one front-end form? With Pro, add it under Integrations > Other login forms and choose the roles allowed there.

The overview lists sign-in attempts on your custom address from IPs that never signed in successfully. If you see them, someone knows the address: change it and consider blocking the IPs.

Good to know:The custom login URL needs pretty permalinks (Settings > Permalinks, anything but Plain). All other features work with any permalink setting.

Login

Login and logout redirects

Choose where people land after they sign in or out.

  • Default page after login and Default page after logout, in Login Security > Redirects. A What happens now card at the top shows where people end up with your saved settings.
  • With WooCommerce: Page after signing in on My Account. Empty means customers stay on My Account.
  • Return users to the page they were trying to reach sends people back to the page that asked them to sign in.
  • Redirects are limited to your own site, so they cannot send people to another domain.
  • People without dashboard access, such as WooCommerce customers, are never sent to the dashboard.

Redirects for a single role or user are part of Smarto Login Security Pro.

Accounts

Two-factor authentication

A second step after the password. No session is created until it is passed.

MethodHow it works
Authenticator app (TOTP)Google Authenticator, Microsoft Authenticator, 1Password and similar. Set up with a QR code and confirmed with a code before it turns on.
Email codesA short code sent to the account's email address. Lifetime, wrong tries and resends are limited.
Backup codesSingle-use codes for when the phone is lost. Each code works once.
  1. Open Login Security > Authentication and keep the methods you want to offer switched on.
  2. In Require 2FA for these roles, pick the roles that must use it, for example Administrator and Shop manager.
  3. Choose when someone in these roles has not set up 2FA yet: remind them on the dashboard, send them an email code at every sign-in, or let them in once and require setup before they can use the dashboard.
  4. Click Save changes. Each user sets up their own methods under Users > Profile.

Careful:"Remind" never blocks anyone, but until a person sets up 2FA their account is protected by the password only. "Email codes" protect them from the first sign-in.

Application passwords are separate credentials and do not ask for 2FA (WordPress design). Suspensions and lockouts still apply to them, and you can limit them to administrators or turn them off under Integrations.

Protection

Failed-login limits and rate limits

Slow down password guessing on every login form, including WooCommerce and XML-RPC.

SettingDefault
Failures per IP5 within 15 minutes, then a 20 minute lockout
Double the lockout each time it repeatsOn, up to 1440 minutes (one day)
Tell people how many attempts they have leftOn, for example "2 attempts left before sign-in is locked for 20 minutes."
Failures per account20 within 60 minutes, then a 30 minute account lockout
Password reset requests5 per hour per IP
Registrations5 per hour per IP

All settings are in Login Security > Login Protection. The limits are shared by every login form, so attackers cannot switch forms to get more tries. A locked visitor sees the lockout as soon as they open the login page. IPv6 addresses are counted per network (/64), because one connection can switch between many addresses. Allowlisted IPs can skip lockouts, rate limits and CAPTCHA (an option under IP Rules).

Protection

Username protection

Make it harder to find out which usernames exist on your site.

  • One error message for wrong usernames and wrong passwords.
  • The same reply to password reset requests for unknown accounts.
  • Blocked ?author=N lookups.
  • The REST API user list hidden from visitors.
  • Optional: remove author names from oEmbed data, remove the users sitemap, and hide author archives for chosen roles.

Find these under Login Security > Login Protection > Username protection.

Protection

CAPTCHA

Stop bots on your login, registration and password forms. Every check is verified on your server.

ProviderWhat visitors see
Cloudflare Turnstile (recommended)Free and private. Most visitors pass without a puzzle. Your site does not need to use Cloudflare.
reCAPTCHA v3Nothing. Google scores each visit; you set the minimum score.
reCAPTCHA v2 invisibleNothing, unless Google finds the visit suspicious and shows a puzzle.
reCAPTCHA v2 checkboxThe "I'm not a robot" box.
hCaptcha checkbox or invisibleA privacy-focused alternative to Google, as a box or invisible.
  1. Open Login Security > CAPTCHA and click a provider card.
  2. Click Get keys, create keys for your domain, and paste the Site key and Secret key. Each provider keeps its own keys, so you can switch back without pasting them again. Saved keys show only their first and last four characters; paste a new one to replace it, or clear the field and save to remove it.
  3. Click Test these keys. A window opens with the check: complete it (or click Check keys for the invisible types). It runs a real check with the keys in the form, saved or not, and says whether they work on your domain or what is wrong.
  4. Choose the look: theme (light, dark or matching the page), size, and for reCAPTCHA v3 and v2 invisible where the badge sits or whether it is hidden. A hidden badge adds Google's required notice under the form.
  5. Tick the forms to protect: WordPress login, registration, lost password and new password, and the same four WooCommerce forms.
  6. Click Save changes.
  • When to show it on login forms: every time, or only after a number of failed sign-ins from the same IP address within an hour. Real people usually never see it; attackers do.
  • Show the CAPTCHA in the site language, or let it follow the visitor's browser.
  • Load reCAPTCHA from recaptcha.net for visitors in countries where google.com is blocked.
  • If the provider cannot be reached: block the form (safer) or allow it and log the error.
  • Allowlisted IP addresses skip the CAPTCHA.

Good to know:CAPTCHA is the only feature that contacts an outside service, and only after you turn it on. Mention it in your privacy policy. Locked out? Add define( 'WPSMARTO_LS_DISABLE_CAPTCHA', true ); to wp-config.php.

Protection

IP rules

Block addresses that attack you, or allow trusted ones.

  • Blocklist: these IPs and ranges cannot sign in.
  • Allowlist: these IPs can optionally skip lockouts, rate limits and CAPTCHA.
  • Single addresses, IPv6 and CIDR ranges such as 203.0.113.0/24 all work. Rules can expire and have a note.
  • The overview lists IPs that tried your custom login address, with a Block IP link next to each.

Careful:Never block your own IP. If it happens, add define( 'WPSMARTO_LS_DISABLE_IP_RULES', true ); to wp-config.php, sign in and remove the rule.

Protection

Cloudflare and proxies

Make sure the plugin sees each visitor's real IP address.

  1. Open Login Security > Settings. The How your IP address is detected card shows what the server sees.
  2. If "Used by this plugin" shows your proxy or CDN instead of your own IP, choose the matching Client IP source, for example CF-Connecting-IP for Cloudflare.
  3. List the proxy's IP ranges under Trusted proxies and save.

Forwarded headers are trusted only from the proxies you list, so visitors cannot fake their IP address. The Login History country is worked out from the same IP, so a wrong IP source also means a wrong country.

Accounts

Active sessions

See who is signed in and end any session at once.

  • Login Security > Active Sessions lists who is signed in, last activity, sign-in time, IP address with country, browser and sign-in method.
  • Every browser or device is its own session. A session stays Signed in until the person logs out or it expires (after 2 days, or 14 with "Remember Me"), even when the browser is closed. So one person can have several sessions, and an old one can show last activity days ago.
  • Your own session is marked This browser and cannot be ended from the list. If you have other sessions still signed in, for example from an earlier sign-in that never logged out, End my other sessions ends them all. Sessions with the same browser and IP as yours are marked as a likely earlier sign-in.
  • End one session or all of a user's sessions. The session is revoked in WordPress, so the cookie stops working right away.
  • Another plugin or tool as the method means the sign-in did not use the WordPress login form, for example a one-click login from your hosting.
  • Choose which roles are tracked under Settings > Session monitoring, and how long ended sessions are kept.
  • Block sessions created outside the protected login flow (under Settings) destroys sessions that code created without WordPress authentication, for users who need 2FA.

Accounts

Suspend accounts

Lock an account without deleting it.

  • Suspend from Users or Login Security > Suspended Users, for a set time or until you restore it, with an internal reason.
  • Suspended users are signed out everywhere and refused by every login form, XML-RPC and application passwords.
  • Choose whether suspended users are told their account is suspended, and the message they see.

Accounts

Login History

Sign-ins, failed logins, lockouts and blocked visits.

  • Filter by event group or a single event, dates, user or IP address.
  • Each event shows the time, user, IP address, country, the exact page (Where) and details such as the sign-in method or the reason it failed.
  • Changes made in the dashboard (settings, IP rules, suspensions) are on the Admin Activity page instead.
  • Blocked visit to hidden login means someone opened the hidden wp-login.php or wp-admin and was turned away. "Sign-in attempt, blocked" means they also tried a username there.
  • Entries are kept for 30 days by default, then removed automatically. A line at the top of the page shows whether it is recording.

Country is looked up in an IP to country database included with the plugin, so no IP address leaves your site. It works on every host, with or without a CDN. Countries are approximate (VPNs and mobile networks can show another country), and local or private addresses show a dash. Country data: IP Geolocation by DB-IP.

Good to know:The Login History is a security log, not a full audit log of everything that happens on the site.

Accounts

Admin Activity

Security changes made by people who manage the site.

  • Login Security > Admin Activity lists settings changes, IP rules added or removed, suspensions and restores, ended sessions, two-factor changes and temporary access.
  • Done by shows who made the change; Affected user shows the account it changed, for example the suspended user.
  • Settings changes name the sections that changed, for example "Custom login URL".
  • Filter by type of change, dates, user or IP address. Entries are kept for 30 days by default.

Good to know:Admin Activity records changes to Login Security only. Changes to posts, plugins, users or other settings are not recorded.

Accounts

Log settings and retention

Choose what is recorded and for how long. Logs cannot be deleted by hand.

  1. Open Login Security > Settings and find Logs and data retention.
  2. Record the Login History and Record Admin Activity are on by default. Untick one to stop recording it.
  3. Set Keep the Login History for (days) and Keep Admin Activity for (days). Both are 30 days by default. Older entries are removed automatically.
  4. Click Save changes.

Careful:There is no button to delete log entries, so someone who gets into an admin account cannot cover their tracks. Settings changes are always recorded, so switching a log off shows in Admin Activity.

With the Login History off, the Overview counts and the alerts for a new IP address or a leaked login URL stop working, because they need past sign-ins.

Accounts

Email alerts

Hear about the important things, without a flood during an attack.

  • Lockouts after repeated failed logins.
  • Every login by a privileged user, or only logins from a new IP address.
  • Sign-in attempts on your custom login URL from an IP that never signed in.
  • Suspicious activity, suspensions and restores, sessions ended by an administrator.
  • Security settings changes, and CAPTCHA or email provider failures.

Set the recipients and events in Login Security > Notifications. Similar emails are grouped, with at least 60 minutes between them by default. Choose which roles count as privileged under Settings.

Login

WooCommerce

Customers get the same protection as staff, without changes to checkout.

  • The My Account login, registration and lost-password forms share the failed-login limits, rate limits and CAPTCHA.
  • Customers are sent to My Account after login, not the dashboard.
  • Checkout is never modified.
  • Turn it on or off under Login Security > Integrations.

Login

XML-RPC and application passwords

Apps that sign in without a login form. Turn them off or limit them if nothing on your site needs them.

Neither can show a CAPTCHA or ask for a 2FA code, because there is no form. Lockouts, IP rules and suspensions always apply to both. Choose under Login Security > Integrations.

  • XML-RPC: On (WordPress default, accounts that need 2FA are refused), Block sign-ins (pingbacks from other sites still arrive) or Off completely (every request is refused). Some mobile apps, desktop editors and site connection services still use XML-RPC, so check before you turn it off.
  • Application passwords: Everyone (WordPress default), Administrators only or Off. Saved application passwords are kept and work again if you allow them later.
  • The Integrations page shows Protected once XML-RPC sign-ins are blocked and application passwords are limited, and Limited while either is left open.

Help

Locked out or forgot the login URL

Add one line to wp-config.php, sign in, fix the setting, then remove the line.

Line in wp-config.phpWhat it does
define( 'WPSMARTO_LS_DISABLE_CUSTOM_LOGIN', true );Restores wp-login.php.
define( 'WPSMARTO_LS_DISABLE_IP_RULES', true );Turns off IP rules.
define( 'WPSMARTO_LS_DISABLE_CAPTCHA', true );Turns off CAPTCHA.
define( 'WPSMARTO_LS_DISABLE_2FA', true );Turns off 2FA, for example if email is down.
define( 'WPSMARTO_LS_DISABLE_LOCKOUTS', true );Turns off failed-login lockouts.
define( 'WPSMARTO_LS_SAFE_MODE', true );Does all of the above.

These switches only relax extra restrictions. A normal WordPress password is still required. The custom login address is also emailed to the site administrator whenever it changes.

With WP-CLI:

wp smarto-ls login-url reset
wp smarto-ls ip clear
wp smarto-ls lockouts clear
wp smarto-ls 2fa reset <user>

Help

Fix common problems

Most problems come from proxies, caching or another login plugin.

ProblemWhat to do
Everyone gets locked out at onceThe plugin sees your proxy's IP. Set the Client IP source and Trusted proxies under Settings.
The custom login URL shows a 404Turn on pretty permalinks, then save Settings > Permalinks once. Clear any page cache for that address.
A user lost their phoneThey sign in with a backup code. An administrator can also reset their 2FA methods on their profile page after confirming who they are.
Email codes do not arriveCheck that the site can send email (an SMTP plugin helps). Use WPSMARTO_LS_DISABLE_2FA to get in meanwhile.
Another plugin's login form skips 2FAForms that create sessions without WordPress authentication are only partly covered. Diagnostics shows what is covered.
The Country column shows a dash or your CDN's countryA dash means a local or private address. If every event shows the same country, the plugin sees your proxy's IP: fix the Client IP source under Settings.

Good to know:Login Security > Diagnostics tests your login address and reports conflicts and what is and is not covered.

Help

Privacy and data

Only what is needed to protect accounts, kept for as long as you choose.

  • Stored: usernames tried, IP addresses and their approximate country (looked up on your site, never online), browser user agents (optional), times, sign-in methods and results, and session activity for tracked roles.
  • Never logged: passwords, verification codes, sign-in tokens and secrets. Codes and tokens are stored only as keyed hashes; authenticator secrets and provider keys are encrypted.
  • Logs are kept for 30 days by default and old entries are deleted automatically. A suggested privacy-policy text is added to Settings > Privacy, and the data works with WordPress personal data export and erasure.
  • No tracking or analytics, and nothing is sent to WP Smarto.
  • Deleting the plugin removes its data only if Delete all plugin data when the plugin is deleted is on under Settings. Otherwise settings, history and 2FA setups are kept for a reinstall.

Help

Frequently asked questions

Quick answers to what people ask most.

Is Smarto Login Security free?

Yes. Every feature of the free plugin works fully with no account, license or limit. Pro is a separate plugin with team and agency features.

Will activating it lock me out?

No. Activation switches on no restriction. You turn on each protection yourself, and recovery switches in wp-config.php always get you back in.

I forgot my custom login URL. What now?

Add define( 'WPSMARTO_LS_DISABLE_CUSTOM_LOGIN', true ); to wp-config.php, sign in on wp-login.php, check the address under Login Security > Login URLs, then remove the line. The address is also emailed to the site admin when it changes.

Does it work with WooCommerce?

Yes. My Account login, registration and lost-password forms are protected, customers go to My Account after login, and checkout is not changed.

Does it work behind Cloudflare?

Yes. Under Settings, choose CF-Connecting-IP as the Client IP source and list Cloudflare's IP ranges as trusted proxies.

Does hiding the login URL make my site secure?

It stops most automated attacks, but it does not replace strong passwords and two-factor authentication. Use all three.

Does it replace a firewall or malware scanner?

No. It protects sign-ins and sessions. It is not a firewall or malware scanner.

Do application passwords ask for 2FA?

No, that is how WordPress designed them. Suspensions and lockouts still apply to them, and you can limit them to administrators or turn them off under Login Security > Integrations.

Does it send data anywhere?

Only to Google reCAPTCHA or hCaptcha, and only if you turn CAPTCHA on. Nothing is sent to WP Smarto.

Still stuck?

Ask our assistant, it knows these docs. If it cannot solve it, it passes your question to the team, who reply by email.

Contact the team