Description
PortalPilot turns your WordPress site into a client portal. Clients sign in on your own front end, open their files, write notes back to you and keep their profile up to date — without ever seeing the WordPress admin.
You work from a portal page inside the admin: one screen per client with their files, their notes, their profile and their permissions.
Managing clients
- Mark any WordPress user as a client from their profile screen, or while creating them
- A Clients view in the admin, filtered to just your clients
- A dashboard showing client, file, folder and note counts, plus recent registrations, file activity and notes from clients
- One portal page per client with Overview, Profile, Files, Notes and Permissions tabs
- Block a client’s portal access without touching their WordPress account
- Optional welcome email when you create a new client
File manager
- Upload files and build folders for each client, or let clients do it themselves
- Rename, move, trash, restore and permanently delete
- A trash view with restore and empty-trash
- Folder nesting up to five levels deep, or turn folders off entirely
- Mark any file or folder admin-only so the client never sees it
- Uploads up to 2 MB, capped by whatever your server allows
- Choose which file types are accepted: documents, images, spreadsheets, presentations, archives, audio
- Downloads are streamed by PHP, so real file paths are never exposed
- Optional email to the client when you add a file, asked each time or set once
Notes
- Write notes for yourself, or share them with the client
- Clients reply from their portal; their notes arrive on the client’s Notes tab
- Star notes you want to keep at hand, and filter by admin-only, shared, received, starred or trashed
- Trash and restore, with a per-client option to let clients delete their own notes
Client profiles and custom fields
- Clients edit their name, email, password and avatar themselves
- Built-in address fields with country and state or province lists
- Add your own fields: text, textarea, checkbox, checkboxes, radio, email and phone
- Phone fields include international formatting and country selection
- Decide per field whether it appears on registration, on the profile, or admin-only
- Mark fields required, and drag to reorder them
Permissions
- Global defaults for what clients may do: upload, create folders, rename files, rename folders, move files, move folders, trash files, trash folders, view trash, restore from trash, delete their own notes
- Override any of them for an individual client on their portal page
Sign-in, registration and passwords
- Front-end login, registration and password reset pages, built from your own pages
- Self-registration can be switched off, leaving account creation to you
- Custom messages for the portal welcome, access denied and registration disabled screens
- Choose where clients land after logging out
Email notifications
- Eight notifications, each one switchable: new client registered, file uploaded, client note received, client profile updated, welcome, admin added a file, admin shared a note, password reset
- Edit every subject and body in a visual editor
- Merge tags for
{{first_name}},{{last_name}},{{email}},{{site_name}},{{portal_url}},{{login_url}},{{file_name}},{{file_count}}and{{reset_url}} - Set the From name and address, and send admin notices to more than one recipient
- Sent with WordPress’s own
wp_mail(), so any SMTP plugin works alongside it
Security
- Nonce checks and capability checks on every form and AJAX endpoint
- Ownership checks so one client’s files and notes can never be reached by another
- Prepared statements for every database query
- Uploads validated three ways: an allowed-types list, a blocked list of executable types, and magic-byte inspection of the file itself
- Double-extension uploads rejected
- Files stored flat under UUID names in a protected directory, served only through PHP with no-store headers
For developers
- Actions and filters throughout for extending the plugin
- Custom tables rather than post types, and no REST API dependency
- Scripts and styles load only on PortalPilot screens
- Fully translatable through the
portalpilottext domain
Screenshots












Installation
- Install through Plugins Add New, or upload the
portalpilotfolder to/wp-content/plugins/. - Activate PortalPilot on the Plugins screen.
- Open PortalPilot Settings and pick or create your portal, login and registration pages.
- Create a client from Users Add New, or edit an existing user and tick This user is a client.
- Set your permissions, email notifications and custom fields under PortalPilot Settings.
FAQ
-
Do clients need a WordPress account?
-
Yes. PortalPilot uses WordPress accounts for sign-in, but clients only ever see your front-end portal, never the admin.
-
Does it add a new user role?
-
No. Being a client is a flag on the user, so their WordPress role stays exactly as you set it.
-
Can I control what clients are allowed to do?
-
Yes. Every file and folder action has a global default, and you can override any of them for one client on their portal page.
-
Are uploaded files publicly accessible?
-
No. Files are stored under generated UUID names in a protected directory, and downloads are streamed by PHP after an ownership check. Real paths are never exposed.
-
Yes. Mark any file or folder admin-only and it disappears from the client’s portal while staying in yours.
-
How large can uploads be?
-
Up to 2 MB, or less if your server’s own upload limit is lower. PortalPilot only offers sizes your server can actually accept.
-
Can I stop people registering on their own?
-
Yes. Turn off self-registration under PortalPilot Settings Registration and only you can create client accounts.
-
What happens when I block a client’s access?
-
They can no longer open the portal, upload, download or write notes. Their WordPress account and any other access it has are untouched.
-
Does PortalPilot create custom post types?
-
No. It uses its own tables:
portalpilot_files,portalpilot_folders,portalpilot_notesandportalpilot_custom_fields. -
How are emails sent?
-
Through WordPress’s
wp_mail(). No external service is needed, and any SMTP plugin works alongside it. -
Is it multisite compatible?
-
Not at this time. PortalPilot is built for single-site installs.
-
What are the requirements?
-
WordPress 6.9 or newer and PHP 8.2 or newer.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“PortalPilot – Client Portal, File Sharing and Client Management” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “PortalPilot – Client Portal, File Sharing and Client Management” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.4
- The file upload panel is now a distinct section that reports each upload’s result and stays until dismissed.
1.0.3
- Fixed the logo and icon artwork being cropped at the top, which flattened the crown of the portal arch. Affects the admin menu icon, the admin header logo and the directory assets.
1.0.2
- Fixed a fatal error when rendering a radio or checkbox custom field whose stored options were malformed.
- The clients list header now renders through
in_admin_headerinstead ofadmin_notices. - Removed the version-check admin notices; WordPress enforces the plugin header requirements itself.
- The plugin name now describes what it does.
1.0.1
- First public release.
