RedWaterHST
← WHMCS modules
Public beta$49 a year

AccountGuard

Email codes, passkeys and sign-in alerts for every client and admin in your WHMCS.

AccountGuard screens: a new sign-in alert email with a This wasn't me button, the code step after the password with a link to use a passkey instead, and the Sign in faster next time offer to add a passkey.

The problem it solves

Most hosting accounts that get taken over are not hacked. Someone signs in with a password that leaked from another site, and in a WHMCS client area that password opens domains, DNS, services, invoices and support tickets.

WHMCS has authenticator app, Duo and YubiKey support, but each person has to set it up, so most clients never do. There are no passkeys and no alert when someone signs in from a new browser. AccountGuard puts a second step in front of every sign-in without asking anyone to enroll, and then moves people toward passkeys.

The longer version, with the research behind it, is in our article on WHMCS sign-in security.

How it works

  1. 1

    A code after the password

    Every client user and admin without another two-factor method gets a code by email. It is checked as soon as it is pasted or typed, and iPhones and Macs can fill it in from the Mail app.

    The sign-in code email: a six-digit code, when and from which IP address it was requested, that it expires in 10 minutes and works once, a tip to add a passkey, and a warning for anyone who did not try to sign in.
  2. 2

    A passkey in one tap

    Right after an email-code sign-in, on a device that can hold a passkey, the client is offered one. The code they just entered confirms it is them, so adding it is a single tap.

    A box reading Sign in faster next time: use your fingerprint, face or screen lock instead of waiting for an email, with Add a passkey and Not now buttons.
  3. 3

    Next time, the passkey

    The browser suggests the passkey in the login page's email field. If you turn it on, client users can sign in with the passkey alone, with no password. Admins always use their password.

    A client login form with email and password fields and, under an or divider, a Sign in with a passkey button.
  4. 4

    The owner is told, and can undo it

    Every sign-in from a new browser or network emails the owner. "This wasn't me" sets a new random password and undoes sign-in methods, passkeys and recovery codes added since that sign-in.

    The New sign-in to your account email from a fictional Example Hosting, listing when, the IP address, the browser and the sign-in method, with a red This wasn't me button.

What you get

For your clients

  • A code by email after the password, switched on for every account with no other method
  • Passkeys: Windows Hello, Face ID, Touch ID, Android, Google Password Manager, iCloud Keychain, 1Password and security keys
  • Recovery codes for when email or a device is not available
  • Existing authenticator app, Duo and YubiKey setups are never changed

For your team

  • Email codes for admins too, and a passkey within 7 days for every admin who manages AccountGuard
  • Team alerts when someone reports a sign-in, and on unusual sign-ins
  • "Someone knows your password" alerts when the password was right but the code failed
  • Sign-in history for clients and staff, and an audit log with filters

Built for WHMCS

  • Security emails are WHMCS email templates in your own email design
  • A warning in WHMCS when security emails start failing, and a connection check that says why
  • Works with any client-area theme
  • Optional email verification before an order is set up
  • Removal in one step puts everyone back on password sign-in

Screens

From the current build. Admin screens show a test install with demonstration data; on your WHMCS they carry your own clients, theme and email design.

Price and requirements

$49 a year

Per WHMCS installation, billed yearly.

  • WHMCS 8.6 or later on PHP 8.1 or later, or WHMCS 9 on PHP 8.2 or later
  • HTTPS, with the WHMCS System URL set to the address people use
  • Working outgoing email (AccountGuard tests it before switching anything on)
  • ionCube Loader 13 or newer

What it does not do yet

  • No SMS codes
  • No IP allowlists or country restrictions for the admin area
  • No "remember this device" option yet

It is in public beta: running on live WHMCS installations, with version 1.0 to follow once the beta feedback is in. If something behaves differently on your WHMCS version or theme, tell us. Ideas for what it should do next go on our feedback board, where other hosts can vote on them.

Questions hosts ask

Does it replace authenticator apps, Duo or YubiKey?

No. Accounts that already use one of WHMCS's own two-factor methods keep it. AccountGuard covers the accounts that have no second step at all, which is most of them.

What if our email stops working?

Nothing switches on until you have entered the code from a test email, so a mail setup that does not deliver cannot lock anyone out. People with a passkey or recovery codes can still sign in without email, and removing AccountGuard puts everyone back on password sign-in in one step.

Are email codes secure enough?

They are the weakest of the factors AccountGuard offers. They stop a leaked password, but not someone who already controls the mailbox or a phishing page that relays the code. Passkeys are the phishing-resistant step, which is why AccountGuard offers one after every email-code sign-in. Once people have two passkeys each, you can turn off email codes as a backup.

Can clients sign in without a password?

Yes, if you turn it on. Client users whose two-factor method is AccountGuard can sign in with a passkey alone. Admins always use their password.

What does "This wasn't me" do?

It sets a new random password so the one that was used stops working, undoes sign-in methods, passkeys and recovery codes added since the reported sign-in, and emails the owner how to set a new password. Your team can be alerted too.

What happens if the license lapses?

Protection keeps running. Settings become read-only and passwordless sign-in switches off until the license is renewed. If our license server cannot be reached, there are 14 days of grace.

What does it send to Red Water?

Only the weekly license check: the license key, your WHMCS address, the server's address and the WHMCS folder. Nothing about your clients.

Share this module