Skip to content

Releases: Freemius/wordpress-sdk

New In-Dashboard Checkout, Security Fixes, Better Logging.

10 Mar 22:46
Compare
Choose a tag to compare

New In-Dashboard Checkout

We have finally deprecated the current in-dashboard checkout and replaced it with the new checkout we use for Freemius Checkout. It will help us to be even agiler when it comes to changes and maintenance of the checkout form (only one code base). Plus, the new checkout is written in angular which makes it more sustainable for the long run.

image

This also means that the new in-dashboard checkout is now fully responsive! With an optimized mobile UX enabling easy purchase experience from any mobile device.
wp-admin-checkout-iphone6plus-with-frame

Some of you customized the checkout page with custom CSS stylesheet. Before you update to the latest SDK, make sure to adjust the CSS rules to work with the new checkout.

The "legacy" checkout will continue to be fully functional for backward compatibility. But, we won't be extending its functionality anymore nor fixing any future revealed bugs.

Security Fixes

  1. We discovered that many sites exposing their filesystem structure when typing a direct path to a folder without an index.php file. Besides the fact that it's insecure to expose your files/folders structure, search engine crawlers are indexing those pages. Therefore, we've added empty index.php files to all the SDK folders.

  2. XSS fix. We received a report from a fellow developer (Marcus Skies from Events Manager plugin) about unescaped string in the SDK. Indeed, we forgot to escape an optional error message on failed opt-in. The reason we didn't contact anyone is that the opt-in page is only available to users who have permissions to the WP Admin settings page. So if the user already had login access to that admin page, they can execute any JavaScript code anyway.

Translations

  1. The SDK is now almost fully localized to Japanese!!! Many thanks to Takayuki Miyauchi, @8bitOdyssey, Hidetaka Okamoto, Tomohyco Tsunoda. The SDK was actually fully localized, but we kept adding more features to the current version which came with additional strings.
    If you speak another language besides English, be awesome and help us translating the SDK to more languages:
    https://www.transifex.com/freemius/wordpress-sdk/dashboard/

  2. WP.org translations mechanism doesn't support more than one text-domain. I won't dive deep into the reason why we think it could be improved by supporting more than one, but what this means in practice is that even if you had only a few localized strings in your plugin or theme, by adding the Freemius SDK, the translations mechanism were automatically adding hundreds of strings to your product.
    Since the translation of strings is made per product, they all would have to be translated (even if they were already fully translated in a different plugin or theme, ignoring the translations that the SDK coming with).
    Joachim Jensen helped us solving that problem by wrapping all the methods in new ones and enriching the Gulp script that extracts the text domain related strings. So from now on the Freemius SDK strings won't be extracted by WordPress.org and won't affect your translations efforts. Thank you @intoxstudio!

Logging

Do to the complexity of the WordPress SDK that combines synchronous execution, WP-Cron, and AJAX calls. Inline logging is not enough to resolve edge cases. As we grow, the SDK is becoming more and more stable, having said that, we still see issues related to corruption in the Freemius data records. Those edge cases usually require production debugging from our end (WP Admin + FTP Access). We want to reduce that and investigate more issues on our end. Therefore, we enriched our logger for multi-session persistent DB logging with export capabilities. In plain words, when you turn on the debugging mode, the SDK will create a custom logging table and will start storing everything that happens with the SDK (whether it's synchronous or asynchronous requests). Then, you can download a CSV dump of that logs and send it to us for further investigation. Turning off the debug mode will drop the custom logging table (don't forget to turn it off!).

image

How to access the debug page?

To access Freemius debug page, go to https://path.to/site/wp-admin/admin.php?page=freemius.

How to turn the debug mode?

Click the Debugging switch:
image

Misc

  • We now fully support the use-case of plugins/themes without any setting page.
  • We've added a new Change License button to the Account page for changing the currently activated license:
    image
    This is helpful for developers who like to change the license key to the client's key before giving the site away to the client.
    Always show the deactivation feedback form since we added automatic free version deactivation upon premium code activation.
  • Serviceware mode: We've adjusted the SDK to work for Serviceware products without a premium code version. This unique mode hides all labels related to the plugin’s code type and the download instructions after upgrading. This mode was originally developed for Replyable which uses it a few months already, and we hope to see more services start using Freemius.
  • We improved the license key sender form to show the current's WP Admin email address.
    image
    The reasoning behind it is that when a customer upgrades from within the dashboard, if they opted-in before, we auto populate the email address to the checkout form, and sometimes customers ignore that filled and later forgot what was the email address they've used for the upgrade. This should solve that!
  • Better mechanism to test product updates: When running the SDK in dev mode with the secret key - deployed and unreleased versions are now will be available via the updates mechanism. That's another step for making testing easier, so you can test the version update mode of your version before releasing it to your users.
    Following this feature, we can relatively easily add a capability for beta testers. Users will be able to opt-in into becoming beta testers, and they will get the initial releases of your plugin (free or paid) before others. If that something that you'd want to see coming, let us know in the comments.

Version Contributors

Leo Fajardo
Vova Feldman
Joachim Jensen
Rami Yushuvaev

Official release notes: https://freemius.com/blog/dunning-in-dashboard-checkout-site-trials-march/

Mega Release!

13 Dec 23:27
Compare
Choose a tag to compare

Better Upgrade Flow

With the new SDK, users no longer need to deactivate the free version before activating the premium one. This is a huge improvement to the after upgrade user-experience that we are really proud of making it happen! (Kudos to @fajardoleo).

We updated the after upgrade admin notice and also the emails will be tweaked for users that are running the new SDK during the upgrade.

Obviously, a seamless experience would be automatically installing the premium version, but unfortunately, it is still against the wp.org guidelines.

Better Control for Usage Tracking

Users that opted-in can now disable/re-enable usage-tracking by clicking on a new link in the plugins page named "Opt-Out/In". The opt-out click will trigger the following confirmation message:

image

If the user opt-out it will be tracked with a new event labeled `install.disconnected' that you can see in the user's profile page on the Freemius dashboard.

Users that skipped the initial opt-in will be now able to click the "Opt-In" link in the plugins page to redirect to the opt-in screen.

The opt-out option will only be available for free users to maintain premium plugin version updates from the API. Also, if the user opted out and later upgraded, they will be automatically re-opted in for the same reason.

In addition, we added a special method that returns a magic URL that you can add to your settings and re-prompt the users that skipped, to opt-in again (Issue #42). Here's the simplest usage:

<?php if ( my_freemius()->is_anonymous() ) : ?>
<a href="<?php echo my_freemius()->get_reconnect_url() ?>">Re-Connect</a>
<?php endif ?>

Trials for Everyone!

We made a huge update in our trial mechanism which was only working for opted-in users so users who've skipped can get trials as well. Here's how this mechanism works:

  1. After 24 hours from the plugin installation (or update with Freemius for the first time), a promotional admin notice will appear with a trial CTA:
    image
  2. If you want the trial to work for the skipped users, since we can't pull any data from the Freemius API, you'll have to add new special params we've added to your init_sdk method. The easiest way would be to login to your Freemius Dashboard, and copy the updated code from the SDK INTEGRATION page.
  3. In addition to the admin notice, the Upgrade submenu item will change it's label to Start Trial and the color will match the blue color of the promotional admin notice:
    image
    And if you have a top-level menu item, it will automatically add a pretty counter to even attract more attention:
    image
  4. When the user clicks on any of the buttons, the pricing page will load in trial mode and will identify if the site is eligible for a trial based on the WordPress home URL, allowing the same user to start a trial on multiple sites.
  5. Clicking the trial start button will prompt the user with a confirmation dialog box, a contextual "opt-in" modal that explains the user why we need to capture his data:
    image

If the user confirms, they will be opted-in, and the trial will start right away.

Testing The Trials
Instead of waiting for 24-hours to trigger the trial promotion, we've added a new button to the Freemius Debug page which you can click and will start the promotional notice right away (if eligible):
image

Also, the multi-site license prices are now hidden when viewing the pricing page in trial mode.

100% Coupon Code ;)

After numerous requests, we managed to prioritize this use-case, and it's now fully supported (both from within the dashboard + Freemius Checkout).

Editable Billing Business Information

So far users billing information was only editable in the Freemius Developer dashboard. We noticed it triggered support tickets, especially from European business customers, asking to update the billing information on their invoices. Therefore, we enriched the billing tab on the account page so customers can update their billing information themselves to get rid of those support requests and make it "self-served":

image

Conversion Optimization

We changed the default color of the Upgrade button to light green. It will only affect non-paying users:
image

We've experimented that with RatingWidget and noticed better conversion. And it makes more sense, simply more people notice it :)

You can easily modify the color to whatever you want by adding the following CSS:
.fs-submenu-item.pricing.upgrade-mode { color: yellow }

WordPress.org Compliance

Due to recent updates in the .org guidelines, we approved a new default opt-in message for new users directly with the review team:

Never miss an important update -- opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with freemius.com

It took us a while to get to this messaging, as you can see, it highlights the benefits of opting in, instead of asking a favor.

Other

  1. This version introduces new filters enabling an override of all sticky messages (messages with a "dismiss" button). The filters structure is sticky_message_{$messageID} and sticky_title_{$messageID}. You can add those filters with my_freemius->add_filter().
  2. Added a downgrade button to premium add-ons in the Account page.
  3. API Connectivity issues admin notices will be now also shown for users running a premium code version. These notices are an important feedback mechanism that outputs the reason for the connectivity issue and provides troubleshooting solutions (when possible). We still haven't figure out what to do when domain lookup is failing. We were sure it's cURL specific issue, but after doing some debugging on a customer with that problem, also the WordPress native "streams" HTTP API fails for the same reason. We understand it's annoying and adds some burden to the support (we feel you). That's still a work in progress...
  4. Bug Fix: WordPress core changed their wp_nonce_url() which causes a redirect to an empty page after activating a license using the link from the plugins page.
  5. This SDK introduces a new permission request that will be added by default to the opt-in screen:
    image
    First of all - it's a great way to set expectations with users by letting them know that your product will periodically show admin notices. Secondary... I can't tell yet, but we are cooking a new revolutionary killer feature! (in stealth mode).

Official release notes: https://freemius.com/blog/december-2016-wordpress-skd-release-notes/

Localization + License Sync + Deactivation Form

22 Sep 18:56
Compare
Choose a tag to compare

This is a major release (more than 80 commits) with a bunch of enhancements and one crucial license related bug fix for developers who monetize with Freemius.

Bug Fixes

  1. [Major] There was a problem with the daily wp-cron execution for plugins and themes with a premium offering. This issue sometimes caused to a license expiration, even though payments were successfully processed. If you monetize with Freemius and your module supports monthly payments, I would highly recommend updating the SDK asap.
  2. Submenu items are now inheriting permissions from the parent menu item (issue #81).
  3. Fixed discount calculations with annual and multi-site licensing (issue #79).

Localization

We are finally loading Freemius translations using load_plugin_textdomain(). The SDK is fully translated into English and Italian (thanks to Alessandro Benassi), it would be awesome if you can help us translating to additional languages.

Deactivation Feedback Form Enhancements

  1. The order of the uninstallation reasons is now randomized. By randomizing the order, if a subset of the users is just picking the 1st option, it will be equally distributed, and will help devs to identify the main uninstallation reasons by removing the noise.
  2. Even if the user skipped the opt-in mechanism, we added an option to be identified when sending uninstallation feedback: plugins wordpress wordpress

This gives the ability to contact with users who deactivated and didn't opt-in (unless they check the anonymous feedback box).

After Upgrade Instructions

We've improved the admin notice triggered after a successful upgrade process (thanks to the guys at @fooplugins):
14269655_10153674887447890_890824466_n

Mobile Friendly

We adjusted the in-dashboard Contact us page to be responsive and work well on mobile. We'll be working on making the pricing and checkout pages responsive as well.

Official release notes: https://freemius.com/blog/septmber-2016-wordpress-sdk-release-notes/

Localization related bug fixes + License related enhancements

17 Aug 20:37
Compare
Choose a tag to compare

This is a major version release (89 commits) with many important bug fixes and significant enhancement of the licensing mechanism for the paid plugin authors.

Bug Fixes

  1. Quotes Localization: I'm not going to dive deep here, but there was a problem with quotes localization due to the early call of get_plugin_data() in the SDK. The problem was fixed. Click here to learn more.
  2. Updates Mechanism: When a user had both the free plugin version and the premium plugin version installed in parallel, version updates were not showing for the premium version in plugins.php page until the free version was uninstalled.
  3. Free plugin version uninstallation: Uninstalling a free plugin version while the premium was running generated PHP errors due to the uninstall hook mechanism was unintentionally triggered.

Licensing

  1. Paying user who purchased a license outside the in-dashboard checkout, can now easily activate the license from the Account page by clicking the Activate License button:
    image
    image
    If the user can't find his license, we added a simple mechanism to email the license on the fly by clicking the Can't find your license key?:
    image
  2. We also added the same license recovery mechanism to the plugin's initial activation screen:
    image
  3. Users can now find their activated license key in the Account section:
    image

We understand the licensing management is a big hurdle and time waste in the WP plugins ecosystem, and we are doing our best to keep iterating and improving that mechanism, making it as seamless as we can. If you have any further suggestion on how we can improve it, please let us know!

Billing

Since at the moment users doesn't have a "Member Area" outside of the WP admin, we added a billing tab for paying customers where the user can see his billing history and easily print invoices:
image

The goal is to extend this area with other billing related components, like payment methods, billing address & company information (currently only editable via the developer's dashboard), etc.

Themes Support

We released the beta of our themes integration. If you have a theme and like to be part of the beta please send us a note to [themes AT freemius DOT com ] and we'll provide you with further details.

Happy SDK update!

Official release notes: https://freemius.com/blog/august-2016-wordpress-skd-release-notes/

New plugin install identification fix + License Key Activation

10 Jun 23:00
Compare
Choose a tag to compare

Bug Fixes

  1. Major bug fix for all devs using the "Activate Freemius only for new plugin installs" feature from the dashboard. We fixed the logic that determines if it's a new plugin install or a plugin update [aba9c51].
  2. Another important bug that we resolved related to licensing. When from some reason a license sync fails and the user tries to activate a license. So far the request was failing, since on our backed, the license was already activated and reached its quote. The fix check if the site is already associated with that license, and instead of trying to activate another license, it just syncs it [1746110].

License Key Activation

So far we were focused on freemium products monetization, and everything was API based directly from within the WP admin dashboard (no need for keys). With the recent launch of Freemius Checkout we introduced the concept of license keys. Once a user installs a premium code version of a plugin, instead of just showing an opt-in, the user will be prompted to enter his license key:
image

For freemium plugins, the user would be able to click on Activate Free Version and just use the free features. While for premium only plugins, this option would not be available, and the user won't be able to use the plugin without a valid license key.

The additional benefit of the license keys concept is to prevent confusion when activating a multi-site license on siteX; that was purchased on siteY. The license key eliminates the process of the additional email authentication (assuming that if a user has a valid license key, he got it in his email), and also prevents the mess that happens when the wp admin user that tries to active the plugin on siteX has a different email then on siteY.

If the user used the plugin before on siteX, then purchased a license via Freemius Checkout, the user will be able to activate the license in the plugins page by clicking the Activate License link:
image

Here's what happens when it clicked:
image

We are still working on the after purchase email instruction changes, facilitating all the use-cases, while trying to keep the upgrade instructions short and sweet.

Official release notes: https://freemius.com/blog/june-2016-wordpress-skd-release-notes/

Submenu Visibility & Premium Auto-Updtes fixes

05 May 18:33
Compare
Choose a tag to compare
  1. Show submenu items like "Add-Ons", "Contact Us" & "Pricing" also when Freemius is turned off (skipped), or pending activation.
  2. Fixed the premium plugin version automatic updates mechanism.
  3. Following the .org team suggestion, modified the deactivation's form button label from "Deactivate" to "Skip & Deactivate" to make it even more clear that the feedback form is optional.
  4. Sticky messages are now hidden from non-admins.
  5. Added the option to programmatically start a plugin's trial (only for freemium plugins).

Official release notes: https://freemius.com/blog/may-2016-wordpress-skd-release-notes/

Deactivation Form + Add-Ons

20 Apr 00:23
Compare
Choose a tag to compare

Deactivation Feedback Form

  1. Added new option "It's a temporary deactivation. I'm just debugging an issue."

image
2. Made the "Other" input field required. Hopefully, this will increase the amount of descriptive feedback.

image

Admin Menu

Show Contact Us, Support Forum and Add Ons submenu items also for users who skipped or pending activation.

Add Ons

  1. Added the capability of add-on trial without a payment method (just a free trial). This is currently working only for users that opt-in. We might expand that in the future.
  2. Added visual support for multiple billing cycles.

image
3. If a premium add-on comes with a trial period, we add the tag Trial right after the add-ons price.

image

Misc

Replaced the deprecated add_object_page with add_menu_page.

More Data

We prepared the infrastructure to capture installed plugins & themes for opted-in users. It's still work in progress, and we don't capture it yet on our side. The goal is to help you understand your users better, see what other plugins/themes are frequently used with yours, etc.

Last but not least - please test!

We ran as many tests as we could and also deployed it in production with our plugin before releasing it to you. Having said that, please run some sanity tests before deploying it. You know WordPress, it's impossible to release something that is bullet proof for all environments.

Coming soon...

  1. One of the developers we work with found that if the "Turn Freemius on only for new users" is turned on in the Freemius dashboard, submenu items like the Contact Us are not appearing in the dashboard for users who've been using the plugin before the Freemius integration. That's a problem, especially for developers who monetize with Freemius and don't want to opt-in their previous users. We already have this in testing, so it should be ready very soon.
  2. I recently was doing some testing with WooCommerce, and noticed that they've added an opt-in as well:

woocommerce opt-in
First of all, I'm excited that opt-ins are becoming mainstream 👍 What was also cool about this opt-in is the link it reference, the "Find out more". It's a great inspiration, and we are going to create a similar page for Freemius and reference it instead of our current link that some end users might find confusing.
3. We are wrapping the development of coupons, discounts and promotional codes support. Hope it will be released in the next few weeks.

Official release notes: https://freemius.com/blog/april-2016-wordpress-skd-release-notes/

Bug Fixes + Anonymous Mode

19 Apr 14:54
Compare
Choose a tag to compare

Major release!

15 Jan 14:04
Compare
Choose a tag to compare
  • Added special logic to make sure that every Freemius powered plugin will ALWAYS be loaded with the newest SDK from the active Freemius powered plugins. Since Freemius SDK is backward compatible, this will make sure that all Freemius powered plugins will run correctly.
  • Added new optional "permissions" parameter with "newsletter" to request permissions subscribing the user to your mailing list subscription. This data is currently only visual for the user; it's not stored on Freemius backend. Example:
    fs_dynamic_init( array(
            'id'                => '1234',
            'slug'              => 'my_plugin_slug',
            'public_key'        => 'pk_123456781234567812345678',
            'is_premium'        => false,
            'has_addons'        => false,
            'has_paid_plans'    => false,
            'menu'              => array(
                'slug'       => 'my_plugin_slug',
                'account'    => false,
                'support'    => false,
            ),
            'permissions' => array(
                'newsletter' => true,
            ),
    ) );
  • Created default "lighter" (less aggressive) opt-in message in case of users that get the opt-in after plugin update (already been using the plugin without Freemius platform). Goes like that (Thanks, Corey!):

Please help us improve My Plugin! If you opt-in, some data about your usage of My Plugin will be sent to freemius.com. If you skip this, that's okay! My Plugin will still work just fine.

  • Closed issue #6. If account menu item is hidden, after email verification, redirect to plugin's main settings page instead of loading the account page.
  • Added special mechanism to override all plugin's i18n strings - fs_override_i18n(array $key_value, $slug).
      fs_override_i18n( array(
          'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
          'skip'           => __( 'Not today', '{your-text_domain}' ),
      ), 'your_plugin_slug' );