Popups by OptinMonster – Best WordPress Lead Generation Plugin - Version 1.1.4.2

Version Description

  • Added Welcome page on first install.
  • Updated error messages.
  • Updated debug code for better error handling.
Download this release

Release Info

Developer dvinson
Plugin Icon 128x128 Popups by OptinMonster – Best WordPress Lead Generation Plugin
Version 1.1.4.2
Comparing to
See all releases

Code changes from version 1.1.4 to 1.1.4.2

OMAPI/Api.php CHANGED
@@ -134,6 +134,8 @@ class OMAPI_Api {
134
  $headers = array(
135
  'Content-Type' => 'application/x-www-form-urlencoded',
136
  'Content-Length' => strlen( $body ),
 
 
137
  'OMAPI-Referer' => site_url(),
138
  'OMAPI-Sender' => 'WordPress'
139
  );
@@ -150,7 +152,7 @@ class OMAPI_Api {
150
  $response = 'GET' == $this->method ? wp_remote_get( esc_url_raw( $this->url ) . '?' . $body, $data ) : wp_remote_post( esc_url_raw( $this->url ), $data );
151
  $response_code = wp_remote_retrieve_response_code( $response );
152
  $response_body = json_decode( wp_remote_retrieve_body( $response ) );
153
- //echo '<pre>' . var_export( $response, true ) . '</pre>'; die;
154
 
155
  // Bail out early if there are any errors.
156
  if ( is_wp_error( $response_body ) ) {
134
  $headers = array(
135
  'Content-Type' => 'application/x-www-form-urlencoded',
136
  'Content-Length' => strlen( $body ),
137
+ 'Cache-Control' => 'no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0',
138
+ 'Pragma' => 'no-cache',
139
  'OMAPI-Referer' => site_url(),
140
  'OMAPI-Sender' => 'WordPress'
141
  );
152
  $response = 'GET' == $this->method ? wp_remote_get( esc_url_raw( $this->url ) . '?' . $body, $data ) : wp_remote_post( esc_url_raw( $this->url ), $data );
153
  $response_code = wp_remote_retrieve_response_code( $response );
154
  $response_body = json_decode( wp_remote_retrieve_body( $response ) );
155
+ // return new WP_Error( 'debug', '<pre>' . var_export( $response, true ) . '</pre>' );
156
 
157
  // Bail out early if there are any errors.
158
  if ( is_wp_error( $response_body ) ) {
OMAPI/Content.php CHANGED
@@ -90,7 +90,7 @@ class OMAPI_Content {
90
  public function form_start( $id, $panel ) {
91
 
92
  ?>
93
- <form id="omapi-form-<?php echo sanitize_html_class( $id ); ?>" class="omapi-form" method="post" action="<?php echo esc_attr( wp_unslash( $_SERVER['REQUEST_URI'] ) ); ?>">
94
  <?php wp_nonce_field( 'omapi_nonce_' . $id, 'omapi_nonce_' . $id ); ?>
95
  <input type="hidden" name="omapi_panel" value="<?php echo $id; ?>" />
96
  <input type="hidden" name="omapi_save" value="true" />
90
  public function form_start( $id, $panel ) {
91
 
92
  ?>
93
+ <form id="omapi-form-<?php echo sanitize_html_class( $id ); ?>" class="omapi-form" method="post" action="<?php echo esc_attr( stripslashes( $_SERVER['REQUEST_URI'] ) ); ?>">
94
  <?php wp_nonce_field( 'omapi_nonce_' . $id, 'omapi_nonce_' . $id ); ?>
95
  <input type="hidden" name="omapi_panel" value="<?php echo $id; ?>" />
96
  <input type="hidden" name="omapi_save" value="true" />
OMAPI/Validate.php CHANGED
@@ -144,11 +144,16 @@ class OMAPI_Validate {
144
 
145
  $option = $this->base->get_option();
146
  if ( isset( $option['is_invalid'] ) && $option['is_invalid'] ) {
147
- echo '<div class="error"><p>' . __( 'There was an error verifying your OptinMonster API credentials. They are either missing or they are no longer valid. Please try updating your API credentials.', 'optin-monster-api' ) . '</p></div>';
 
 
 
148
  } elseif ( isset( $option['is_disabled'] ) && $option['is_disabled'] ) {
149
- echo '<div class="error"><p>' . __( 'The subscription to this OptinMonsteraccount has been disabled, likely due to a refund or other administrator action. Please contact OptinMonster support to resolve this issue.', 'optin-monster-api' ) . '</p></div>';
 
150
  } elseif ( isset( $option['is_expired'] ) && $option['is_expired'] ) {
151
- echo '<div class="error"><p>' . __( 'The subscription to this OptinMonster account has expired. Please renew your subscription to use the OptinMonster API.', 'optin-monster-api' ) . '</p></div>';
 
152
  }
153
 
154
  }
144
 
145
  $option = $this->base->get_option();
146
  if ( isset( $option['is_invalid'] ) && $option['is_invalid'] ) {
147
+ if ( ! ( isset($_GET['page'] ) && $_GET['page'] == 'optin-monster-api-settings') && ! ( isset($_GET['page'] ) && $_GET['page'] == 'optin-monster-api-welcome') ){
148
+ echo '<div class="error"><p>' . __( 'There was an error verifying your OptinMonster API credentials. They are either missing or they are no longer valid.', 'optin-monster-api' ) . '</p>';
149
+ echo '<p><a href="' . esc_url_raw( admin_url( 'admin.php?page=optin-monster-api-settings' ) ) . '" class="button button-primary button-large omapi-new-optin" title="View API Settings" >View API Settings</a></p></div>';
150
+ }
151
  } elseif ( isset( $option['is_disabled'] ) && $option['is_disabled'] ) {
152
+ echo '<div class="error"><p>' . __( 'The subscription to this OptinMonster account has been disabled, likely due to a refund or other administrator action. Please contact OptinMonster support to resolve this issue.', 'optin-monster-api' ) . '</p>';
153
+ echo '<p><a href="https://app.optinmonster.com/account/support/" class="button button-primary button-large omapi-new-optin" title="Contact OptinMonster Support" target="_blank">Contact Support</a></p></div>';
154
  } elseif ( isset( $option['is_expired'] ) && $option['is_expired'] ) {
155
+ echo '<div class="error"><p>' . __( 'The subscription to this OptinMonster account has expired. Please renew your subscription to use the OptinMonster API.', 'optin-monster-api' ) . '</p>';
156
+ echo '<p><a href="https://app.optinmonster.com/account/billing/" class="button button-primary button-large omapi-new-optin" title="Renew Subscription" target="_blank">Renew Subscription</a></p></div>';
157
  }
158
 
159
  }
OMAPI/Welcome.php ADDED
@@ -0,0 +1,227 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Welcome class.
4
+ *
5
+ * @since 1.1.4
6
+ *
7
+ * @package OMAPI
8
+ * @author Devin Vinson
9
+ */
10
+ class OMAPI_Welcome {
11
+
12
+ /**
13
+ * Holds the class object.
14
+ *
15
+ * @since 1.1.4.2
16
+ *
17
+ * @var object
18
+ */
19
+ public static $instance;
20
+
21
+ /**
22
+ * Path to the file.
23
+ *
24
+ * @since 1.1.4.2
25
+ *
26
+ * @var string
27
+ */
28
+ public $file = __FILE__;
29
+
30
+ /**
31
+ * Holds the base class object.
32
+ *
33
+ * @since 1.1.4.2
34
+ *
35
+ * @var object
36
+ */
37
+ public $base;
38
+
39
+
40
+
41
+ public $hook;
42
+
43
+ /**
44
+ * Primary class constructor.
45
+ *
46
+ * @since 1.1.4.2
47
+ */
48
+ public function __construct() {
49
+
50
+ // Set our object.
51
+ $this->set();
52
+
53
+ //Load the Welcome screen
54
+ add_action('admin_menu', array($this, 'register_welcome_page') );
55
+
56
+ //maybe redirect
57
+ add_action('admin_init', array( $this, 'maybe_welcome_redirect' ) );
58
+ }
59
+
60
+ /**
61
+ * Sets our object instance and base class instance.
62
+ *
63
+ * @since 1.1.4.2
64
+ */
65
+ public function set() {
66
+
67
+ self::$instance = $this;
68
+ $this->base = OMAPI::get_instance();
69
+ $this->view = isset( $_GET['optin_monster_api_view'] ) ? stripslashes( $_GET['optin_monster_api_view'] ) : $this->base->get_view();
70
+
71
+ }
72
+
73
+ /**
74
+ * Maybe Redirect new users to the welcome page after install.
75
+ *
76
+ * @since 1.1.4.2
77
+ */
78
+ public function maybe_welcome_redirect() {
79
+
80
+ $options = $this->base->get_option();
81
+
82
+ //Check for the new option
83
+ if ( isset( $options['welcome']['status'] ) ){
84
+
85
+ //Check if they have been welcomed
86
+ if ( $options['welcome']['status'] === 'none' ) {
87
+
88
+ //Update the option
89
+ $options['welcome']['status'] = 'welcomed';
90
+ update_option('optin_monster_api', $options );
91
+
92
+ //If this was not a bulk activate send them to the page
93
+ if(!isset($_GET['activate-multi']))
94
+ {
95
+ wp_redirect('admin.php?page=optin-monster-api-welcome');
96
+ }
97
+
98
+ }
99
+
100
+ } else {
101
+ //welcome option didn't exist so must be pre-existing user updating
102
+ $options['welcome']['status'] = 'welcomed';
103
+ update_option('optin_monster_api', $options );
104
+ }
105
+
106
+
107
+ }
108
+
109
+ /**
110
+ * Loads the OptinMonster admin menu.
111
+ *
112
+ * @since 1.1.4.2
113
+ */
114
+ public function register_welcome_page() {
115
+
116
+ $this->hook = add_submenu_page(
117
+ __( 'OptinMonster', 'optin-monster-api' ), //parent slug
118
+ __( 'Welcome to OptinMonster', 'optin-monster-api' ), //page title,
119
+ __( 'Welcome', 'optin-monster-api'),
120
+ apply_filters( 'optin_monster_api_menu_cap', 'manage_options' ), //cap
121
+ 'optin-monster-api-welcome', //slug
122
+ array($this, 'callback_to_display_page') //callback
123
+ );
124
+
125
+ // Load settings page assets.
126
+ if ( $this->hook ) {
127
+ add_action( 'load-' . $this->hook, array( $this, 'assets' ) );
128
+ }
129
+
130
+
131
+
132
+ }
133
+
134
+ /**
135
+ * Outputs the OptinMonster settings page.
136
+ *
137
+ * @since 1.1.4.2
138
+ */
139
+ public function callback_to_display_page() {
140
+
141
+ //Load options if needed
142
+ $options = $this->base->get_option();
143
+
144
+ ?>
145
+ <div class="wrap omapi-page">
146
+
147
+ <div id="welcome-panel" class="welcome-panel">
148
+
149
+ <div class="welcome-panel-content">
150
+ <div class="logo"><h2>Welcome to OptinMonster</h2></div>
151
+
152
+
153
+
154
+ <div class="welcome-panel-column-container">
155
+
156
+ <p class="intro-description"><?php _e('Welcome to OptinMonster - the best plugin for growing your email list and getting more subscribers.','optin-monster-api') ?></p>
157
+ <p><?php _e('OptinMonster is a powerful conversion optimization tool that integrates with all web platforms including WordPress.','optin-monster-api') ?></p>
158
+ <p><?php _e('In order to take advantage of this plugin, you must have an OptinMonster account.','optin-monster-api') ?></p>
159
+
160
+ <h4><?php _e('Already have an account?','optin-monster-api') ?></h4>
161
+ <p><a class="button button-primary button-hero" href="<?php echo esc_url_raw( admin_url( 'admin.php?page=optin-monster-api-settings' ) ) ?>"><?php _e('Get Connected','optin-monster-api');?></a></p>
162
+
163
+ <h4><?php _e('New to OptinMonster?','optin-monster-api') ?></h4>
164
+ <p><a class="button button-primary button-hero" href="http://optinmonster.com/pricing/" target="_blank"><?php _e('Create Your Account','optin-monster-api') ?></a> or <a href="http://optinmonster.com/how-it-works/" target="_blank"><?php _e('See How it Works','optin-monster-api') ?></a>.</p>
165
+
166
+
167
+
168
+
169
+ </div>
170
+ </div>
171
+
172
+ </div>
173
+
174
+
175
+ </div>
176
+ <?php
177
+
178
+ }
179
+
180
+ /**
181
+ * Loads assets for the settings page.
182
+ *
183
+ * @since 1.1.4.2
184
+ */
185
+ public function assets() {
186
+
187
+ add_action( 'admin_enqueue_scripts', array( $this, 'styles' ) );
188
+ add_filter( 'admin_footer_text', array( $this, 'footer' ) );
189
+
190
+ }
191
+
192
+ /**
193
+ * Register and enqueue settings page specific CSS.
194
+ *
195
+ * @since 1.1.4.2
196
+ */
197
+ public function styles() {
198
+
199
+ wp_register_style( $this->base->plugin_slug . '-settings', plugins_url( '/assets/css/settings.css', $this->base->file ), array(), $this->base->version );
200
+ wp_enqueue_style( $this->base->plugin_slug . '-settings' );
201
+
202
+
203
+ }
204
+
205
+
206
+ /**
207
+ * Customizes the footer text on the OptinMonster settings page.
208
+ *
209
+ * @since 1.0.0
210
+ *
211
+ * @param string $text The default admin footer text.
212
+ * @return string $text Amended admin footer text.
213
+ */
214
+ public function footer( $text ) {
215
+
216
+ $new_text = sprintf( __( 'Thank you for using <a href="%1$s" target="_blank">OptinMonster</a>!', 'optin-monster-api' ),
217
+ 'http://optinmonster.com'
218
+ );
219
+ return str_replace( '</span>', '', $text ) . ' | ' . $new_text . '</span>';
220
+
221
+ }
222
+
223
+
224
+
225
+
226
+
227
+ }
assets/css/images/logo-color-large.png ADDED
Binary file
assets/css/images/logo-color-large@2x.png ADDED
Binary file
assets/css/settings.css CHANGED
@@ -37,6 +37,19 @@
37
  .omapi-green {
38
  color: green !important;
39
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
  .omapi-page h2 span {
42
  font-size: 13px;
37
  .omapi-green {
38
  color: green !important;
39
  }
40
+ /* Welcome Panel Styles */
41
+ .omapi-page .logo h2 {
42
+ display: block;
43
+ text-indent: -9999px;
44
+ overflow: hidden;
45
+ background: url(images/logo-color-large@2x.png) no-repeat;
46
+ background-size: contain;
47
+ height: 64px;
48
+ width: 430px;
49
+ }
50
+ p.intro-description {
51
+ font-size: 16px;
52
+ }
53
 
54
  .omapi-page h2 span {
55
  font-size: 13px;
optin-monster-wp-api.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: OptinMonster API plugin to connect your WordPress site to your OptinMonster forms.
6
  * Author: Thomas Griffin
7
  * Author URI: https://thomasgriffin.io
8
- * Version: 1.1.4
9
  * Text Domain: optin-monster-api
10
  * Domain Path: languages
11
  *
@@ -57,7 +57,7 @@ class OMAPI {
57
  *
58
  * @var string
59
  */
60
- public $version = '1.1.4';
61
 
62
  /**
63
  * The name of the plugin.
@@ -204,6 +204,7 @@ class OMAPI {
204
  $this->save = new OMAPI_Save();
205
  $this->refresh = new OMAPI_Refresh();
206
  $this->validate = new OMAPI_Validate();
 
207
 
208
  // Fire a hook to say that the admin classes are loaded.
209
  do_action( 'optin_monster_api_admin_loaded' );
@@ -400,7 +401,12 @@ class OMAPI {
400
  'optins' => array(),
401
  'is_expired' => false,
402
  'is_disabled' => false,
403
- 'is_invalid' => false
 
 
 
 
 
404
  );
405
  return apply_filters( 'optin_monster_api_default_options', $options );
406
 
@@ -487,6 +493,7 @@ function optin_monster_api_activation_hook( $network_wide ) {
487
  if ( ! $option || empty( $option ) ) {
488
  update_option( 'optin_monster_api', OMAPI::default_options() );
489
  }
 
490
  }
491
 
492
  }
5
  * Description: OptinMonster API plugin to connect your WordPress site to your OptinMonster forms.
6
  * Author: Thomas Griffin
7
  * Author URI: https://thomasgriffin.io
8
+ * Version: 1.1.4.2
9
  * Text Domain: optin-monster-api
10
  * Domain Path: languages
11
  *
57
  *
58
  * @var string
59
  */
60
+ public $version = '1.1.4.2';
61
 
62
  /**
63
  * The name of the plugin.
204
  $this->save = new OMAPI_Save();
205
  $this->refresh = new OMAPI_Refresh();
206
  $this->validate = new OMAPI_Validate();
207
+ $this->welcome = new OMAPI_Welcome();
208
 
209
  // Fire a hook to say that the admin classes are loaded.
210
  do_action( 'optin_monster_api_admin_loaded' );
401
  'optins' => array(),
402
  'is_expired' => false,
403
  'is_disabled' => false,
404
+ 'is_invalid' => false,
405
+ 'welcome' => array(
406
+ 'status' => 'none', //none, welcomed
407
+ 'review' => 'ask', //ask, asked, dismissed
408
+ 'version' => '1141', //base to check against
409
+ )
410
  );
411
  return apply_filters( 'optin_monster_api_default_options', $options );
412
 
493
  if ( ! $option || empty( $option ) ) {
494
  update_option( 'optin_monster_api', OMAPI::default_options() );
495
  }
496
+
497
  }
498
 
499
  }
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: griffinjt, smub
3
  Tags: wordpress popup, popup, lightbox popup, mailchimp, aweber, campaign monitor, constant contact, exit-intent, madmimi, infusionsoft, getresponse, hubspot, marketo, activecampaign, pardot, totalsend, emma, icontact, mailerlite, mailpoet, google analytics, pop over, optin forms, email list, subscribers, wordpress popup form, lightbox, wordpress popups, popups, lightbox popups, optin form, wordpress optin form, sidebar optin form, sidebar optin, sidebar form, wordpress overlay popup, wordpress popup plugin, popup plugin, wordpress lightbox optin, wordpress lightbox optin form, after post optin form, wordpress after post optin form, after post optin form plugin, lightbox popup plugin, wordpress popup solution, exit intent, exit-intent, optinmonster, optin monster, optin-monster, mobile popup, mobile popups, mobile optin forms, mobile optins, lightbox optins, wordpress mobile popup, wordpress mobile popups, wordpress mobile optin forms, wordpress lightbox optins, lead gen, lead generation, wordpress lead generation, lead generation wordpress, wordpress lead gen, fullscreen, welcome gate, interstitial
4
  Requires at least: 3.5.1
5
- Tested up to: 4.3
6
  Stable tag: trunk
7
  License: GNU General Public License v2.0 or later
8
 
@@ -10,9 +10,10 @@ OptinMonster helps you grow your email list by converting visitors into subscrib
10
 
11
  == Description ==
12
 
13
- Did you know that over 70% of website visitors who leave your website will never return? Why? Because most people find your blog, read, and leave (that's just a natural pattern). Wouldn't it be nice if you can convert some of those people to subscribe to your blog? That's where <a href="http://optinmonster.com" rel="friend" title="OptinMonster">OptinMonster</a> can help. OptinMonster helps you grow your email list and get more subscribers.
 
14
 
15
- OptinMonster comes with an easy to use form builder that allows you to create beautiful optin forms that are proven to convert. You can create various type of optins including WordPress popups, floating header and footer bars, slide-ins also known as scroll triggered boxes, sidebar forms, after post forms, in-line forms, mobile-specific forms, and more.
16
 
17
  Using OptinMonster forms combined with our exit-intent technology, page-level targeting, and behavior automation, users have seen an instant boost in conversion rate, _even upwards of 785%!_
18
 
@@ -25,13 +26,13 @@ Let's take a look at how OptinMonster can help you get more email subscribers.
25
 
26
  OptinMonster allows you to build high converting opt-in forms in minutes, not hours!
27
 
28
- You can choose from 8 different type of optins including: popups, floating bars, slide-ins, sidebar forms, after-post forms, in-line forms, mobile-only popups, and Canvas.
29
 
30
  All of our templates are 100% responsive and mobile friendly.
31
 
32
  = Easy Integration with All Email Marketing Services =
33
 
34
- We started with the goal to make the most beginner friendly lead-generation plugin. That's why OptinMonster works out of the box with all popular email marketing service providers including but not limited to:
35
 
36
  MailChimp, AWeber, Infusionsoft, GetResponse, ConstantContact, CampaignMonitor, Hubspot, Marketo, ActiveCampaign, Pardot, TotalSend, Emma, iContact, MailerLite, Customer.io, MailPoet, and FeedBlitz.
37
 
@@ -96,10 +97,10 @@ Most people don't know what to do with analytics because they don't understand t
96
  * Our signature Exit Intent&trade; technology to convert abandoning website visitors into subscribers and customers.
97
  * Powerful A/B testing that helps you eliminate guess work and make data driven decisions on what works best.
98
  * MonsterLinks&trade; 2-step optin technology **which is proven to boost conversions by as much as 785%!**
99
- * Mobile specific popups that are specifically targeted towards mobile visitors.
100
- * Scroll triggered popups and optin forms for enhanced conversion rates.
101
- * Timed popups - display opt-ins after a certain time or on second pageview.
102
- * Canvas popups - use Canvas to add facebook like box, WooCommerce products, or anything else that you like.
103
  * MonsterEffects&trade; technology for eye-catching popup animations.
104
  * Success messages and redirects
105
  * Easy integration with over 19 different email marketing service providers
@@ -147,6 +148,14 @@ OptinMonster is the <a href="http://optinmonster.com" rel="friend" title="OptinM
147
 
148
  == Changelog ==
149
 
 
 
 
 
 
 
 
 
150
  = 1.1.4 =
151
  * Fixed bug with adblock.
152
  * Added new API script with easier updates.
2
  Contributors: griffinjt, smub
3
  Tags: wordpress popup, popup, lightbox popup, mailchimp, aweber, campaign monitor, constant contact, exit-intent, madmimi, infusionsoft, getresponse, hubspot, marketo, activecampaign, pardot, totalsend, emma, icontact, mailerlite, mailpoet, google analytics, pop over, optin forms, email list, subscribers, wordpress popup form, lightbox, wordpress popups, popups, lightbox popups, optin form, wordpress optin form, sidebar optin form, sidebar optin, sidebar form, wordpress overlay popup, wordpress popup plugin, popup plugin, wordpress lightbox optin, wordpress lightbox optin form, after post optin form, wordpress after post optin form, after post optin form plugin, lightbox popup plugin, wordpress popup solution, exit intent, exit-intent, optinmonster, optin monster, optin-monster, mobile popup, mobile popups, mobile optin forms, mobile optins, lightbox optins, wordpress mobile popup, wordpress mobile popups, wordpress mobile optin forms, wordpress lightbox optins, lead gen, lead generation, wordpress lead generation, lead generation wordpress, wordpress lead gen, fullscreen, welcome gate, interstitial
4
  Requires at least: 3.5.1
5
+ Tested up to: 4.3.1
6
  Stable tag: trunk
7
  License: GNU General Public License v2.0 or later
8
 
10
 
11
  == Description ==
12
 
13
+ = WordPress Popup Plugin =
14
+ Did you know that over 70% of website visitors who leave your website will never return? Why? Because most people find your blog, read, and leave (that's just a natural pattern). Wouldn't it be nice if you can convert some of those people to subscribe to your blog? That's where <a href="http://optinmonster.com" rel="friend" title="OptinMonster">OptinMonster</a> can help. OptinMonster helps you grow your email list and get more subscribers with popup and other types of high converting optin forms.
15
 
16
+ OptinMonster comes with an easy to use form builder that allows you to create beautiful optin forms that are proven to convert. You can create various type of optins including WordPress popup forms, floating header and footer bars, slide-ins also known as scroll triggered boxes, sidebar forms, after post forms, in-line forms, mobile-specific forms, welcome gates and more.
17
 
18
  Using OptinMonster forms combined with our exit-intent technology, page-level targeting, and behavior automation, users have seen an instant boost in conversion rate, _even upwards of 785%!_
19
 
26
 
27
  OptinMonster allows you to build high converting opt-in forms in minutes, not hours!
28
 
29
+ You can choose from 8 different type of optins including: popup forms, floating bars, slide-ins, sidebar forms, after-post forms, in-line forms, mobile-only popup forms, and Canvas.
30
 
31
  All of our templates are 100% responsive and mobile friendly.
32
 
33
  = Easy Integration with All Email Marketing Services =
34
 
35
+ We started with the goal to make the most beginner friendly lead generation plugin. That's why OptinMonster works out of the box with all popular email marketing service providers including but not limited to:
36
 
37
  MailChimp, AWeber, Infusionsoft, GetResponse, ConstantContact, CampaignMonitor, Hubspot, Marketo, ActiveCampaign, Pardot, TotalSend, Emma, iContact, MailerLite, Customer.io, MailPoet, and FeedBlitz.
38
 
97
  * Our signature Exit Intent&trade; technology to convert abandoning website visitors into subscribers and customers.
98
  * Powerful A/B testing that helps you eliminate guess work and make data driven decisions on what works best.
99
  * MonsterLinks&trade; 2-step optin technology **which is proven to boost conversions by as much as 785%!**
100
+ * Mobile specific popup forms that are specifically targeted towards mobile visitors.
101
+ * Scroll triggered popup and optin forms for enhanced conversion rates.
102
+ * Timed popup forms - display opt-ins after a certain time or on second pageview.
103
+ * Canvas popup forms - use Canvas to add facebook like box, WooCommerce products, or anything else that you like.
104
  * MonsterEffects&trade; technology for eye-catching popup animations.
105
  * Success messages and redirects
106
  * Easy integration with over 19 different email marketing service providers
148
 
149
  == Changelog ==
150
 
151
+ = 1.1.4.2 =
152
+ * Added Welcome page on first install.
153
+ * Updated error messages.
154
+ * Updated debug code for better error handling.
155
+
156
+ = 1.1.4.1 =
157
+ * Added No-Cache headers on API requests.
158
+
159
  = 1.1.4 =
160
  * Fixed bug with adblock.
161
  * Added new API script with easier updates.