tl;dr version: WP Ultimo Version 1.7.0 brings support to Setup Fees on plans, the ability to charge the user’s credit card directly (via Stripe). Clients can update their card information and network admin has more actionable controls on the subscription management screen. The title, text and button labels of the payment integration screen can also be changed directly from the plugin options; Admins can change the login URL and send non-logged users to a 404 page if they try to access the wp-admin URL.
Hello, everyone!
I’m happy to announce that WP Ultimo version 1.7.0 is out and it is one of our biggest releases so far. It brings some long-awaited features and incorporates a lot of suggestions and feedbacks we got in the forums and over other support channels. It also lays out some of the work needed to move forward in the way we discussed on this topic.
Without further ado, let’s see what’s inside!
Setup Fee support on Plans
One of the most exciting new features of this release is the addition of Setup Fees to plans. Now network admins can add a one-time setup fee to each of the plans individually and have that value charged with the first subscription payment.
Adding a setup fee is pretty simple. Just go to the Plan edit page and enter a value on the Prices block.
After that user pays for the setup fee, a control flag is added to his subscription to prevent him from paying again in case of a new integration. You can override that behavior on the Subscription Management Screen, by checking the “Should Charge Setup Fee” option.

Manual Charges Support (Stripe and Manual)
It was already possible to add new payments to the Billing History manually, using the Add new Payment Manually. Now it is also possible to create a real charge (meaning deduct real money from the users integrated payment option) of any value directly from that same form, if the user integrated gateway supports it.

The payment will be processed by the integrated service and WP Ultimo will be notified back if the payment was cleared or not. Refunds work just like with regular subscription payments.

Clients can now update their payment option without canceling the current integration (Stripe only)
WP Ultimo lacked one very basic feature for card payments: the ability to update your credit card information. This is no longer the case, as it now offers an option for users to update their card info directly from the Account page.
Improvements on the Payment Integration Screen
A lot of users requested more customization options for the Payment Integration Screen. WP Ultimo version 1.7.0 brings a lot of them =).
First, network admins are now able to completely change the title and description of the page directly from the WP Ultimo > Payment Gateways tab.
All the gateways automatically get a Button Label option as well, where you’ll be able to overwrite the default text of the integration button.
The Payment Integration page now also has a small Go to the Account Page link at the bottom, allowing clients to visit the Account page, have access to plan changes and more, something that wasn’t possible before.
Improvements to the Visits Limit
We release visits limits per plan on version 1.6.0, but in a very rudimentary state. It did not work if a caching plugin was activated and there was no way to reset the count without editing the database options by hand.
Version 1.7.0 brings more control for network admins and clients as well.
Working with Cache Plugins
The visit counter now runs as a script in the front-end. Being an ajax call, the page can be cached without any issues and the admin can be sure that the counter will take that visit into account. There’s also a small delay before triggering the count action, preventing accidental accesses from counting as a full-visit. Cache plugins supported include: W3TC, WP Super Cache, WPEngine Cache and WPFastestCache.
Notification Emails
We also added two new emails templates to WP Ultimo, regarding Visits limit.

- An alert email is sent to the user once 80% of the visits quota is reached;
- Another alert email is sent to the user once 100% of the visits limit is reached.
Network admins can customize the emails, or disable them directly on the WP Ultimo > Emails tab.
Reseting the Visits Count
Now, network admins can reset the visits count on the subset Limits and Quotas widget or directly on the Site List widget of the Subscription Management screen.
Improvements on the Subscription Management Screen
The Subscription Management Screen, while doing a great job centralizing all the aspects of a client’s subscription, was missing some crucial actions and information as well. WP Ultimo version 1.7.0 brings useful new options to that page.
Credit Card Information (Stripe)
You can now see the last digits of the user card and the card brand directly on the management screen. This might be useful when helping the customer figure out what might be the issue with their payment method.

Link to the Subscription on the Integrated Payment Dashboard (Stripe and PayPal)
Network admins are now one click away from the subscription on the Stripe or PayPal dashboard.

Canceling an Integration
A new button allowing the network admin to cancel a payment integration directly from the Subscription management screen was also added.

More information on the Sites List
As we have seen before, the Sites List widget now contains some actionable info about each of the sites belonging to this subscription. A new option to edit the Mappings was also added.
Registration and Login Improvements
Version 1.7.0 brings some long-awaited feature for registration and login as well.
Allow your clients to choose from more than one domain during sign-up
If you own multiple domains and want your users to be able to choose which one of them they would like to use on their own site, that’s now possible.
On WP Ultimo Settings > Network Settings, you’ll find the new option called Enable domain selection on sign-up.

Activating that option and entering your domains will result in a list being presented to the client on the Domain step of the sign-up:

Important: All the domains listed must have an A record pointing to the network IP address for the new sites to work.
Changing the Login URL and hiding wp-admin for non-logged users
WP Ultimo only offered a way to rename the wp-signup.php URL, leaving the wp-login.php untouched. That’s no longer the case as we now support rewriting that URL as well.
That means that you can have something like yoursite.com/login as the login page now.

A second option was also added, giving network admins the option to obfuscate the old login URL. When activated, this option will return a 404 page whenever a non-logged in user tries to access wp-login.php or /wp-admin. This is REALLY useful in order to prevent brute force attacks.
If this option is left unchecked, users accessing wp-login.php or /wp-admin will simply be redirected to the new login URL.
New Options for Plans
We also added some handy and highly requested features to the plan settings page.
Override the copy media setting on a per plan basis
Network admins can now override the global setting for copy media on each of the plans. This is useful if the network admin does not want to offer access to the images on free plans, for example.
This option can be found on the Plan Edit page, under the Advanced Options on the General Tab.

Allowing unlimited extra users is now possible
Unlike post type quotas, the user quota did not support allowing an unlimited number of extra users. This is now possible.

Other options added
We also added a bunch of new options for the plugin as a whole, including:
Grace Period on the Frontend Block
WP Ultimo allowed admins to block the front-end of clients’ sites if the subscription became inactive. Now, super admins can add an extra grace period before the site’s frontend gets locked.

Handling posts above the quota on Downgrades
WP Ultimo did not modify the status of posts on upgrade or downgrade. That meant that one client could hire the highest plan available, create lots of different pages and posts making use of the greater quotas and, after his or her site was ready, downgrade to a lower plan.
Now, WP Ultimo offers a few options for network admins to deal with this issue: they can either keep the default behavior and do nothing with the posts; they can move posts above the quota to the trash (without deleting them); or they can set the status of the posts above the quota to draft.

Search and Replace UI and API
WP Ultimo also has a Search and Replace UI that allows admin to add search and replace rules to be used on site duplication.
Although this is not so useful in its current form (since we don’t offer placeholders support on the UI yet), an API with that support is available. The documentation can be found here.

Domain Syncing Support for RunCloud.io
We also added RunClould.io as one of the supported hosting providers on our domain mapping syncing functionality. More info about how to get this to work here.
Beta Program
The release cycle of WP Ultimo will also suffer changes (for the better), with the addition of a Beta Program. Users that decide to join will be invited to update their versions when alpha, beta, and release-candidate releases get out. That way we can make sure we test new versions as much as possible before releasing them as stable.

To read more about the Beta Program and how to join, check this page on the Knowledge Base.
Other Improvements
- We now have filtering by plans on the Subscription list table;
- A new option to set a different logo for the login/signup page was added;
- The CPanel integration now supports WU_CPANEL_ROOT_DIR, allowing admins to change the root directory of the add-on domains (defaults to /public_html). The CPanel tutorial was updated to reflect that change;
- We added a filter to allow network admins to change the position of the Account menu item on the admin menu. Here’s a tutorial on how to do that.
Important Bug-fixes
- Some users were having problems with dates and times on Stripe not matching dates and times on the network. This was fixed. The only requirement is that you make sure your network main site and your Stripe account have the same timezone setting;
- The Limits and Quotas widget was not being displayed when super admin visited a sub-site. That was fixed;
- The CSV Export option on the Subscriptions list page now includes coupon code information and has the right number of columns;
- Admins were getting a strange email alerting them that the Admin of a site template had change every time a new site was created based on a Site Template. This was fixed;
- We added a wrapper div on the signup-main.php file, allowing background images and colors to be applied to the Sign-up page. This also fixes the incompatibility between Material WP styles and the Sign-up page of WP Ultimo;
- We replaced the PHPInvoicer version with the latest one to avoid old PHP deprecated notices;
- We also re-arranged some of the settings on WP Ultimo > Network Settings to keep things more organized and easy to find. Site Templates, for example, got its own section;
- Now network admins can hide sub-site admin widgets with a filter (read more: https://docs.wpultimo.com/knowledge-base/removing-the-wp-ultimo-widgets-from-the-clients-dashboard/);
Complete Changelog
* Fixed: Some wrong time formats being used on the codebase causing Stripe, PayPal and Ultimo Subscriptions to get 12h out of sync sometimes; * Fixed: Only register subscription status widgets when the user has a valid plan; * Fixed: Limits and Quotas widget not being displayed to super admins when visiting a sub-site; * Fixed: Export CSV with missing columns and containing coupon code info; * Fixed: Email alerting admin email change being sent on template duplication; * Fixed: Small incompatibility with the DIVI builder on the post edit page; * Improved: Plan filter options on the subscription list page; * Improved: We no longer display a success message when submitting the map domain form with no domain address; * Improved: Added an "Account page" link on the Payment Integration screen; * Improved: Added an option to customize the Payment Integration screen title; * Improved: Added an option to customize the Payment Integration screen description; * Improved: Added options to customize the gateway integration button labels; * Improved: Changed the signup-main template file, adding a new wrapper div to allow the body tag to take the whole screen, adding support to background images via CSS; * Improved: WP Ultimo sign-up flow now supports styles coming from Material WP; * Improved: Revised the account delete flow; * Improved: Added a filter to the site count calculator for subscriptions; * Improved: Visit counter now uses a ajax script to count visits to avoid problems with caching plugins - caching plugins supported: W3TC, WP Super Cache, WPEngine Cache and WPFastestCache; * Improved: Admins can reset visit count on the sub-sites' limits and quotas widget; * Improved: New email templates added for site removal and account removal (admin and user); * Improved: Added an option to set a different logo for the login and sign-up pages; * Improved: The CPanel integration now supports WU_CPANEL_ROOT_DIR, allowing admins to change the root directory of the add-on domains (defaults to /public_html). The CPanel tutorial was updated to reflect that change; * Improved: Added a handful of new filters to important parts of the wu-subscription model, allowing for greater extendability; * Improved: We now only display the disk space limit on the Account Statistics widget (client dashboard) when the disk space check is turned on in the Network Admin -> Settings -> Network Settings page; * Improved: Replaced the phpInvoicer version with the latest one to avoid old PHP deprecated notices; * Improved: Re-arranged some of the settings on WP Ultimo -> Network Settings to keep things more organized and easy to find; * Improved: Sites lists now have easy link to reset visits count; * Added: Beta Program, allowing network admins to receive notification of alpha, beta and release-candidate updates; * Added: Super Admins can now allow users to choose from multiple domains for their site during the sign-up process; * Added: Network admins can hide sub-site admin widgets with a filter (read more: https://docs.wpultimo.com/knowledge-base/removing-the-wp-ultimo-widgets-from-the-clients-dashboard/); * Added: Network admins can now change the login URL from wp-login.php to something else; It also supports obfuscation of the old wp-login.php URL, preventing brute-force attacks; * Added: Super admins can now set a grace period before finally locking down the users' frontend; * Added: Super Admins can now set the "copy media" option on a per plan basis, under the advanced options portion of the Plan edit page; * Added: Super Admins now can set the extra users plan quota to unlimited as well; * Added: RunCloud.io support! Domains get automagically added to the RunCloud web-app domains panel after mapping; * Added: Two new alert emails for monthly visits limits (limit approaching and limit reached) added; * Added: Network admins can decide how to handle posts types above quota (do nothing, move to trash or mark as drafts); * Added: Search and Replace UI on WP Ultimo Settings -> Network Options; * Added: Support to setup fees on plans; * Added: Support to single charges (Stripe and Manual); * Added: The current card being used for payment is displayed on the Accounts page and Subscription management screen, if using Stripe; * Added: Admins can now cancel the payment integration directly from the Subscription Management screen; * Added: Clients can now updated their card info on the Accounts page, if using Stripe;