The default message provided with the Freemius SDK is obviously customizable to whatever other message you’d like your users to see.
Here’s the default opt-in message that new users that activate your product will see:
“Hey
{first_name}
, never miss an important update – opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with freemius.com.”
After experiencing with many opt-in messages, this version has proven to be great for conversion optimization, as the average opt-in rate with it is over 60%. It highlights the benefits of usage-tracking for the user, and also align expectations that the user might be receiving emails (instead of asking for favors).
The default opt-in message that your existing users (people who have already had your product activated, prior to your integrating Freemius into it) will see is:
“Hey
{first_name}
, please help us improve{product_title}
! If you opt-in, some data about your usage of{product_title}
will be sent to freemius.com. If you skip this, that’s okay!{product_title}
will still work just fine.”
That message’s tone is obviously more conscious to the fact that it is addressing a different kind of audience (your existing users), and tries to prevent from losing any of them. That is the reason why it has a considerably lower opt-in rate which stands on about 35%.
Message Customization
To customize either of these default messages – simply use the following filters we’ve created:
connect_message_on_update
to override the default message existing users will seeconnect_message
to override the default message new users will see
Here’s an example of how that can be done:
function my_fs_custom_connect_message_on_update( $message, $user_first_name, $product_title, $user_login, $site_link, $freemius_link ) { return sprintf( __( 'Hey %1$s', 'my-text-domain' ) . ',<br>' . __( 'Please help us improve %2$s! If you opt-in, some data about your usage of %2$s will be sent to %5$s. If you skip this, that\'s okay! %2$s will still work just fine.', 'my-text-domain' ), $user_first_name, '<b>' . $product_title . '</b>', '<b>' . $user_login . '</b>', $site_link, $freemius_link ); } my_fs()->add_filter('connect_message_on_update', 'my_fs_custom_connect_message_on_update', 10, 6);
Important recommendation: When customizing the opt-in message your users will see when they activate – we recommend aligning it with the overall tone that’s been used on your product, so it does not seem foreign.
Icon Customization
When you are running your plugin or theme on a localhost environment, if your product is hosted on WordPress.org, the SDK will automatically attempt to download the featured profile icon from WordPress.org and store it in /freemius/assets/img/{slug}.{png|jpg|gif|svg}
. If it works, all you need is to deploy the zip with the downloaded file and you are good.
If you don’t have a free product version on WordPress.org or would like to load an alternative icon, the best way is to use the plugin_icon
filter:
function my_fs_custom_icon() { return dirname( __FILE__ ) . '/local/path/to/your/icon.{png|jpg|gif|svg}'; } my_fs()->add_filter( 'plugin_icon' , 'my_fs_custom_icon' );
Buttons Customization
You can easily customize the button labels by using Freemius i18n override function. Example:
if ( function_exists( 'fs_override_i18n' ) ) { fs_override_i18n( array( 'opt-in-connect' => __( 'Ok - I am in!', 'your-text-domain' ), 'skip' => __( 'Maybe later', 'your-text-domain' ), ), 'your-slug' ); }
This will set the primary opt-in button label to Ok – I am in! and replace the default skip label with Maybe Later.
Tip: You can use the same mechanism to override any of the Freemius strings. Check out
/freemius/includes/i18n.php
file for more details.
Permissions Customization
If you’d like to track additional events/data that is not tracked by Freemius, or if you want to leverage the opt-in for other user permissions, you can leverage the 'permission_list'
filter to add custom permissions.
Here’s an example that shows how to add custom Newsletter permission:
function my_add_custom_permissions( array $permissions ) { $permissions['newsletter'] = array( 'icon-class' => 'dashicons dashicons-email-alt', 'label' => my_fs()->get_text_inline( 'Newsletter', 'permissions-newsletter' ), 'desc' => my_fs()->get_text_inline( 'Updates, announcements, marketing, no spam', 'permissions-newsletter_desc' ), 'priority' => 15, ); } my_fs()->add_filter( 'permission_list', 'my_add_custom_permissions' );
The 'priority'
parameter determines the visual order of the permission on the permissions list. The default permissions priorities are: 5
, 10
, 13
, and 20
. So when using 15
, the SDK will add the permission just before the last one (between permission 13
and 20
).
Additional Customization
The WordPress SDK is an open-source project, so you are free to modify it as you wish. The relevant template is located under /freemius/templates/connect.php
. However, we strongly recommend you refrain from doing that – here are some good reasons why:
- The current opt-in UI version was officially approved and is compliant with the WordPress.org guidelines. If you change the UI, the compliance with the guidelines is under your responsibility.
- We ran many experiments to optimize the opt-in CTR (Click Through Rate) until we achieved this enhanced variation. There’s a good reason why it looks like an OAuth screen – most users have already connected their Facebook or Google to 3rd party services before and are familiar with this UI concept.
- Freemius is running on hundreds of plugins and themes. Therefore, there’s a good chance that a user that installs your product had come across our opt-in before and recognizes the Freemius icon. It’s easier to trust a vendor that you’ve encountered or used before, rather than an unfamiliar opt-in screen.4. You’ll need to make those modifications again whenever you want to update to a new version of the SDK (which we release once every 2-3 months).