Every module, every setting
The Features page makes the argument. This one answers the question you have after it — whether the specific thing you need is in there, and what you can configure about it.
User Panel
FreeThe front-end member area, and the endpoint system underneath it. This is the module everything else mounts on.
- Panel sections you define
-
Create your own sections with a label, a unique slug and an icon — none, a default glyph, or one you upload. Group them, and drop external links in between.
Settings- Label
- Slug
- Icon: none / default / upload
- Groups
- External links
- Access per section
-
Each section is open to all signed-in users or to named roles only. A member who may not see a section does not see it in the menu either.
Settings- All users
- Specific roles
- Sections that clean up after themselves
-
A module registers and deregisters its own sections, so switching one off leaves no orphan behind. Links are built correctly on Pretty, Numeric and Plain permalinks, and a rewrite rule that goes missing is rebuilt on the next load.
Nothing to configure
- Six dashboard cards
-
Welcome with configurable text and mini stats, account overview, profile progress with a checklist, active session count, recent activity, and a list of panel destinations. Each has its own switch.
Settings- One switch per card
- Welcome text
- The account form, your fields
-
Nine field types: text, email, password, phone, select, radio, checkbox, textarea, and date-time. Profile, password and avatar are separate services, so a change to one does not touch the others.
Settings- Label
- Placeholder
- Required
- Min and max length
- Custom meta key
- CSS class
- Templates you can override
-
Header, footer, panel and content templates are all overridable from your own theme, and the user menu has a live preview in the settings screen.
Settings- Theme overrides
- User menu
- Fourteen-plus cards in four groups Pro
-
Account, store, modules and content. A shortcuts grid replaces the plain link list, each card carries its own settings, and the layout is ordered how you want it. A card whose module is off leaves the settings screen and the dashboard together.
Settings- Layout order
- Per-card settings
- Items shown per card
- The panel header Pro
-
A user card and logout, each with its own switch, plus an icon catalogue with unread badges. The cart icon can hide itself when the cart is empty, which keeps the header from shifting as items are added.
Settings- User card
- Logout
- Cart icon
- Hide cart when empty
- Items per dropdown: 1–10
- Profile menu endpoint
- Avatars, complete Pro
-
Turn the whole thing off and WordPress handles profile pictures exactly as it does without HUBU. Left on, uploads are restricted to named roles — everyone else still sees an avatar, they just cannot change it — and uploads are re-encoded, which is what actually neutralises a malicious image file.
Settings- Master switch
- Roles that may upload
- Gravatar and cache days
- Default image
- Fallback: initials / mystery / identicon / blank
- Formats
- Min and max dimensions
- Max weight in KB
- Stored format: WebP / JPEG / PNG
- Quality
- Upload rate limit
- Override site-wide
- REST API
-
A panel REST controller for the operations the front end performs, so anything the dashboard does can be done from outside it.
Nothing to configure
Authentication
FreeLogin, registration and recovery on your own page — and the limits that keep an open form from becoming somebody else’s tool.
- Four screens, each with its own words
-
Sign in, sign up, forgot password and check-your-email. Every screen has its own title and subtitle, and the set shares a background image, a logo and an optional tabbed layout.
Settings- Title and subtitle per screen
- Background image
- Logo
- Tabbed layout
- A form builder on every field
-
The same builder the account form uses, on the login and registration forms.
Settings- Label
- Placeholder
- Required
- Min and max length
- Custom meta key
- CSS class
- The international phone field
-
Built on intl-tel-input and driven entirely from settings. Country detection runs on the SERVER — fastest, from a CDN or GeoIP header — or in the BROWSER, which is the correct answer when full-page caching serves the form to logged-out visitors.
Settings- Detection: server / browser
- Initial country
- Allowed countries
- Excluded countries
- Country order
- Country search
- National mode
- Separate dial code
- Flags
- Format as you type
- Format on display
- Strict mode
- A password policy for the whole site
-
Weak passwords are stopped at the site level rather than left to each member.
Settings- Require strong
- Minimum length
- Uppercase
- Lowercase
- Numbers
- Special characters
- Three independent rate limits
-
Login, registration and password reset each get their own. The reset and registration caps are what stop somebody making your server send mail or SMS on another person’s behalf.
Settings- Attempts
- Time window
- Lockout duration
- Locked-account message
- Zero to disable
- Visitors identified from REMOTE_ADDR only
-
A spoofed X-Forwarded-For cannot walk past a limit. Trusting the header your proxy actually sets takes one explicit filter, and that opt-in is the point rather than an inconvenience.
Settings- hubu/trusted_proxy_headers filter
- Registration you control
-
One master switch, and turning it off does not touch accounts that already exist.
Settings- Allow registration
- Default role
- Admin notification
- Privacy policy page and link
- Required consent
- Welcome email
- Redirects that cannot be turned against you
-
Dedicated destinations after login, after registration and after a reset. The return URL is carried across steps and judged by a single class, which is what keeps your login link from becoming an open redirect.
Settings- Enable and URL, per flow
- One-time codes across all three flows Pro
-
Login, registration and password reset each have their own switch and their own channel, so registration by SMS with password reset by email is a normal configuration rather than a compromise.
Settings- Switch per flow
- Channel per flow: email / SMS
- Password login on or off
- A code policy that closes off abuse Pro
-
A resend re-sends the LIVE code instead of replacing it, so a member who presses it twice does not lock themselves out — one of six published architecture decisions, with tests behind it.
Settings- Code length
- Expiry in minutes
- Attempt limit
- Request limit
- Per-IP request limit
- Minimum resend interval
- Resend limit
- Fully passwordless Pro
-
Turn password login off and the site has no password to forget, reset or leak. Behaviour in every combination of these settings is defined by a decision table and tested.
Settings- Password login switch
Notifications
FreeThe delivery layer. Not a module you switch on — it is core, and everything that sends anything goes through it.
- Queued, never inside the request
-
Delivery runs on Action Scheduler, so a message is never sent in the request that created it. Publishing to ten thousand members takes as long as publishing to ten.
Nothing to configure
- A template registry
-
Every template has an editable subject and body, a legend of the variables available to it, and declared required variables — so a template missing a variable fails at edit time rather than in someone’s inbox.
Settings- Subject
- Body
- HTML or plain text
- Sender identity and email graphics
-
What your members see in the From line, and what the message looks like around your words.
Settings- From name
- From email
- Reply-To
- Logo
- Signature
- Footer text
- Template
- A delivery log
-
A table of what was sent, so a member saying “I never got it” is a question you can answer rather than a guess.
Nothing to configure
- A channel registry
-
Email ships. A new channel registers itself rather than being patched in, which is how the SMS module adds one.
Settings- hubu/ filters
Asset Cleanup
Free, with Pro depthThe mechanism behind “works with any theme”. It is the reason that sentence is a switch you can point at rather than a claim you have to take on faith.
- Strip theme assets from the screens that matter
-
Theme and child-theme CSS and JS stop loading on panel pages and on the authentication screens, independently. Panel pages get lighter as a side effect, not as a promise.
Settings- Master switch
- Panel pages
- Authentication pages
- A dependency guard
-
Removing a handle does not break the handles that depended on it. It has its own unit tests, because the failure mode is a blank screen.
Nothing to configure
- A switch per plugin Pro
-
The list is built from your own plugins directory rather than from a maintained allow-list, so a plugin you installed yesterday is already in it.
Settings- One switch per installed plugin
- Scan the page, then decide Pro
-
“Scan panel page” and “scan auth page” report the handles that ACTUALLY loaded, and you tick what to remove. You stop guessing which plugin broke the layout.
Settings- Scan panel page
- Scan auth page
- Advanced rules Pro
-
For the asset that has no handle worth naming, or a handle that changes between versions.
Settings- By handle
- By URL fragment
- Type: style / script / both
WooCommerce
Free, with Pro depthMy Account becomes native panel sections. The module only appears when WooCommerce is active; otherwise it is disabled with an explanation rather than shown as a broken option.
- My Account, as panel sections
-
Orders, downloads, addresses, account details, payment methods and logout, with matching icons and styling.
Nothing to configure
- WooCommerce’s hooks keep firing
-
HUBU adds endpoints; it does not replace them. The extensions that add to My Account keep working, and the Overview page names any slug both plugins have claimed.
Nothing to configure
- Store cards on the dashboard Pro
-
Recent orders with status and total, how many orders sit at each stage, the current cart with totals and a checkout button, the downloads a purchase unlocked, and cross-sells from past purchases that fall back to featured and then to newest.
Settings- One switch per card
- Items shown per card
- Panel styles for Woo’s own markup Pro
-
The design system extends to WooCommerce’s tables and forms inside the panel, so the parts we did not draw stop looking like the parts we did.
Settings- Panel styles switch
- Product-buyer audiences Pro
-
Announcements and private messages can be addressed to everyone who bought a particular product, resolved from your own order history.
Settings- Product picker
Announcements
ProOne-to-many messages that live in the panel, with read tracking. The thing email cannot tell you is who opened it.
- Audience Pro
-
Everyone, named roles, or buyers of a specific WooCommerce product — and a preview shows how many people that is before you publish.
Settings- Everyone
- Specific roles
- Product buyers
- Recipient count preview
- Content and emphasis Pro
-
A title, an icon with its own colour and background, and a body. Pin what matters and it stays at the top.
Settings- Title
- Icon
- Icon colour
- Icon background
- Body
- Pinned
- Publishing and scheduling Pro
-
Draft, published or scheduled with a time, so a campaign is planned rather than remembered.
Settings- Status
- Publish time
- Also notify by Pro
-
Pick the channels that fire when it publishes. Leave it empty and the announcement stays in the panel only, which is the right answer more often than it sounds.
Settings- SMS
- None
- Per-user read tracking Pro
-
You know who saw it. Unread items are emphasised in the panel, on the dashboard card and on the header badge.
Nothing to configure
- Management that tells you where you are Pro
-
Stat tiles for total, published, scheduled, drafts and pinned, plus filters and an empty state that offers the next action rather than a shrug.
Settings- Filters
Private Messages
ProOne-to-one messages with attachments, read in the member’s own panel. Admin to member, with read tracking — members do not reply.
- Recipients, precisely Pro
-
Named users, roles, or product buyers — with a preview and a recipient count before you publish.
Settings- Specific users
- Specific roles
- Product buyers
- Audience preview
- Personalisation Pro
-
Variables inside the message body, with a reference field in the admin so you are not guessing the names.
Settings- Variables
- Variables reference
- Attachments, with limits Pro
-
Invoices, contracts, personal files — without losing control of disk. Downloads are streamed, orphans are swept, and storage health is checked.
Settings- Max file count
- Max size per file in MB
- Max total size
- The body never enters an email Pro
-
Ticking a channel sends a notice and a link, not the message. A compromised inbox does not expose what you wrote, and the admin screen says so where you tick it.
Settings- Email notice
- SMS notice
- Delivery you can see and re-run Pro
-
A status column detects a stalled delivery and offers to run it again, so a jammed queue is something you fix rather than something you discover from a support ticket.
Settings- Re-run delivery
SMS Gateway
ProOne gateway configuration for every message the site sends. Connect it once and one-time codes, announcements and panel notices all go out through it.
- IPPanel and Twilio ship ready Pro
-
A gateway registry with capability-based interfaces. Adding your own carrier means implementing one interface — you are not waiting on us, and these two are the reference implementations to read.
Settings- Gateway
- Credentials
- Sender
- Pattern-based sending Pro
-
For carriers that require pre-approved templates. Each provider parameter binds to a message variable or to a fixed value, and the approved patterns are read from your own provider account rather than typed in twice.
Settings- Pattern code
- Parameter map
- Variable or fixed value
- A status table that names the problem Pro
-
Health badges per pattern: off, no code set, not approved by the provider, or pattern-only — plus the last send. You find out here rather than from a member who did not get a code.
Nothing to configure
- A pattern tester Pro
-
Send one to yourself before a real user is involved.
Settings- Test recipient
- Voice codes, and an honest fallback Pro
-
A voice channel on gateways that support it. Where a gateway has no pattern support, messages fall back to free text — and the admin says so plainly rather than failing quietly.
Settings- Voice channel
Appearance and theming
ProThe panel on your brand, from settings, without a child theme or a line of CSS — and custom CSS for the edge case that needs it anyway.
- Colour and theme Pro
-
One primary colour drives buttons, links, the active menu item and highlights. Theme follows each visitor’s own operating system if you let it.
Settings- Primary colour
- Theme: light / dark / system
- Skin: default / bordered
- Semi-dark menu
- Layout Pro
-
The starting state of the side menu — members can still toggle it while browsing — and how the navbar and content behave.
Settings- Menu: expanded / collapsed
- Navbar: sticky / static / hidden
- Content: wide / compact
- Typography Pro
-
Independent settings for the panel and for the authentication screens. A Google font stylesheet is loaded ONLY when one is actually needed, so leaving the default alone costs no extra request.
Settings- Panel typography
- Auth typography
- Font family
- Custom font registration
- Custom CSS Pro
-
Two separate fields, one for the panel and one for authentication. Your edge case gets solved without a fork or a child theme.
Settings- Panel CSS
- Auth CSS
The admin experience and the foundations
FreeWhat happens when something is wrong, what happens when you install it, and what happens when you delete it.
- An Overview page that diagnoses
-
Six checks, each with a precise message and a fix button: no published page assigned to the panel, none assigned to authentication, permalinks set to Plain — which 404s every section — sections with no rewrite rule, slugs claimed by both HUBU and WooCommerce, and theme assets still loading on the panel.
Settings- Fix buttons
- Status at a glance
-
Tiles for the user panel, authentication, the active modules and the installed version — so “which of these is on?” is answered on the page you already have open.
Nothing to configure
- Setup on activation
-
The panel and authentication pages are created if they do not already exist, with a dedicated installer for the panel page. You assign them; you do not build them.
Nothing to configure
- Requirements
-
No special PHP extensions, no cron requirement beyond WordPress’s own, and no external service unless you enable SMS.
Settings- PHP 8.0+
- WordPress 6.5+
- GPLv3
- Architecture, written down
-
Domain, application and infrastructure layers with a dependency-injection container and typed exceptions, unit tests inside every module, and six published architecture decision records covering response shape, error behaviour, hook stability and code semantics. It passes WordPress.org’s own plugin-check tooling.
Settings- hubu/ filters
- Endpoint provider interface
- Gateway interface
- Template registry
- Translation that survives an update
-
Every string is translatable on the hubu text domain. Put your files in wp-content/languages/plugins/ and a plugin update will not overwrite them. RTL layouts are mirrored rather than patched.
Settings- hubu text domain
- Privacy
-
Nothing is sent anywhere while a visitor simply browses. The only outbound calls are connecting your site to your account, checking the licence and fetching an update — each triggered by an explicit action in the admin.
Nothing to configure
- Uninstalling does not delete your data
-
Deleting the plugin leaves your settings, your user data and your tables in place, and reinstalling picks up where you left off. A clean removal happens only if you explicitly opt in from a must-use plugin — which is deliberately more work than a checkbox.
Settings- Explicit opt-in
Read the list, then use it
The free version covers four of these modules. Install it, switch one on, and see whether the reference matches the reality — it should.