After trying what seems like thousands of tools to keep track of client projects, assets and files, contracts and documents, quotes and invoices, and things like support tickets and what-not, I decided to create a client portal on my WordPress website.
Over the course of a few weeks, I tried out a dozen or more plugins and finally settled on a combo of free and paid options.
- WP Amelia
- Client Portal
- Fluent Forms
- Fluent Support
- Paid Member Subscriptions
- Project Panorama
- Panorama Sprout Invoices
- Profile Builder
- Sprout Invoices
- Sprout Invoices PayPal Express Checkout
- Ultimate Dashboard Pro
- WordPress File Upload
Of course, there are a few other plugins for security, backups, and what-not on the portal but the above plugins are used specifically for the portal operations. Although I’m satisfied with how it all came together, I may make some tweaks over the next few weeks.
Before I go any further, please note some of the links on this page are affiliate links. I have marked them with an asterisk (*) so they’re easy to spot. If you click one and purchase it, I will get a little bit of commission.
I started out with another premium booking plugin but their support was an absolute disaster! I tried contacting them 3 times (with 3 follow-ups) over the course of 3 weeks and NEVER once heard back from them! And I was a “lifetime deal” customer, even. Needless to say, I trashed the plugin and asked for a refund.
That’s how I landed on Amelia* and I’m absolutely happy with it. The basic plugin does everything I need it to do – appointments, integrates with Zoom, and Google Calendar, and allows me to choose my work days and hours plus block off certain days (like holidays and what-not).
There are tons of other features too if you need something more robust like multiple locations, employees, integrations with other calendars including Outlook, events, recurring appointments, and more. You can even collect payment for booking services.
Here is the client side, customized to my portal’s colors, showing from choosing the service to the date and time for the appointment, and then the confirmation screen showing the clients details.
Once the client selects the “Confirm” button, they’ll be asked if they want to add it to their calendar and can choose which calendar service they want to use.
The second plugin I’m using is Client Portal by Cozmoslabs. It’s a totally free plugin and the team Cozmoslabs even wrote a full post about building the plugin on their blog.
All you do is paste the [client-portal] shortcode on the page you want the Client Portal be on and the plugin handles the rest. You can create private portal pages for each client which is kinda cool. The plugin also offers the ability to restrict content to certain user roles and more but it’s very simple plugin.
I’m also using Cozmoslabs free Profile Builder plugin. It pairs very nicely with their Client Portal plugin and allows users to edit their user profile from the front end of your site. It also includes login/logout functionality, user registration forms, and you can even restrict content with it.
Profile Builder has several free and paid extensions you can use with it and there’s also a premium version that includes several advanced options.
My typical go-to form builder is Ninja Forms but lately I’ve been using Fluent Forms and am really liking it. Very easy to use, lots of options right out of the box with the free version, and of course, a premium version that has even more bells and whistles.
Fluent Forms is a user-friendly, customizable drag-and-drop form builder that includes multi-column layout, smart conditional logic fields, conditional confirmation messages, responsive and mobile friendly design, reusable templates, spam protection, and a whole lot more.
I’m using it for the contact and support forms inside the Portal.
Fluent Support is a new plugin from the folks at WPManageNinja, the same makers of Fluent Forms (and the FluentCRM plugin I’m also using). And just like the name states, it’s a support ticket system. I’m using the free base plugin on this one but I will most likely be upgrading to the premium version. It’s a great plugin, so far!
Clients can send support tickets via the Client Portal and include screenshots with your message so that I can help them quickly and efficiently. All replies go to email as well and the client can respond directly from their email. It’s also fully GDPR compliant since it’s self-hosted system. (Be sure your site has an SSL certificate tho.)
The Pro version of the plugin integrates with several other plugins including membership plugins, LMS plugins like LearnDash, LifterLMS, and others, and has many other additional features as well.
I wasn’t going to include a CRM originally but once I got things all together and starting building the Client Portal, I decided it would make things super easy.
Not only does FluentCRM include an all-in-one email marketing solution, it includes customer relationship management that integrates with lots of other plugins like LearnDash, WooCommerce, Fluent Forms, and more. You can store notes and meeting logs in the contact’s profile, send marketing emails, email automations, and build marketing funnels.
And of course, there’s a free version as well as a premium version with more features.
Paid Member Subscriptions
Paid Member Subscriptions is also from Cozmoslabs and offers both free and premium versions. I’m using the free version with the PayPal Express addon. They also have an invoices addon but I’m using Sprout Invoices instead because it integrates with other plugins I’m using.
Basically, Paid Member Subscriptions is a membership plugin. Some of its capabilities overlap with other plugins features so I’m not using all of the features it offers. Those features include: registration, login, account info (which I am using), restrict content, and password recovery (using).
The reason I chose this one over others is it integrates with Project Panorama and also because of the additional capabilities it has if I decide I need them, like, WooCommerce Integration, discount codes, menu filtering, BBPress integration, Stripe integration, content dripping (so you can offer courses with it), invoicing, and more.
Bottom line: it’s a super simple plugin with a lot of robust features and addons if you need them.
I tested about a dozen project management tools before landing on Panorama. Like many of the other plugins I chose for the Client Portal, I chose it because it’s simple and extensible.
Like most project management products, Panorama offers tasks, sub tasks, project templates, deadline tracking, communication, resource management, and a variety of options like Kanban view, if that’s your style.
And it offers several integrations including Sprout Invoices, which I’m also using for the Client Portal.
Sprout Invoices is another simple plugin with robust features and extensions, and although it has several capabilities, it’s main function is invoicing.
One of the reasons I chose it was for it’s integrations with Panorama and because it allows clients to update their billing info very easily. From their client dashboard, they can add credit cards, new bank accounts, update their address, and of course, view all of their invoices and payments.
I’m also using the Panorama Sprout Invoices addon and the Sprout Invoices PayPal Express Checkout addon, which are both free.
Sprout Invoices also includes recurring invoices and offers several free and paid extensions as well as a whole host of other options. In fact, you could really use it for pretty much anything in your client portal without the need for other plugins.
Ultimate Dashboard Pro
Originally, I bought Ultimate Dashboard Pro* so I could make a support area on the Dashboard of my client’s own sites so they could easily get in touch with me. But once I got to playing around with it, I realized it could be an essential tool for the Client Portal as well.
Some of its features, like login customizer, overlap with other plugins but it’s easy enough to turn off the features you don’t want.
One of the things I wanted to do with the Client Portal was to remove WordPress branding and 3rd party admin widgets because clients just don’t need that stuff and Ultimate Dashboard does the trick.
Additionally, you can rearrange the admin menus, customize the colors of the admin menu sidebar, customize the admin bar (the bar at the top of the screen), create custom admin pages, restrict content, and it works with multisite.
WordPress File Upload
Other plugins offer file upload capability but I decided to use WordPress File Upload so that clients can upload files directly from the front-end Client Portal Account page and it can be added pretty much anywhere – in posts, pages, or in any widget.
The plugin also supports additional form fields like checkboxes, text fields, email fields, and dropdown lists. And you can configure it to send notification emails to anyone when files are uploaded.
You have a choice of what happens to files when they’re uploaded: they can be added to the Media or they can be attached to the current page. Plus, there are several other features all available in the free version. There is a premium version (for super cheap!!) with even more features and options.
An interesting aside – the developers website looks like it’s straight out of 2002! LOL But the plugin is great so far, so I won’t hold it against him.
Overall, I’m happy with the way things turned out. I do want to play around with some other options on my dev server and make it an even better experience for my clients. I plan to upgrade to the premium versions of a few of the plugins if they end up staying in the mix.
For now, the current setup will do the job well, although I have a few tweaks I want to make over the next few weeks. Hopefully, my clients will get a ton of value out of it and it will make the entire process even smoother.
Below are the final screenshots of the Client Portal. . .
Over to you. . .
What do you think? What would you have done differently? Or what other plugins would you use to build your own Client Portal?
I’d love to hear your thoughts, ideas, and suggestions in the comments!