Description
Stop losing client work in email threads and shared drive links. MerchantKits Client Portal gives every client their own password-protected page on your site, where they can follow project progress, download deliverables, upload their own files, message you, and sign off on work.
Your clients do not need WordPress accounts. They sign in with an email address and a password you set, using a portal session that is completely separate from WordPress logins.
Built for freelancers and small agencies
- A portal per client. Each client gets a URL like
yoursite.com/client-portal/acme-corp/, branded with your logo and colour — not your theme, and with no WordPress admin bar in sight. - Projects with milestones. Break work into milestones, drag to reorder them, and let progress calculate itself as you move each one forward.
- Secure file sharing. Files are stored outside the publicly served uploads tree, with randomised filenames and downloads served through an authenticated PHP handler. Direct URL access is blocked.
- Deliverable approvals. Mark a file “requires approval” and your client gets Approve and Request Revision buttons. Revision requests require a note, so you always know what to change.
- Message threads per project. Async, comment-style messaging with unread counts in your admin menu — no live chat to keep up with.
- Activity log. Every upload, download, message, milestone change, and approval is recorded. You see everything; each client sees only their own.
- Email notifications. Eight notification types, each individually switchable, sent as clean branded HTML with a plain-text alternative.
- Embed anywhere. Prefer the portal inside your existing site design? Drop the
[mkcp_portal]shortcode on any page and it inherits your theme.
Everything is included
- Unlimited clients, projects, milestones, files, and messages
- The full portal, approval workflow, and activity log
- All email notifications
- CSV export for clients, projects, files, and activity
- Full REST API
There are no locked features, no client caps, and no upsell prompts blocking your
work. Everything described on this page is in the plugin you download.
The plugin makes no external requests. All of your data stays in your own
WordPress database and on your own server.
Part of the MerchantKits suite
- MerchantKits Document Signatures — collect legally binding e-signatures on documents.
- MerchantKits Attendance Manager — track employee attendance, shifts, and leave.
Screenshots








Installation
- Upload the plugin files to
/wp-content/plugins/merchantkits-client-portal/, or install it through the Plugins screen in WordPress. - Activate the plugin through the Plugins screen.
- Go to Client Portal Settings and set your company name, logo, and brand colour.
- Go to Client Portal Clients and add your first client. A portal slug and password are generated automatically.
- Tick “Email the client their portal link and password” when you save, and they are ready to sign in.
If portal URLs return a 404 straight after activation, visit Settings Permalinks once. That refreshes WordPress’s rewrite rules — you do not need to change anything on that screen.
FAQ
-
Do my clients need WordPress accounts?
-
No. Clients sign in with an email address and password stored by this plugin, using a separate portal session. They never touch wp-admin and never appear in your Users list. If you want to link a client to an existing WordPress user, there is an optional field for that on the client form.
-
Where are uploaded files stored?
-
In
wp-content/uploads/mkcp/{client-slug}/{project-id}/, with randomised filenames. That directory ships with.htaccessandweb.configrules denying direct web access, and every download runs through a PHP handler that verifies your portal session first. The original filename is preserved in the database and restored when the file is downloaded. -
Is there a limit on how many clients I can add?
-
No. Add as many clients and projects as you like. Client statuses (Active, Inactive, Archived) exist purely to keep your list tidy — archiving a client keeps all of their data and they can be reactivated at any time.
-
Can a client see another client’s files?
-
No. Every query is scoped to the signed-in client, and project, file, and message lookups re-check ownership before rendering. Changing an ID in the URL returns “not found”, not someone else’s data.
-
Is the portal mobile friendly?
-
Yes. The sidebar collapses to a hamburger menu on small screens and the layout switches to a single column. Clients can upload files and approve deliverables from a phone.
-
Can I use my theme’s design instead of the standalone portal page?
-
Yes — put the
[mkcp_portal]shortcode on any page. The portal then renders inside your theme with its header, footer, and styles. Both options work at the same time; use whichever suits each client. -
Can I customise the portal templates and emails?
-
Yes. Copy any template from the plugin’s
templates/directory intoyour-theme/mkcp/and edit it there — for exampleyour-theme/mkcp/email/client-welcome.php. Your copy takes precedence and survives plugin updates. There are also filters for branding, navigation items, allowed file types, email subjects and content, and more. -
What happens to my data if I delete the plugin?
-
Nothing is removed unless you ask for it. Under Settings Advanced there are two separate opt-ins: one to delete database records and one to delete uploaded files. Both are off by default, so deleting the plugin leaves your data intact for a reinstall.
-
I forgot a client’s password. Can I look it up?
-
No, and that is deliberate — passwords are stored hashed with WordPress’s own hashing, so nobody can read them back, including you. Use the “Send credentials” row action to generate a fresh password and email it, or point the client at the “Forgot password” link on their sign-in page.
-
Does the plugin work on multisite?
-
Yes. Each site in the network keeps its own clients, projects, and files.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“MerchantKits Client Portal” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “MerchantKits Client Portal” 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.0
- Initial release.
- Client management with auto-generated portal slugs and passwords.
- Projects with milestones, drag-and-drop reordering, and progress calculated from milestone status.
- Secure file sharing with private storage, randomised filenames, and authenticated downloads.
- Deliverable approval workflow with mandatory revision notes.
- Per-project message threads with unread counts.
- Standalone branded client portal with custom cookie authentication, rate-limited sign-in, and password reset.
[mkcp_portal]shortcode for embedding the portal in your theme.- Activity log across the admin dashboard, project screens, and client portal.
- Eight email notification types, all individually switchable and theme-overridable.
- Full REST API under the
mkcp/v1namespace. - CSV export for clients, projects, files, and activity.
