Title: MerchantKits Client Portal
Author: Khalid Durani
Published: <strong>August 12, 2026</strong>
Last modified: August 12, 2026

---

Search plugins

![](https://ps.w.org/merchantkits-client-portal/assets/banner-772x250.png?rev=3643310)

![](https://ps.w.org/merchantkits-client-portal/assets/icon.svg?rev=3643364)

# MerchantKits Client Portal

 By [Khalid Durani](https://profiles.wordpress.org/khaliddurani/)

[Download](https://downloads.wordpress.org/plugin/merchantkits-client-portal.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/merchantkits-client-portal/#description)
 * [Reviews](https://wordpress.org/plugins/merchantkits-client-portal/#reviews)
 *  [Installation](https://wordpress.org/plugins/merchantkits-client-portal/#installation)
 * [Development](https://wordpress.org/plugins/merchantkits-client-portal/#developers)

 [Support](https://wordpress.org/support/plugin/merchantkits-client-portal/)

## 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

[⌊The admin dashboard, with client and project stats, pending actions, and a colour-
coded activity feed.⌉⌊The admin dashboard, with client and project stats, pending
actions, and a colour-coded activity feed.⌉[

The admin dashboard, with client and project stats, pending actions, and a colour-
coded activity feed.

[⌊The client list, showing portal links, project counts, and last sign-in.⌉⌊The 
client list, showing portal links, project counts, and last sign-in.⌉[

The client list, showing portal links, project counts, and last sign-in.

[⌊The project editor, with inline drag-and-drop milestones and auto-calculated progress.⌉⌊
The project editor, with inline drag-and-drop milestones and auto-calculated progress
.⌉[

The project editor, with inline drag-and-drop milestones and auto-calculated progress.

[⌊The client-facing portal dashboard, branded with your logo and colour.⌉⌊The client-
facing portal dashboard, branded with your logo and colour.⌉[

The client-facing portal dashboard, branded with your logo and colour.

[⌊A project in the portal: milestone timeline, files, messages, and approvals.⌉⌊
A project in the portal: milestone timeline, files, messages, and approvals.⌉[

A project in the portal: milestone timeline, files, messages, and approvals.

[⌊The approval workflow — a client approving a deliverable or requesting a revision
with a note.⌉⌊The approval workflow — a client approving a deliverable or requesting
a revision with a note.⌉[

The approval workflow — a client approving a deliverable or requesting a revision
with a note.

[⌊The client portal sign-in page.⌉⌊The client portal sign-in page.⌉[

The client portal sign-in page.

[⌊The settings screen, showing the General tab.⌉⌊The settings screen, showing the
General tab.⌉[

The settings screen, showing the General tab.

## Installation

 1. Upload the plugin files to `/wp-content/plugins/merchantkits-client-portal/`, or
    install it through the Plugins screen in WordPress.
 2. Activate the plugin through the **Plugins** screen.
 3. Go to **Client Portal  Settings** and set your company name, logo, and brand colour.
 4. Go to **Client Portal  Clients** and add your first client. A portal slug and password
    are generated automatically.
 5. 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 `.htaccess` and `web.config` rules 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 into `your-theme/
mkcp/` and edit it there — for example `your-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.

Contributors

 *   [ Khalid Durani ](https://profiles.wordpress.org/khaliddurani/)

[Translate “MerchantKits Client Portal” into your language.](https://translate.wordpress.org/projects/wp-plugins/merchantkits-client-portal)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/merchantkits-client-portal/),
check out the [SVN repository](https://plugins.svn.wordpress.org/merchantkits-client-portal/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/merchantkits-client-portal/)
by [RSS](https://plugins.trac.wordpress.org/log/merchantkits-client-portal/?limit=100&mode=stop_on_copy&format=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/v1` namespace.
 * CSV export for clients, projects, files, and activity.

## Meta

 *  Version **1.0.0**
 *  Last updated **8 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [client dashboard](https://wordpress.org/plugins/tags/client-dashboard/)[client portal](https://wordpress.org/plugins/tags/client-portal/)
   [file sharing](https://wordpress.org/plugins/tags/file-sharing/)[freelance](https://wordpress.org/plugins/tags/freelance/)
   [project management](https://wordpress.org/plugins/tags/project-management/)
 *  [Advanced View](https://wordpress.org/plugins/merchantkits-client-portal/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/merchantkits-client-portal/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/merchantkits-client-portal/reviews/)

## Contributors

 *   [ Khalid Durani ](https://profiles.wordpress.org/khaliddurani/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/merchantkits-client-portal/)