1. Home
  2. Documentation
  3. WordPress SDK
  4. Your Opt-in Message

Your Opt-in Message

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 see
  • connect_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(
    ) {
        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' ),
            '<b>' . $product_title . '</b>',
            '<b>' . $user_login . '</b>',

    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:

  1. 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.
  2. 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.
  3. 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).