The Login Notifications plugin emails the account holder whenever a sign-in comes from a new browser, a new location or an impossible distance away. A one-click "this was not me" link signs the account out everywhere and starts a password reset.
Free - View Pricing
What Login Notifications gives you
Runs on Blesta's cron with no manual upkeep, so everything stays up to date on its own.
Gives both your staff and your clients a purpose-built interface in their own area of Blesta.
Configure it independently for each brand on a multi-company install, so every company runs with its own settings.
Every staff and client label ships in editable language files, ready to translate into any language or reword to match your brand.
A dashboard card counts the last week's sign-ins, new devices, suspicious sign-ins and reports, and lists the ones that need a look.
Each staff action it adds is a separate permission you grant per staff group, so each team gets exactly the access it needs and nothing more.
Send yourself a sample of any alert, the digest or the staff alert from the settings page to check wording, links and delivery before clients see them.
Let clients opt out of the alerts or choose one daily summary instead of an email per sign-in. Suspicious sign-ins are still sent right away unless you decide otherwise.
The emails it sends install as standard Blesta templates in every language you have enabled, so you can reword them, restyle the HTML and choose which details they carry.
Clients see their recent sign-ins with device, place and IP address, report any they do not recognize, manage their trusted devices and download their history as a CSV file.
If a signed-in session suddenly starts being used from a different browser or operating system, the account holder is told straight away, which is what a stolen session cookie looks like.
Choose whether a new country, a new region or a new city counts as a new place. A sign-in from somewhere the account has never been before is announced, and a new country is called out as such.
A sign-in that is too far from the previous one for the time between them is flagged as suspicious. You set the speed, the minimum distance and, where only the country is known, the time window.
On a client's profile staff see the latest sign-ins and the number of trusted devices, and can sign the client out everywhere, forget their devices or erase their sign-in data with a confirmation.
Send a copy of suspicious sign-ins to the addresses you choose. Pick which reasons raise an alert: impossible travel, a changed browser, a new country or a sign-in reported as not the account holder.
Clients, contacts and staff get an email when their account is used from a browser or device that has not signed in before, with the time, device, place and IP address, so a stolen password does not go unnoticed.
A browser that signs in becomes a trusted device for the number of days you choose, renewed on every sign-in. Clients can see their trusted devices and forget any of them, and a device whose trust has lapsed is announced again.
Use your own MaxMind GeoLite2 or GeoIP2 file, or the location headers Cloudflare already adds to your traffic. Nothing is sent to an outside service and nothing is bundled, and without either source the plugin still detects new devices.
Every alert carries a secure link. One button signs the account out of every session, forgets every trusted device and sends the person to reset their password. A mail scanner opening the link changes nothing, and the link works once and expires.
A filterable history of every sign-in across clients and staff, with the reason it was flagged and what happened to the notification, sortable, paged and exportable to CSV, with sign out, forget devices and erase data for any user from their history.
Switch on to recognize a browser that has cleared its cookies by its browser, operating system, public network and country, so cookie cleaners do not bury your clients in alerts. It is off by default because on a shared network it is weaker than the cookie.
Store the full IP address, only its network, or only a keyed hash. Keep the browser as a short description, the full user agent or only a hash. Mask the IP in emails and on the client page, and delete old data automatically after the number of days you set.
A quiet period, a daily cap per user and an hourly cap for the whole company keep alerts from turning into a flood without ever holding back a suspicious sign-in. Staff alerts are capped too, and the first sign-in on record only sets a baseline, so installing the plugin does not email every client.

Know the moment someone signs in to an account from a device or place you have not seen before, and let the owner shut it down in one click.
Passwords leak, and the first sign that an account has been taken over is usually a sign-in nobody noticed. Login Notifications watches every sign-in to your Blesta installation, for clients, for contacts who have their own login and for your staff, and emails the account holder when something is new: a browser that has never signed in before, a place the account has never been used from, a trip that is too far to be real, or a signed-in session that suddenly turns up in a different browser.
Every alert carries a secure "this was not me" link. One button signs the account out of every session, forgets every trusted device and sends the person to reset their password, so a stolen password stops being useful within minutes instead of days. Clients get a Sign-in Activity page in their area with their recent sign-ins, trusted devices and notification preferences. Your staff get a company-wide sign-in history, a widget on every client profile, a card on the dashboard and optional alerts for the sign-ins that matter most.
It watches and tells. It does not stop a sign-in from happening, and it does not ask for a verification code: Blesta's own two-factor authentication does that, and this plugin sits alongside it.
Location is optional and not bundled. Without a location source the plugin still detects new devices and a changed browser. For new places and impossible travel, either download a free GeoLite2 database from MaxMind with your own account and put its path in the settings, or, if your site runs behind Cloudflare, tick the option that trusts Cloudflare's location headers.
The first sign-in is a baseline. When you install the plugin, each account's first recorded sign-in sends nothing; it only teaches the plugin what is normal for that person. Alerts start from their second sign-in, so an account that is first used by someone else after the install is not reported until its owner signs in; a setting lets you email the first sign-in as well.
Behind a proxy, tell Blesta. Tick Blesta's own "behind a proxy or load balancer" setting if your
proxy replaces X-Forwarded-For; otherwise every visitor looks like the proxy.
Mobile networks and VPNs cause some noise. A phone that changes network, a person who switches VPN or someone who clears their cookies can look like a new device or a long trip. The quiet period, the daily cap, the daily digest option and the trusted-device window exist to keep that manageable.
Some sign-ins bypass Blesta's login event. The plugin also checks each signed-in session on its next request, so a sign-in made through a plugin that does not announce itself is still recorded, usually on the following page load.
Ending sessions is not instant against a live attacker. A request already running in a hijacked session can write it back when it finishes. The "this was not me" flow therefore ends by sending the person to reset their password.
The "this was not me" page must be reachable. It is a public page. If you protect your site with a
gate such as Cloudflare Access, allow the path /plugin/login_notifications/client_report/ through it,
or the link in an email will not open for your clients.
Privacy. The plugin stores IP addresses, browser descriptions and places for as long as you set (180 days by default). It sets one security cookie on the browsers that sign in. Describe both in your privacy policy and cookie notice, and use the privacy settings to store less if you need to.
If you encounter any issues or have suggestions for improving the plugin, please get in touch with us. We are committed to providing robust updates and welcome customer feedback.
Installing and updating extensions can now be done automatically through the Blesta Club Subscription Manager - this is the recommended way going forward.

Upload the extension folder into your Blesta installation so it lands under your Blesta directory at:
plugins/login_notifications/
For example, on a typical install: /var/www/html/blesta/plugins/login_notifications/
Blesta registers a plugin's permissions switched off, and a plugin is not allowed to grant its own, so right after installing only the staff group of the account that ran the install can use it. For every other staff group:
Clients need no permission: they get a Sign-in Activity link in the client area.
A contact who has their own login sees their own sign-ins, but only once Blesta is told the contact may use the plugin. New contacts start without it, so they do not see the Sign-in Activity link at all. For each contact that should have it:
This is a Blesta contact permission, so it is the one setting that decides it. Contacts without it are never emailed less: they still get sign-in alerts, they just cannot open the page.
Open Login Notifications > Login Notification Settings. The defaults work as they are: alerts for new devices and new places, a 90 day trusted-device window, a daily cap of 6 ordinary emails per user and 180 days of history. Recognizing a browser without its cookie is off by default. The things worth deciding on day one:
X-Forwarded-For header; otherwise
Blesta sees the proxy's address for every visitor and the plugin's networks and places mean nothing.
See "Behind Cloudflare or another proxy" in the usage guide..mmdb
file that is on your server (see the usage guide), or, if every visitor reaches your server through
Cloudflare, tick Trust Cloudflare location headers. Without one of these only new devices and a
changed browser are detected.The alert emails are standard Blesta email templates under Settings > Company > Emails; reword them there.
The "this was not me" link in each alert opens a public page at /plugin/login_notifications/client_report/.
The link in a test email goes to the sign-in history instead, so it does not exercise that page. To make sure
the page is reachable, open https://<your Blesta address>/plugin/login_notifications/client_report/ in a
private window where you are not signed in: it should show Link not valid. If a gate such as Cloudflare
Access protects your site and asks for a login instead, allow that path through it.
On the Installed tab click Uninstall and confirm Really uninstall this plugin?; Blesta answers "The plugin was successfully uninstalled." Uninstalling deletes this company's sign-in history, trusted devices, places, preferences and settings (the tables go when the last company removes the plugin), the two background tasks and the four email templates. Download any history you want to keep first (the CSV export on the Sign-in History page). Copies of sent alerts stay in Blesta's own email log.
Blesta keeps the plugin's staff permissions after an uninstall, including which staff groups were allowed or denied. If you install the plugin again, those groups get the same access back without you ticking anything, so check Settings > System > Staff > Staff Groups after a reinstall.
Installing and updating extensions can now be done automatically through the Blesta Club Subscription Manager - this is the recommended way going forward.

Upgrading works just like installing: upload the new files over the old ones, then run the upgrade from the same page you installed it on.
plugins/login_notifications/.Version 1.0.1: This is the first release, so there is nothing to upgrade from and no steps beyond installing it (see the install guide). Requires Blesta 6.0 or later. Good to know when you set it up:
Only give Sign a User Out Everywhere, Forget a User's Trusted Devices and Erase a User's Sign-in Data to staff you trust with those actions. They work on any user the company has a record for, administrators included, and are written to the application log with the staff member's id.
{headline} tag, which names the
reason; keep it in the subject if you reword it./plugin/login_notifications/client_report/ through it.
Every time someone signs in, the plugin records the sign-in and asks four questions:
Depending on Notify On, a new device, a new place or both produce an email; every sign-in produces one if you chose "Every sign-in". Suspicious sign-ins (impossible travel, a changed browser) are emailed whatever Notify On says, unless the plugin is switched off, that user group (clients or staff) is switched off, or a client opted out and Always send suspicious-sign-in alerts is off. They are not held back by the ordinary daily and hourly caps; they have a cap of their own (20 per user per day). The very first sign-in the plugin ever records for an account only sets the baseline: an account nobody has signed in to since you installed the plugin is not covered until its owner has signed in once, so a stolen password used on such an account first is silent. Tick Notify on the first sign-in on record if you prefer an email there too.
Login Notifications > Sign-in History lists every recorded sign-in of the current company: time, user (linked to the client profile) and type, device, location, IP address, the reasons it was flagged, and what happened to the notification (emailed, waiting for the digest, opted out, held back by a limit, failed). Toggle Filters opens the filter bar (User Type, Reason, Notification and User ID, with Apply Filters and Clear); sort by clicking the Time heading. The Export CSV button in the box header downloads the filtered list as a CSV file with the columns Time (UTC), Device, Device Type, Location, IP Address, Reasons, Notification, Reported, User, User ID and User Type.
On each row, the clock icon (All sign-ins of this user) shows all sign-ins of that user and the sign-out
button (Sign out everywhere) ends every session that user has (you are asked to confirm). If you sign out your own user, your own session ends too and
you land on the staff sign-in page. Open the clock icon (or filter by User ID) and a bar above the
list reads Actions for
The pages are for staff only: the plugin refuses a session that is not a staff session, even if it is asked for under the client area address.
If no location source is configured, a notice at the top says that new-place and impossible-travel checks are off.
On a client's profile, Sign-in Activity shows their latest five sign-ins and how many trusted devices they have, with three actions, each behind a confirmation:
Login Security counts the last seven days: sign-ins, new devices, suspicious sign-ins and sign-ins reported as "not me", and lists the most recent suspicious or reported ones.
Login Notifications > Login Notification Settings. Every field has a help icon. On a fresh install everything works as it is: alerts for new devices and new places, Notify clients and Notify staff on, a Quiet Period of 5 minutes, 6 emails per user per day, 300 per hour for the company, devices trusted for 90 days, 25 sign-ins per page on the client page and 180 days of history. Saving shows "The settings were saved."; a value outside its range is refused with a message such as "The quiet period must be a whole number of minutes from 0 to 1440." and nothing is saved. In short:
At the bottom, Send a Test Email sends a sample (new device, new location, impossible travel, session changed browser, daily digest, staff alert or the sign-in alert as a client receives it) to your own staff email address using your real templates and settings. Nothing is recorded. The "this was not me" link in a sample leads to the sign-in page instead of a working report.
Two tasks are listed under Settings > Company > Automation, on the Plugin tab, in the group Login Notifications: Login Notifications: Send Digests (daily at 06:00 UTC) and Login Notifications: Purge Old Data (daily at 03:30 UTC). There is no run-now button; Blesta's cron runs them, and a task whose time has already passed on the day you install runs soon after, so the purge may log "Old sign-in data purged" right away. You can change a task's start time there.
Location is what makes new-place and impossible-travel detection possible. Two sources are supported, and nothing is ever sent to an outside service.
Your own MaxMind database. MaxMind's free GeoLite2 databases need a free account and their licence terms forbid redistributing them, so the plugin cannot include one.
.mmdb format..mmdb file, or a file that is not a MaxMind database, is refused with an error and nothing on the
page is saved. Once saved, the page confirms the database type and build date.geoipupdate tool does this). The City database gives place names
and coordinates, so impossible travel uses real distances; the Country database gives only the
country, so impossible travel falls back to "a different country within a few hours".Cloudflare's headers. If every request to your Blesta reaches it through Cloudflare, Cloudflare adds the visitor's country to the request, and with its "Add visitor location headers" managed transform also the city, region and coordinates. Tick Trust Cloudflare location headers. Only do this when your server cannot be reached directly: anyone who can reach it directly can send those headers themselves.
With Location Source on Automatic, trusted Cloudflare headers are used when they are present and the database answers otherwise. The database looks up the address Blesta sees, which behind a proxy is the proxy's unless you tell Blesta about the proxy (next section).
Blesta reads the visitor's address from the connection unless Settings > System > General > My
installation is behind a proxy or load balancer is ticked; only then does it use the proxy's
X-Forwarded-For header. Without that setting every visitor of a proxied site appears to come from
the proxy's addresses, so networks and places mean nothing. With it, Blesta trusts the first public
address in that header, which a visitor can write themselves unless your proxy replaces the header.
Tick the setting only when your proxy overwrites X-Forwarded-For, keep Recognize a browser without
its cookie off, and tick Trust Cloudflare location headers only when your server accepts
connections from Cloudflare alone.
Clients (and contacts who have their own login and the Sign-in Activity permission) find Sign-in Activity in the client area:
A contact without the Sign-in Activity permission does not see the link, and Blesta refuses the page if they open its address; tick the permission on the contact (see the install guide). The page shows only the signed-in person's own sign-ins. Staff who open it with "Login as Client" see that client's sign-ins, read only: an amber notice reads "You are viewing the client's sign-in activity as staff. It is read only.", the preferences panel and the action buttons are not shown, and a change posted anyway is answered with "You are viewing this page as staff, so nothing can be changed here."
Four templates install under Settings > Company > Emails and can be edited like any other:
{user}, {login} (time, ip),
{device} (label, browser, os, type), {location} (label, country, region, city),
{reasons} (a list), {headline} (a short title of the most serious reason, such as "New device sign-in"
or "Impossible travel detected", used in the subject), {not_me_url} and {history_url}.{user}, {count}, {logins} (a list of items with time, ip, device,
location and reasons) and {history_url}.{user_type} and {admin_url}, minus {not_me_url}. Its reasons are worded for the staff reading about someone else's account.Links in the emails are built from the hostname of your company, never from the visitor's request. If your company has no hostname set, the links are left out and the templates simply omit that sentence.
v1.0.0 - 2026-10-31
PHP 8.2 - 8.4 · Blesta 6.x
- Initial release
Get exactly what you need and want.
Requires PHP 8.2 - 8.4 · Blesta 6.x
Value: Free
Not sure whether to lease or own? Our FAQ explains how the licence types differ.
What our customers say
(0 customer reviews)
It is possible to leave a review only if you have purchased this extension or a Club tier which contains it.
We reserve the right to alter wording or formatting for presentation.
We will discuss any changes made and offer the option to withdraw review text if the changes can't be agreed on.
It may take up to 1 hour for a review to appear or update due to caching.
More extensions to explore
Plugin
Integrate the Announcements plugin to provide updates and news to your clients.
PHP 8.2 - 8.4 · Blesta 6.x
Plugin
See what changed on a client's account, when it changed and who changed it.
PHP 8.2 - 8.4 · Blesta 6.x
Plugin
Give your clients rewards based upon service purchases.
PHP 8.2 - 8.4 · Blesta 6.x