WP Ultimo - Easily Create a Premium Network of Sites

WP Ultimo - Easily Create a Premium Network of Sites

WP Ultimo

WP Ultimo is the ultimate tool to create a premium network of websites – like – on your WordPress Multisite install. You can create unlimited plans, coupons codes and easily manage your network subscriptions.


  • Unlimited Plans: You can easily create unlimited plans with different limitations, such as post limits per post types, disk space, and even themes and plugins available.
  • 5 minutes Install: WP Ultimo ships with an amazing 5 minutes wizard to help you set up your network!
  • Stripe and PayPal Gateways: WP Ultimo comes with Stripe and PayPal support out-of-the-box. More gateways will come as add-ons in the future.
  • Easily manage Subscriptions: Manage subscriptions in a beautiful and concise control panel.
  • Refunds: You can easily issue refunds directly from the admin panel;
  • Coupon Codes: You can create unlimited coupon codes.
  • Site Templates: You can let your potential costumer select site templates during the sign-up flow, or select a specific template per plan.
  • Beautiful Sign-up Flow: WP Ultimo features one of the most beautiful sign-up flows available on the market (check our demo and screenshots).

Let us know in the comments section if you have any questions at all.


- Fixed: "Select Template" showing up in the site template previewer when in shortcode context;
- Fixed: Template Previewer is handling SSL for subdomains in the right way now;
- Fixed: Template Previewer taking into account the plan selected previously, to display only the templates available for that selected plan;
- Fixed: "www." appearing on the site-url previewer;
- Fixed: Incompatibility with WP All Import WooCommerce Add-on;
- Fixed: Small portion of the bottom of the site preview being cut off on the Previewer screen;
- Fixed: Users with Subscriptions created with no sites can now create sites from the panel without getting a "no permissions" error;
- Fixed: Missing variable on domain mapping causing redirect errors in edge cases;
- Fixed: Auto-login after registration not working in some environments;
- Fixed: Invoice generator not being able to handle filenames with special characters and throwing errors;
- Improved: Re-phrased the Sunrise.php check step on the Setup Wizard to make clear that users must add the define('SUNRISE', true); line above the /* That's all, stop editing! Happy blogging. */;
- Improved: Added extra check on subscriptions to make sure free subscriptions are not getting expiring & expired notification emails;
- Improved: Reorganized the broadcasts screen to add a preview block and to clean up the send form;
- Improved: Added a login link on the "Site is not available" screen for admins to log in when "Block Front-end Access" is enabled;
- Improved: Replaced the old "No Preview" image with something less intrusive;
- Improved: Re-adjust the aspect ratio (320x179) of the template preview blocks to match the new resolution returned by the screenshot scraper;
- Improved: Adopted a more aggressive minification strategy for WP Ultimo scripts, boosting performance and reducing file sizes up to 50%;
- Improved: Making sure dbDelta does not dirty the logs with database errors on activation;
- Improved: Added a filter to allow developers to add custom meta to sites after site creation on the signup;
- Added: Option to prevent search engines from indexing template sites;
- Added: New feature allowing users to switch templates after sign-up;
- Added: New feature allowing admins to add a visit limit for plans;
- Added: New feature allowing admins to overwrite the trial settings on the plan edit page;
- Added: Different listing option on the Network Admin -> Sites page to list only Template sites;
- Added: Webhooks! Support for 8 events (Account Created, Account Deleted, Payment Received, Successful Payment, Failed Payment, Refund Issued, Plan Changes, New Domain Mapping), more will be added as we go;
- Added: WP Engine support! Domains get automagically added to the WP Engine panel after mapping;
- Added: Cloudways support! Domains get automagically added to the Cloudways panel after mapping;
- Added: Jumper UI that allows admin to easily switch between admin pages;
Version 1.5.5 - 07/03/2018
- Fixed: Change plan was not triggering role change and meta update of plan_id on the user;
- Fixed: We now force avatar display on our pages even when that option is disabled on the main site settings;
- Fixed: Customizer not loading preview in when a mapped domain is active;
- Fixed: Domain Mapping box on User Account page now gets the right URL for CNAME for Multisite installs running inside a directory (like, for example);
- Fixed: Subscription being marked as "trialing" wrongfully because weak type checking of the trial days attribute;
- Fixed: When a site template was no longer available, a "false" option would be displayed in the template selection screens during sign-up;
- Fixed: Fixed on the double animation effect on the princing table frequency selector;
- Important: We now use the locale of the user to render the Stripe box - Support languages: zh, da, nl, en, fi, fr, de, it, ja, no, es, sv;
- Improved: Changing the trial now updates the active until, to make sure we correctly categorize subscriptions as "on-hold";
- Improved: The quotas widget is now always hidden to the subscriber role;
- Added: Coupons now support limitations by plan and billing frequencies;
- Added: Top-bar added on the template preview page;
- Added: Notification Emails added for expiring and expired subscriptions;
- Added: Notification Emails added for expiring and expired trial periods;
- Added: Option to Activate and Deactivate plugins for plans directly from the Plugin Screen in the network admin;
Version 1.5.4 - 11/02/2018
- Fixed: Active until "remaining" string on the subscription was returning trial values instead of the right value;
- Fixed: "Block Frontend Access" option was not working;
- Fixed: Added the 'key' keyword to the sensitive info filter to prevent info like the MailChimp key from leaking into the frontend settings array;
- Fixed: Added extra checks to the invoice generation process;
- Fixed: Edge-case where broadcasts messages where being displayed to non-targeted users;
- Fixed: Subscriptions created by the panel now use the default role set in the Settings, which is also filterable;
- Improved: Email Blocks on the Settings -> Emails now is displayed with a lower opacity if that email is disabled;
- Improved: Post Type limits now handle singular and plural limits. "1 Post" and "10 Posts", for example;
- Improved: "/mo", "yoursite" string present on pricing table added as a translatable string;
- Improved: Subscriptions list table now displays Gravatars to make things a bit more personal and colorful =);
- Improved: Replaced jQueryUI DateTimePicker with FlatPickr;
- Added: Support for modifying subscription dates by the hour and minute, to allow further control;
- Added: Server time clock on the top bar to help admins when managing subscriptions;
- Added: Activity Stream widget on the Network Dashboard;
- Added: Notification email to let the network admin know when a user mapped a new domain to his site (thanks, Simon, for the suggestion);
- Added: Added plan and billing frequency fields on the Subscription -> Add New page;
- Added: New engine to install setting defaults without evoking loops;
- Added: Post Type Block: Super admins can block specific post types based on the user's subscription plan;
- Added: Role per plan: Super admins can now select a role to be used when the user signs up with a particular plan;
- Added: Template Options per plan: Super admins can now filter which templates will be available in the template selection step based on the plan selected;
Version 1.5.3 - 02/02/2018
- Fixed: Reverted admin options code to 1.5.0, since some users are still reporting CPU and Memory spikes;
- Fixed: Removed source-maps from final build to avoid 404 appearing on the console;
Version 1.5.2 - 31/01/2018
- Fixed: CPU and Memory spike due to the new default setting getter function going into an infinity loop in certain cases;
- Fixed: Subscription save now clears the sites object cache to fix incompatibility with Redis - thanks Jorge, for the report;
Version 1.5.1 - 24/01/2018
- Fixed: Shortcode wu_plan_link now treats the results to avoid issues;
- Fixed: Space quota updating when the plan is changed from the subscription management screen as well;
- Fixed: Add New Users from the sub-sites were not sending invitation email;
- Fixed: Small fix on the dutch translation file that was causing the Terms link to be broken;
- Fixed: Get allowed themes for individual sites now return an empty array by default to prevent warnings;
- Fixed: Subscriptions created via the Add New admin menu were not being saved;
- Fixed: WU_Signup not working on sites running on sub-folders;
- Fixed: Country selector not working as intended;
- Fixed: Front-end blocking does not prevent the Payment Screen from showing up;
- Improved: Filter to remove the H1 from the template selection step (wu_step_template_display_header);
- Improved: Explicit mention that WP Ultimo is under GPLv2 on both plugin and readme headers;
- Improved: Sunrise.php now will continue to work if the admin moves the plugins folder to a different location;
- Improved: Sunrise.php is now versioned and will display a message when a new version is received, with automatic replacing with just one click;
- Improved: Replaced the engine generating the .pot file with the same one being used by WordPress Core;
- Improved: Plans List on the Change Plan widget are now displayed horizontally to make sure they all fit (useful for networks with a lot of plans);
- Added: Top-bar navigation when visiting templates;
- Added: French translation, thanks to @nouvelletechno;
- Added: Spanish translation, thanks to Matias Candia;
- Added: Alert message being displayed to the user asking for confirmation when he/her tries to add a custom domain;
Version 1.5.0 - 04/11/2017
- Fixed: Manual Gateway handling upgrades and downgrades;
- Fixed: Change plan sometimes not updating the disk space quota of blogs;
- Fixed: Added edge case to domain mapping and the get_scheme function, to allow more flexibility to sub-domains installs using mapped domains;
- Fixed: Manual Gateway now checks if it should send the invoice on integration;
- Fixed: Incompatibility with Sitemap generators (thanks, Aron Prins =D);
- Fixed: Now WP Ultimo adds the original URL to the allowed cross-origin access array, to further prevent CORS issues;
- Fixed: Issue with sign-up redirects not being exact;
- Fixed: Relative time string on the Subscription page now support time spans larger than one year;
- Fixed: When the copy media option is disabled, we now remove the attachment posts related to each media file;
- Fixed: Small issue with creating new sites in some specific database environments;
- Fixed: Setup wizard link on the Mercator error message was broken;
- Fixed: We now check if the Stripe API was already loaded, to prevent fatal errors;
- Fixed: User creation now is timezone-sensitive, preventing delays in invoices and payments;
- Fixed: Spacing of integration buttons fixed;
- Improved: Multi-select fields on the Settings now can be sorted. That allow users to change the order of the allowed templates, for example;
- Improved: New option 'display_force' added to password fields. If checked, it adds a strength checker below the password field. More information: 
- Improved: Form Fields helper function now gives the option to change the default value of the billing frequency field;
- Improved: Applied number_format to statistics widgets;
- Improved: "Instructions to Pay" field on Manual Gateway now supports is now a WP Editor field;
- Improved: Updated the Dutch language files - Thanks, Aron Prins;
- Improved: Moved the Domain Mapping and SSL settings to their own Settings Tab;
- Improved: SSL Settings Summary widget on the Settings page to help visualizing the SSL configuration;
- Added: Geo-location block added;
- Added: Restricted Content shortcode for plans and default content; More information: 
- Added: New shortcode with the front-end URL of a user's site for the create account template email (WP Ultimo -> Emails);
- Added: Option to enable/disable SSO with enabled as the default behavior;
- Added: Manual Gateway now displays link to a modal containing Instructions to Pay in the pending payment row in the Billing History widget;
- Added: Table Updater checker added, to make sure custom tables are always in sync with their latest version;
Version 1.4.3 - 31/08/2017
- Fixed: Fatal errors on activation on single installs;
- Fixed: Welcome email not being sent after user sign-up;
- Fixed: Shortcode plan_link using echo, should use return;
- Improved: Removed plan_id and plan_freq from the filtering function, and now they get saved as meta on the user;
- Improved: Minor changes to the Manual Gateway to avoid conflicts with the WooCommerce Integration Add-on and all future gateways supporting the 'on-hold' status;
- Improved: Added the WP Ultimo as top-level menu on the admin bar;
- Improved: Sign-up customization steps only show in the main site now;
- Added: Essential changes to allow the WooCommerce Integration to work;
- Added: Filter on the metadata array sent to Stripe, to allow admins to add info they want to send to Stripe;
- Added: Filters to allow better customization of invoices sent: wu_invoice_from, wu_invoice_to, wu_invoice_bottom_message;
- Added: Reset Password now uses the same WP Ultimo template, even when WooCommerce is activated on the main site;
Version 1.4.2 - 18/08/2017
- Fixed: Redirect error using the wu_plan_link shortcode;
- Fixed: Customizer bug onload;
- Fixed: Coupon on wu_plan_link;
- Fixed: Plan save requiring monthly pricing even if that billing option is not available;
- Fixed: Added the 'manage_network' capability as a requirement to access all WP Ultimo Registration settings on the customizer;
- Improved: Replaced the approach of the site creation engine from the admin panel with the new one introduced on 1.4.0;
- Improved: Replaced the support email with the new one;
- Added: Network admins now can add new payments manually directly from the subscription management page;
- Added: New option to duplicate templates on the Network Sites list;
Version 1.4.1 - 10/08/2017
- Fixed: Change Plans not displaying pricing tables;
- Fixed: Pricing table shortcode was landing on the plan step again after a plan was selected;
- Fixed: Removed logs folder check from the setup wizard;
- Added: Option to toggle the cron-job of the Screenshot Scraper;
Version 1.4.0 - 08/08/2017
- Release Notes:
- Added: Option to copy Coupon's shareable links on the All Plans and Edit Plan pages;
- Added: Templates overriding for sign-up and emails;
- Added: Helper function to create users with subscriptions: wu_create_user();
- Added: Helper function to create a new WP Ultimo network site: wu_create_site();
- Added: Fields and Steps API to the Sign-up flow;
- Added: Helper function to add new sign-up steps: wu_add_signup_step();
- Added: Helper function to add new sign-up fields: wu_add_signup_field();
- Added: Deleting users and sites now removes the mappings associated with those sites;
- Added: Option on the Email Settings to allow plain emails to be sent;
- Added: Logs are now downloadable and delectable;
- Added: Option to hide the Plan Selection step if there is just one plan available on the platform;
- Added: Three different behaviors added to Coupon Code: disabled entirely, only via URL code or via URL code and Sign-up field;
- Added: New shortcode wu_user_meta to retrieve user meta information on the front-end. Useful for retrieving information collected during sign-up using custom fields;
- Improved: Shortcode wu_plan_link updated to work with the new Sign-up codebase;
- Improved: WP Ultimo now checks for empty user role options to rebuild them if needed;
- Improved: WP Ultimo now only displays broadcasts published after a user on the target group registered. This prevents new users from being bombarded by all the previously published Broadcasts;
- Improved: Better template selection field;
- Improved: Refactorization of the Screenshot Scraper: it now can handle up to ~80 without crashing;
- Fixed: WU_Colors being added more than once;
- Fixed: Coupon validation functions was not checking for post type, only for post titles;
- Fixed: Fixed some broken elements on the Coupon Codes list table;
- Fixed: Links breaking on Broadcasted emails;
- Fixed: Missing variable declarations inside template_list and pricing_table shortcodes;
- Fixed: Broadcast emails now supports multiple lines;
Version 1.3.3 - 19/07/2017
- Fixed: Issue with logs folder being located inside the plugin directory and, as a consequence, being wiped out on every update;
- Fixed: Non-numeric errors being thrown on the Account page when Quarterly and Yearly billing frequencies were disabled on PHP 7.1;
- Fixed: Error on the redirect URL filter after integration;
- Fixed: Manual Gateway applying coupon codes;
- Added: Log viewer added to the System Info page as a separate tab;
- Added: CSV Exporter for Subscriptions on the Subscriptions Page;
- Added: Option to select which Quota options will be displayed on the quota widget of the users' dashboard on WP Ultimo Settings -> General Tab;
Version 1.3.2 - 14/07/2017
- Fixed: Changed the order of Stripes Secret and Publishable keys on the settings to match the order on the Stripe Dashboard, avoiding confusion;
- Fixed: Site_Hooks::get_available_templates() now returns sites without a valid owner as well;
- Fixed: Default role not being applied to new sites created from the dashboard;
- Fixed: Stripe Gateway now communicates the discount applied to the subscription on the modal window for payment;
- Fixed: Template creation now handles a few edge cases preventing those sites from appearing on the available templates list;
- Critical Fixed: Site creation from admin always being created for the super admin;
- Improved: Added a new option to change the default behavior of plugin uninstall: now the default state is to not wipe plugin data;
- Improved: Added current plan to the change plan hook;
- Improved: Remove Terms of Service contents from System Info page;
Version 1.3.1 - 05/07/2017
- Fixed: Variable dump on sign up preventing redirect to the admin panel;
- Fixed: Reverted the duplication script to the default tables only;
Version 1.3.0 - 03/07/2017
- Release Notes:
- Fixed: Small issues with the template selection screen;
- Fixed: Email content editor saving URLs in a weird way, adding slashes;
- Fixed: Site Template description not being saved on the "Edit Template Info" screen;
- Fixed: Variable Dump including sensitive information;
- Fixed: Plan re-ordering not working on different languages;
- Fixed: WP Ultimo icon on multi-network;
- Fixed: Terms of Service field adding extra "\" after quotes;
- Fixed: Error on creating new sites from the admin panel with a plan and template;
- Improved: Uploads Quota can now be set as hidden on the plan pricing tables;
- Improved: Prefixed SweetAlert to avoid conflicts with other plugins;
- Improved: Replaced the content field for email templates with WP Editor;
- Improved: Added an ID to each plan HTML markup on the pricing tables;
- Improved: Added an extra check to the domain mapping (now called System) step on the Setup Wizard, to check if the right version of sunrise.php was loaded;
- Improved: Added an extra check to the System step on the Setup Wizard to make sure the logs directory exists and is writable;
- Improved: The features list field now uses a WP Editor widget, to allow the addition of bold text, italic, and links without editing HTML code, the same applies to the Broadcast message field;
- Improved: Add-ons page now handles installs for free add-ons;
- Improved: Duplicator now copies extra tables as well;
- Improved: Added hooks for adding extra elements to the Advanced Options on the edit plan and coupon pages;
- Added: wu_templates_list Shortcode added to display all the available templates on the front-end;
- Added: Warning message on the System Info tab if the logs directory is not properly configured to be writable;
- Added: Filters to change the labels and tooltip texts on the signup fields;
- Added: Option to enable or disable copying media files from the template sites;
- Added: Support to Multi-Network Environment (beta);
- Added: Readded the SSO script for single sign-on login;
- Added: Widget for Forum Discussions on the Network Admin;
Version 1.2.1 - 26/05/2017
- Fixed: Template categories sometimes appearing two times;
- Fixed: Not being able to remove items from pricing tables for plans;
- Fixed: Pagination on Subscriptions page take status into consideration now;
- Fixed: Weird redirects when enabling domain mapping;
- Fixed: Mercator error message being displayed even when the enable domain mapping option was deactivated;
- Fixed: WordPress Overwrite options on WP Ultimo Settings - Network not saving properly;
- Fixed: Prefixed the bootstrap classes we use;
- Fixed: Problem with template selection with resolutions under 780px and console messages;
- Fixed: Removed the payment step due to login inconsistency across different environment;
- Improved: Added a new style to the WP Error page to make it more consistent with the rest of the plugin, including the "Payment Required Needed";
- Improved: Switched screenshot scraper from file_get_contents to cURL for a 50% performance improvement;
- Improved: Added a more robust capabilities system to limit access to the Account page;
- Improved: Custom domain meta box now gives an error if the user tries to input a domain already being used in the network;
- Added: Shortcode wu_plan_link added to be used in custom pricing tables, use with plan_id and plan_freq;
- Added: Template selector turns into a select-box on resolutions under 780px;
- Added: Admins can search subscriptions on the subscriptions List Table - with ajax;
- Added: Terms of Service now can be set using a full-fledged editor, with prettier exhibition on the front-end;
- Issues: Removed SSO temporarily in order to prevent bugs from redirect loops until we can find a solution to the issues we are having with it.
Version 1.2.0 - 12/05/2017
- Fixed: Small typos on the settings page and other places;
- Fixed: Some string were missing i18n on the subscription management screen;
- Improved: Add-ons page now supports filtering as well;
- Improved: Security on issuing refunds;
- Added: Support for zero decimal currencies in Stripe;
- Added: Site Template Categories with filtering on the Signup, and a more consistent UI for editing site templates on the backend;
- Added: Option to hide plans from the pricing tables;
- Added: 100% OFF coupon codes with unlimited cycles don't ask for payment integration any longer;
- Added: Users can now add new sites from their panels, and admins can limit the number of sites on each plan.
- Added: Sites list added to the Subscription Management (admin) and My Account (user) Pages;
- Added: Custom capability 'manage_wu_account' created to control access to the Account page;
- Added: Network Admins can now set a different role for the users created via the signup process (defaults to admin);
- Added: Network Admins can now create subscriptions for users created outside of the signup flow (useful for migrating existing users);
- Added: Network Admins can now remove subscriptions from the Subscriptions list;
- Added: Payment is now a Signup Step when there is no trial;
- Added: Subscription is no longer deleted when a site is;
- Added: Option to send invoices when a payment is received from the gateways;
- Added: Manual Payments Gateway (beta);
- Removed: Old UI on site settings to add thumbnail;
Version 1.1.5 - 24/04/2017
- Fixed: Remote calls for activation API returning non-numerical values;
- Fixed: Formatting errors on Subscription values Gateways;
- Fixed: Small issues with resetting passwords;
- Fixed: Network active plugins do not show up on the subsites plugins page anymore;
- Fixed: Some small issues when creating sites from the panel using a plan;
- Improved: Added the all_plugins filter to the Plans advanced settings;
- Improved: Settings API now let us pass default values to the get_setting function;
- Improved: Settings API now allows add-ons to save their defaults on plugin activation;
- Improved: Core settings of WP Ultimo are now displayed on the System Info page as well;
- Improved: Image fields in the Settings now supports the removal of a previously uploaded image;
- Improved: WP Ultimo now saves the defaults when new options are added to it;
- Added: Link to go back to previous steps added to sign up flow;
- Added: Admins can now disable monthly billing if they wish to do so;
- Added: Admins can highlight a different billing frequency by default (eg. You have monthly, quarterly and yearly billing enabled, but you want the yearly to be highlighted by default);
- Added: Broadcast system: admins can now post admin notices to sites network-wide, targeting by plan and user; they can also send emails using the same targeting system;
Version 1.1.4 - 07/04/2017
- Fixed: Subscriptions with price set to zero being locked anyways;
- Fixed: Small compatibility issue with Live Composer Page Builder;
- Fixed: Stripe behaving strangely with different decimal places configurations;
- Improved: Activation now only checks the license code remotely, not locally;
- Improved: Pricing tables now display an error message for logged users before redirecting them back to the home page;
- Added: Partial Vietnamese Translation (Thanks to Richard Tuan);
- Added: Now users can overwrite the list of allowed themes by enabling themes for each site individually;
- Added: Settings and Documentation links added to the plugins table on the network admin;
- Added: Add-on page now let users buy add-ons, also let those with pre-launch licenses install all available add-ons directly from the admin;
Version 1.1.3 - 31/03/2017
- Fixed: Adding sites from the admin panel not working;
- Fixed: JQuery UI Styles using HTTPS - Thanks, Richard;
- Fixed: Adding new users throwing a fatal because of a redirect in the PayPal gateway not being checked;
- Fixed: Ajax tables throwing order and orderby undefined indexes notice;
- Fixed: Delete links not clickable throughout the WordPress admin;
- Fixed: Validating URL that users enter as custom domain;
- Improved: Subscriptions now get deleted after the user is deleted;
- Improved: Removing unnecessary files;
- Improved: The template selection list now displays the site name, not its path (which did not work for subdomain installs);
- Added: Filter to change the redirect URL after login (tutorial:;
- Added: Admins now have the option to hide specific post types from the pricing tables;
- Added: The network IP setting now displays the apparent IP address of the network by default;
- Added: Option to remove invalid subscriptions (subscriptions without user);
- Added: System Info page, to allow for faster debug and troubleshooting with support requests;
- Added: Shortcut buttons to extend and remove time from a subscription, via ajax;
Version 1.1.2 - 24/03/2017
- Fixed: Prevented the creation of tables on activation when they already exist;
- Added: Hooks on the gateway payment notifications to allow integrations;
- Fixed: Subscription creation adding an extra day to the active_until parameter of a subscription;
- Added: Manage Subscriptions link to the topbar WP Ultimo Menu;
- Fixed: Toggle of metaboxes in our admin pages now work properly;
- Fixed: Plan upgrade not working when upgrading from a free plan;
- Fixed: Language files not being loaded;
- Fixed: Free subscription being displayed as inactive in the subscription panel;
- Fixed: Small spelling errors;
- Added: Partial translation to Brazilian Portuguese (Signup Flow only);
- Improvement: Requirements engine in our Settings API now supports multiple requirements;
- Fixed: Some issues with the creation of sites from the admin panel;
- Added: PayPal Subscription button added as an option on the PayPal Gateway;