==== PluginInsights API_URL ==== 13: const API_URL = 'https://send.wpinsight.com/process-plugin-data'; 64: $this->require_optin = isset( $args['opt_in'] ) ? $args['opt_in'] : true; 120: // Check deactivation reason and add for insights data. 150: add_action( 'wpdeveloper_optin_notice_for_' . $this->plugin_name, array( $this, 'notice' ) ); 170: $unset_array = array( 'dismiss', 'plugin', '_wpnonce', 'later', 'plugin_action', 'marketing_optin' ); 192: * data to the insights API immediately. Used by the onboarding Setup Wizard 198: public function optin( $send = true ) { 217: if ( ( defined('NX_DEBUG') && NX_DEBUG ) || empty( self::API_URL ) ) { 282: } elseif ( $is_allowed || ! $this->require_optin ) { 428: * @param PluginInsights $this Current insights instance. 449: * Send the data to insights. 551: * WP_REMOTE_POST method responsible for send data to the API_URL 573: $request = wp_remote_post( esc_url( self::API_URL ), $args ); 636: $url_yes = wp_nonce_url( $url_yes, '_wpnonce_optin_' . $this->plugin_name ); 637: $url_no = wp_nonce_url( $url_no, '_wpnonce_optin_' . $this->plugin_name ); 640: $notice_text = $this->notice_options['notice'] . ' ' . $this->notice_options['consent_button_text'] . ''; 645:
647: __( 'I found a better plugin', 'wpinsight' ), 793: 'extra_field' => __( 'Please share which plugin', 'wpinsight' ), 795: __( "I couldn't get the plugin to work", 'wpinsight' ), 796: __( 'It\'s a temporary deactivation', 'wpinsight' ), 798: 'label' => __( 'Other', 'wpinsight' ), 799: 'extra_field' => __( 'Please share the reason', 'wpinsight' ), 814: .wpinsights-form-active-notificationx .wpinsights-goodbye-form-bg { 824: .wpinsights-goodbye-form-wrapper-notificationx { 829: .wpinsights-form-active-notificationx .wpinsights-goodbye-form-wrapper-notificationx { 840: .wpinsights-goodbye-form-wrapper-notificationx .wpinsights-goodbye-form { 844: .wpinsights-form-active-notificationx .wpinsights-goodbye-form { 857: .wpinsights-goodbye-form-wrapper-notificationx .wpinsights-goodbye-form-head { 865: .wpinsights-goodbye-form-wrapper-notificationx .wpinsights-goodbye-form .wpinsights-goodbye-form-head strong { ---- class constants/head ---- plugin_file = $plugin_file; $this->plugin_name = basename( $this->plugin_file, '.php' ); $this->disabled_wp_cron = defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON == true; $this->enable_self_cron = $this->disabled_wp_cron == true ? true : false; $this->event_hook = 'put_do_weekly_action'; $this->require_optin = isset( $args['opt_in'] ) ? $args['opt_in'] : true; $this->include_goodbye_form = isset( $args['goodbye_form'] ) ? $args['goodbye_form'] : true; $this->marketing = isset( $args['email_marketing'] ) ? $args['email_marketing'] : true; $this->options = isset( $args['options'] ) ? $args['options'] : []; $this->item_id = isset( $args['item_id'] ) ? $args['item_id'] : false; /** * Activation Hook */ register_activation_hook( $this->plugin_file, array( $this, 'activate_this_plugin' ) ); /** * Deactivation Hook */ register_deactivation_hook( $this->plugin_file, array( $this, 'deactivate_this_plugin' ) ); } /** * When user agreed to opt-in tracking schedule is enabled. * * @since 3.0.0 */ public function schedule_tracking() { if ( $this->disabled_wp_cron ) { return; } if ( ! wp_next_scheduled( $this->event_hook ) ) { wp_schedule_event( time(), $this->recurrence, $this->event_hook ); } } /** * Add the schedule event if the plugin is tracked. * * @return void */ public function activate_this_plugin() { $allow_tracking = $this->is_tracking_allowed(); if ( ! $allow_tracking ) { return; } $this->schedule_tracking(); } /** * Remove the schedule event when plugin is deactivated and send the deactivated reason to inishghts if user submitted. * * @since 3.0.0 */ public function deactivate_this_plugin() { /** * Check tracking is allowed or not. */ $allow_tracking = $this->is_tracking_allowed(); if ( ! $allow_tracking ) { return; } $body = $this->get_data(); $body['status'] = 'Deactivated'; $body['deactivated_date'] = time(); // Check deactivation reason and add for insights data. ==== License / Update / Remote notice ==== /tmp/_nx_scan/notificationx/includes/Extensions/LearnPress/LearnPressInline.php:96: $edd_location = $settings['inline_location']; /tmp/_nx_scan/notificationx/includes/Extensions/LearnPress/LearnPressInline.php:98: $diff = array_diff( $hooks, $edd_location ); /tmp/_nx_scan/notificationx/includes/Extensions/LearnPress/LearnPress.php:72: add_action('edd_update_payment_status', array($this, 'save_new_enroll_payment_status'), 10, 3); /tmp/_nx_scan/notificationx/includes/Extensions/LearnPress/LearnPress.php:173: $payment = new \EDD_Payment($payment_id); /tmp/_nx_scan/notificationx/includes/Extensions/LearnPress/LearnPress.php:284: if ($order_id && function_exists('edd_get_payment_meta')) { /tmp/_nx_scan/notificationx/includes/Extensions/LearnPress/LearnPress.php:286: $payment_meta = edd_get_payment_meta($order_id); /tmp/_nx_scan/notificationx/includes/Extensions/ReviewX/ReviewX.php:285: 'https://wpdeveloper.com/ecommerce-sales-social-proof/' /tmp/_nx_scan/notificationx/includes/Extensions/Give/Give.php:306: 'https://wpdeveloper.com/notificationx-increase-sales-wordpress/' /tmp/_nx_scan/notificationx/includes/Extensions/Tutor/TutorInline.php:96: $edd_location = $settings['inline_location']; /tmp/_nx_scan/notificationx/includes/Extensions/Tutor/TutorInline.php:98: $diff = array_diff( $hooks, $edd_location ); /tmp/_nx_scan/notificationx/includes/Extensions/Tutor/Tutor.php:71: add_action('edd_update_payment_status', array($this, 'save_new_enroll_payment_status'), 10, 3); /tmp/_nx_scan/notificationx/includes/Extensions/Tutor/Tutor.php:172: $payment = new \EDD_Payment($payment_id); /tmp/_nx_scan/notificationx/includes/Extensions/Tutor/Tutor.php:284: if ($order_id && function_exists('edd_get_payment_meta')) { /tmp/_nx_scan/notificationx/includes/Extensions/Tutor/Tutor.php:286: $payment_meta = edd_get_payment_meta($order_id); /tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:790: 'rules' => Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart","custom_notification", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart']), /tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:807: 'rules' => Rules::includes('source', ['woocommerce','woocommerce_sales', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart",'woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']), /tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:817: Rules::includes('source', ['woocommerce' , 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline", "surecart", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']), /tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:835: Rules::includes('source', ['woocommerce', 'woocommerce_sales', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart",'woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']), /tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:847: Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline", "surecart", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']), /tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:866: 'rules' => Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']), /tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:876: Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline", "surecart", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']), /tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:894: Rules::includes('source', ['woocommerce', 'woocommerce_sales', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart",'woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']), /tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:905: Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']), /tmp/_nx_scan/notificationx/includes/Extensions/MailChimp/MailChimp.php:68: 'https://wpdeveloper.com/email-marketing-social-proof/', /tmp/_nx_scan/notificationx/includes/Extensions/MailChimp/MailChimp.php:69: 'https://wpdeveloper.com/email-subscription-list-wordpress/' /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDD.php:62: add_action( 'edd_update_payment_status', array( $this, 'update_payment_status' ), 10, 3 ); /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDD.php:268: return edd_get_payments( $args ); /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDD.php:319: $payment = new \EDD_Payment( $payment_id ); /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDD.php:322: $is_3x = defined('EDD_VERSION') ? version_compare( EDD_VERSION, '3', '<' ) : false; /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDD.php:405: 'https://wpdeveloper.com/notificationx-increase-sales-wordpress/' /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDInline.php:18: public $id = 'edd_inline'; /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDInline.php:42: 'inline_location' => ['edd_single'], /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDInline.php:83: $edd_location = $settings['inline_location']; /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDInline.php:84: $hooks = [ 'edd_archive', 'edd_single' ]; /tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDInline.php:85: $diff = array_diff( $hooks, $edd_location ); /tmp/_nx_scan/notificationx/includes/Extensions/ExtensionFactory.php:33: 'edd_inline' => 'NotificationX\Extensions\EDD\EDDInline', /tmp/_nx_scan/notificationx/includes/Extensions/LearnDash/LearnDashInline.php:83: $edd_location = $settings['inline_location']; /tmp/_nx_scan/notificationx/includes/Extensions/LearnDash/LearnDashInline.php:85: $diff = array_diff( $hooks, $edd_location ); /tmp/_nx_scan/notificationx/includes/Extensions/LearnDash/LearnDash.php:79: 'https://wpdeveloper.com/learndash-course-enrollment-rate-notificationx/' /tmp/_nx_scan/notificationx/includes/Extensions/WooCommerce/WOOReviews.php:500: 'https://wpdeveloper.com/ecommerce-sales-social-proof/' /tmp/_nx_scan/notificationx/includes/Extensions/WooCommerce/WooCommerceSalesReviews.php:258: 'https://wpdeveloper.com/ecommerce-sales-social-proof/' /tmp/_nx_scan/notificationx/includes/Extensions/WordPress/Wordpress.php:24: 'https://wpdeveloper.com/wordpress-plugin-download/' /tmp/_nx_scan/notificationx/includes/Extensions/CustomNotification/CustomNotificationConversions.php:74: 'https://wpdeveloper.com/custom-notificationx-alert-fomo/' /tmp/_nx_scan/notificationx/includes/Extensions/CustomNotification/CustomNotification.php:97: 'https://wpdeveloper.com/custom-notificationx-alert-fomo/' /tmp/_nx_scan/notificationx/includes/Extensions/ConvertKit/ConvertKit.php:67: 'https://wpdeveloper.com/convertkit-social-proof/' /tmp/_nx_scan/notificationx/includes/Types/WooCommerceSales.php:367: if($settings['source'] == 'edd' || $settings['source'] == 'edd_inline'){ /tmp/_nx_scan/notificationx/includes/Types/WooCommerceSales.php:407: if($settings['source'] == 'edd' || $settings['source'] == 'edd_inline'){ /tmp/_nx_scan/notificationx/includes/Types/Conversions.php:386: if($settings['source'] == 'edd' || $settings['source'] == 'edd_inline'){ /tmp/_nx_scan/notificationx/includes/Types/Conversions.php:426: if($settings['source'] == 'edd' || $settings['source'] == 'edd_inline'){ /tmp/_nx_scan/notificationx/includes/Core/Migration.php:323: $post['product_control'] = $this->get("_nx_meta_edd_product_control"); /tmp/_nx_scan/notificationx/includes/Core/Migration.php:324: $post['category_list'] = $this->get("_nx_meta_edd_category_list"); /tmp/_nx_scan/notificationx/includes/Core/Migration.php:325: $post['product_list'] = $this->get("_nx_meta_edd_product_list"); /tmp/_nx_scan/notificationx/includes/Core/Migration.php:326: $post['product_exclude_by'] = $this->get("_nx_meta_edd_product_exclude_by"); /tmp/_nx_scan/notificationx/includes/Core/Migration.php:327: $post['exclude_categories'] = $this->get("_nx_meta_edd_exclude_categories"); /tmp/_nx_scan/notificationx/includes/Core/Migration.php:328: $post['exclude_products'] = $this->get("_nx_meta_edd_exclude_products"); /tmp/_nx_scan/notificationx/includes/Admin/Reports/ReportEmail.php:324: $headers = array( 'Content-Type: text/html; charset=UTF-8', "From: NotificationX " ); /tmp/_nx_scan/notificationx/includes/Admin/PluginInsights.php:13: const API_URL = 'https://send.wpinsight.com/process-plugin-data'; /tmp/_nx_scan/notificationx/includes/Admin/PluginInsights.php:217: if ( ( defined('NX_DEBUG') && NX_DEBUG ) || empty( self::API_URL ) ) { /tmp/_nx_scan/notificationx/includes/Admin/PluginInsights.php:551: * WP_REMOTE_POST method responsible for send data to the API_URL /tmp/_nx_scan/notificationx/includes/Admin/PluginInsights.php:573: $request = wp_remote_post( esc_url( self::API_URL ), $args ); /tmp/_nx_scan/notificationx/includes/Admin/Admin.php:237: 'link' => 'https://wpdeveloper.com/review-notificationx', /tmp/_nx_scan/notificationx/includes/Admin/Admin.php:257: 'link' => 'https://wpdeveloper.com/support', /tmp/_nx_scan/notificationx/includes/Admin/Admin.php:316: $b_message = '

6th Anniversary Sale: Unlock premium features with up to 25% discounts & skyrocket your conversions πŸš€

Upgrade to PRO'; /tmp/_nx_scan/notificationx/includes/Admin/Rating/RatingEmail.php:17: private static $_mail_sendto = 'support@wpdeveloper.com'; /tmp/_nx_scan/notificationx/includes/Admin/Rating/RatingEmail.php:80: $headers = ['Content-Type: text/html; charset=UTF-8', "From: NotificationX "]; /tmp/_nx_scan/notificationx/includes/Admin/Scanner/Scanner.php:30: : 'https://api.notificationx.com/cookie-scanner/v1'; /tmp/_nx_scan/notificationx/includes/Admin/EntriesMailReceiver.php:48: 'From: NotificationX ', /tmp/_nx_scan/notificationx/includes/Admin/EntriesMailReceiver.php:86: 'From: NotificationX ', /tmp/_nx_scan/notificationx/includes/FrontEnd/Preview.php:147: .notificationx-woo-shortcode-inline-wrapper > div.edd_inline_conv-theme-seven span:first-child, /tmp/_nx_scan/notificationx/includes/FrontEnd/Preview.php:153: .notificationx-woo-shortcode-inline-wrapper > div.edd_inline_conv-theme-seven span:last-child, /tmp/_nx_scan/notificationx/includes/FrontEnd/Preview.php:201: 'author' => 'WPDeveloper', /tmp/_nx_scan/notificationx/includes/FrontEnd/Preview.php:217: 'email' => 'support@wpdeveloper.com', /tmp/_nx_scan/notificationx/includes/FrontEnd/Preview.php:289: 'website' => 'https://wpdeveloper.com/', /tmp/_nx_scan/notificationx/includes/FrontEnd/Preview.php:292: 'your-email' => 'support@wpdeveloper.com', /tmp/_nx_scan/notificationx/includes/FrontEnd/Preview.php:455: "email" => "support@wpdeveloper.com", /tmp/_nx_scan/notificationx/includes/FrontEnd/FrontEnd.php:835: if (!empty($post['display_last']) && !in_array($post['source'], ['google', 'woo_inline', 'edd_inline', 'tutor_inline', 'learndash_inline', 'google_reviews', 'youtube','woocommerce_sales_inline','fluentcart_inline'])) { ==== PressBar (on-site visitor bar, not remote) ==== post_type && class_exists('\Elementor\Plugin') ) { return \Elementor\Plugin::$instance->documents->get($id)->get_edit_url(); } return $link; }, 10, 3 ); } public function init_extension() { $this->title = __('Press Bar', 'notificationx'); $this->module_title = __('Notification Bar', 'notificationx'); $this->themes = [ 'theme-two' => [ 'source' => NOTIFICATIONX_ADMIN_URL . 'images/extensions/themes/nx-bar-theme-two.jpg', 'column' => "12", 'defaults' => [ 'enable_countdown' => 0, 'nx_bar_border_radius_left' => 0, 'nx_bar_border_radius_right' => 0, 'nx_bar_border_radius_top' => 0, 'nx_bar_border_radius_bottom' => 0, 'button_icon' => 'none', 'bar_bg_color' => '#5807a2', 'press_content' => __('We\'re excited to introduce something new!','notificationx'), ==== Scanner API ==== WP_REST_Server::CREATABLE, 'callback' => array($this, 'initiate_scan'), 'permission_callback' => '__return_true', )); // Register the scan status endpoint register_rest_route($namespace, '/scan/status', array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array($this, 'check_scan_status'), 'permission_callback' => '__return_true', )); } /** * Initiates a scan process for the provided URL. * * Validates the URL parameter and triggers the scan if it's valid. * Responds with the scan status. * * @param WP_REST_Request $request The REST request object containing the URL. * * @return WP_REST_Response The response indicating the status of the scan initiation. */ public function initiate_scan(WP_REST_Request $request) { $url = $request->get_param('url'); ==== README / architecture ==== # NotificationX - Best FOMO, Social Proof, Sales Popup & WooCommerce Notification Bar Plugin # **Contributors:** wpdevteam, re_enter_rupok, Asif2BD, priyomukul **Donate link:** http://notificationx.com **Tags:** sales notification, fomo, social proof, woocommerce notification, notification bar, woocommerce sales, sales popup, popups, boost sales, email subscription, recent sales popup, woo popups, woocommerce review, wordpress marketing, marketing, increase engagement, woocommerce, envato, freemius, givewp, learndash **Requires at least:** 5.0 **Tested up to:** 5.8 **Requires PHP:** 5.6 **Stable tag:** 2.0.1 **License:** GPLv3 **License URI:** https://opensource.org/licenses/GPL-3.0 Want to build instant credibility for your business and boost your conversion rate right away? 97% of your total website visitors don’t buy the product due to the lack of trust and credibility. ## Description ## Want to build instant credibility for your business and boost your conversion rate right away? **97%** of your total website visitors don’t buy the product due to the lack of trust and credibility. Get instant success with **WooCommerce Sales Notification**! https://www.youtube.com/watch?v=E-QR1QdRUrg ## BUILD INSTANT CREDIBILITY USING SOCIAL PROOF NOTIFICATION ## People don’t like being left behind and they love to follow the trends. If your visitors know what other people are buying, reading, commenting then it’s more likely that they will get the confidence instantly and they will want to buy it as well because of FOMO effect. #### **What is 'FOMO'?** #### FOMO means "**F**ear **O**f **M**issing **O**ut"! It’s a popular marketing technique to make your visitors eager to buy from your site leveraging the sense of urgency. ## 🌟 USE FOMO TO INCREASE YOUR LEADS, SALES & ENGAGEMENTS ## [NotificationX](https://notificationx.com) helps you to grab the attention of your website visitors and gain their trust instantly by showing real-time sales and engagement notifications. It creates urgency among your visitors in order to purchase your products right now. No one wants to be left out, after all. https://www.youtube.com/watch?v=J-1m27V4pEE **Sales Notification & Popup Solution for WooCommerce, EDD, Freemius, Envato & More.** ## πŸ“Œ BEST NOTIFICATION BAR PLUGIN FOR WORDPRESS ## Let the visitors know about your special offers, deals, announcement, etc. with a call to action. **NotificationX** brings the [best notification bar](https://notificationx.com/features/) solution for WordPress, and it's absolutely free. You could turn on the end, start time, you will get detail analytics how your notification bar performed as well. https://www.youtube.com/watch?v=l7s9FXgzbEM ### πŸ” FEATURES: ### - Super simple interface and easy to set up the notifications alert - Supports WooCommerce, Easy Digital Download, Freemius, Envato - Customization option to the display across the site, on specific posts, pages or exclude from the specific location - Advanced **9+ integrations** to power up your social proof marketing strategies - Connect NotificationX with **Zapier** to build absolutely anything - Check the results from **Analytics tool** [PRO] and see how many times a certain notification popup has been viewed, clicked or even its Click-through Rate - Option to deactivate unnecessary integrations to keep the site lite ## πŸš€ BOOST CONVERSIONS WITH DIFFERENT NOTIFICATIONS ## 1. **Sales Notifications:** With NotificationX, you can easily design attention-grabbing Sales Notifications to increase your sales rate. If you have WooCommerce or Easy Digital Downloads installed, you can display the recent purchases activity by other customers to influence the website visitors. [More source in Pro: LearnDash, Envato, Themeforest, CodeCanyon)] 2. **WP Comments:** Lets you show the recent comments made by users on your WordPress posts as a notification alert. This is helpful to gain immediate attention from your visitors to check out the specified posts. 3. **WordPress/Woocommerce Review:** Showcase your Plugin/Theme reviews from WordPress.org & build credibility. [Source: WordPress, Freemius & Woocommerce] 4. **WordPress Download Count:** Display how many people have downloaded your product from WordPress.org recently. [Source: WooCommerce, EDD, Freemius, Envato] 5. **Notification Bar:** With "Notification Bar", you can easily display nice looking special discount offer or important notice on your website. Besides, you can even use a countdown timer to create a sense of urgency among your customers or users to hurry up. 6. **Email Subscriptions [PRO]:** MailChimp notification lets you showcase the users who have subscribed to your MailChimp list as a popup on your website. [Source: MailChimp, ConvertKit] 7. **CUSTOM NOTIFICATIONS [PRO]:** You can create advanced and customized notifications just the way you want using these options. ## πŸ”₯ POWER UP WITH ADVANCED INTEGRATIONS ## 1. **[WooCommerce](https://notificationx.com/integrations/woocommerce/):** Showcase your product sales alert and customer activities live on the website with an automated process to increase your eCommerce site conversions rates. **From V 1.7.0 we now support WooCommerce Product reviews as well.** 2. **[Easy Digital Downloads](https://notificationx.com/integrations/easy-digital-downloads/):** Display your clients’ live sales update on the website to build credibility and gather more traffic to boost business growth. 3. **[Freemius [PRO]](https://notificationx.com/integrations/freemius/):** Lets you showcase your customers' real-time sales and review activities through live notification pop up from the Freemius account to your website. 4. **[GiveWP](https://notificationx.com/integrations/givewp/):** Showcase your donor live notification popup on the website to influence others to make more donations. 5. **[Zapier [PRO]](https://notificationx.com/integrations/zapier/):** Integrate Zapier with NotificationX to pull data from supported apps and display custom popups of users real-time notification to convert your visitors into your permanent client. 6. **[MailChimp [PRO]](https://notificationx.com/integrations/mailchimp/):** Create urgency among your visitors to signup your email list to get updates and increase your overall engagement rates. 7. **[ConvertKit [PRO]](https://notificationx.com/integrations/convertkit/):** Enhance your email marketing strategy by showcasing real-time signup activities from ConvertKit and boost site engagement rate instantly. 8. **[LearnDash [PRO]](https://notificationx.com/integrations/learndash/):** Showcase your course enrollment activities to gain credibility and influence others to signup for your next online course. 9. **[Envato [PRO]](https://notificationx.com/integrations/envato/):** Display your download or sales notification from Envato (Themeforest/CodeCanyon) and increase conversion rates. 10. **[Google Analytics[PRO]](https://notificationx.com/integrations/google-analytics/):** Display Google Analytics insights and visitor counts with more marketing insight to engage your potential buyers. ==== admin-notice-generator skill ==== --- name: admin-notice-generator description: Generates WordPress admin notice code for NotificationX campaigns from a Figma design link. Pulls text, colors, CTA, and dismiss copy from Figma via the Figma MCP, then writes ready-to-paste PHP and CSS into Admin.php and wpdeveloper-review-notice.css. tools: Read, Edit, Write, mcp__figma__*, Skill --- # NotificationX Admin Notice Generator This skill is **Figma-first**: it begins by asking the user for a Figma design link, then extracts the campaign's content (headline, CTA text, dismiss text, colors, URL) from that design using the Figma MCP. Only values that cannot be derived from Figma (or that the user wants to override) are asked interactively. Finally, it writes the PHP notice block and CSS into the correct files. ## Target Files - **PHP** : `wp-content/plugins/notificationx/includes/Admin/Admin.php` - **CSS** : `wp-content/plugins/notificationx/assets/admin/css/wpdeveloper-review-notice.css` --- ## Step 0 β€” Ask for the Figma design link (FIRST QUESTION) Before anything else, ask the user **one question**: > "Please share the Figma design link for this admin notice campaign." Wait for the link. Accept any of these forms: - `https://www.figma.com/file//...` - `https://www.figma.com/design//...?node-id=` - A `figma.com` share URL with or without a `node-id` query parameter. If the link does **not** contain a `node-id`, ask the user to share a link that points to the specific frame/node of the notice design (so we extract only the relevant frame, not the whole file). --- ## Step 1 β€” Pull content from Figma Before calling any Figma MCP tool, **load the `figma:figma-use` skill** (it is a mandatory prerequisite per its own description). Then use the Figma MCP to extract the design content: 1. Use `mcp__figma__authenticate` if not authenticated; complete with `mcp__figma__complete_authentication` if prompted. 2. Use `use_figma` (read-mode JS) on the node from the URL to read: - All visible **text layers** (headline, CTA label, dismiss label). - **Fill colors** of: the notice container/left-border accent, the primary CTA button background, the CTA button text color. - Any **hyperlink/URL** attached to the CTA (Figma prototypes / link props). If none, ask the user for it. - Any **image/icon** placed inside the CTA (e.g. a crown SVG). Record asset name if present. 3. Map the extracted content to the campaign fields: | Campaign field | Figma source (typical) | |---|---| | `CAMPAIGN_TEXT` | Largest body text layer / headline frame | | `CTA_BUTTON_TEXT` | Text layer inside the primary button component | | `DISMISS_TEXT` | Secondary text-link / "maybe later" layer (optional) | | `BORDER_COLOR` | Left-edge accent stroke/fill of the notice frame | | `BUTTON_BG` | Background fill of the primary CTA button | | `BUTTON_TEXT_COLOR` | Text fill of the CTA button label | | `PRICING_URL` | Prototype link / annotation on the CTA (ask user if missing) | 4. **Show the extracted values back to the user as a table for review** before continuing. The user can correct any field. --- ## Step 2 β€” Ask only for values Figma cannot provide After confirming the Figma-derived values, ask the user **one question at a time** (sequentially, waiting for each answer) for the remaining fields that cannot be inferred from the design: 1. **Campaign key** (unique snake_case ID, e.g. `nx_summer_sale_2026`) β€” used as the notice ID and CSS selector. The rendered DOM ID will be `wpnotice-notificationx-{campaign_key}`. 2. **Pricing / CTA URL** β€” only if not present in the Figma design. 3. **Campaign start date** β€” when the notice should start showing (e.g. `now`, `+1 day`, or a date like `1st April, 2026`). Default: `now`. 4. **Campaign expiry date** β€” when the notice should stop showing (e.g. `11:59:59pm 30th April, 2026`). Leave blank for no expiry. 5. **Show only on screens** β€” comma-separated WordPress screen IDs (e.g. `dashboard`). Leave blank for all screens. After all questions are answered, **confirm the full collected values** (Figma-derived + asked) with the user before writing any code. --- ## Step 3 β€” Generate Code ### PHP block template Insert the following block **just before** the closing line `self::$cache_bank->create_account( $notices );` in the `admin_notices()` method of `Admin.php`. ```php ==== Does NX phone home for notices? ==== /tmp/_nx_scan/notificationx/includes/Extensions/LearnPress/LearnPress.php:545: return sprintf(__('

Make sure that you have LearnPress LMS installed & configured to use its campaign & course selling data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/SureCart/SureCart.php:467: return sprintf(__('

Make sure that you have the SureCart WordPress plugin installed & configured to use its campaign and selling data. For detailed guidelines, check out the step-by-step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/ReviewX/ReviewX.php:279: return sprintf(__('

Make sure that you have WooCommerce & ReviewX installed & activated to use this campaign. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:3: * ActiveCampaign Extension /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:8:namespace NotificationX\Extensions\ActiveCampaign; /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:14: * ActiveCampaign Extension /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:15: * @method static ActiveCampaign get_instance($args = null) /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:17:class ActiveCampaign extends Extension { /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:19: * Instance of ActiveCampaign /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:21: * @var ActiveCampaign /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:26: public $id = 'ActiveCampaign'; /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:27: public $img = NOTIFICATIONX_ADMIN_URL . 'images/extensions/sources/ActiveCampaign.png'; /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:28: public $doc_link = 'https://notificationx.com/docs/ActiveCampaign-email-subscription-alert/'; /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:30: public $module = 'modules_activecampaign'; /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:43: $this->title = __('ActiveCampaign', 'notificationx'); /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:44: $this->module_title = __('ActiveCampaign', 'notificationx'); /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:48: * Get data for ActiveCampaign Extension. /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:54: return 'Hello From ActiveCampaign'; /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:58: return sprintf(__('

Make sure that you have signed in & retrieved API URL & API key from ActiveCampaign account to use its campaign & email subscriptions data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:59:

πŸ‘‰ NotificationX Integration with ActiveCampaign

/tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:61:

πŸ”₯ Boosting Engagement with ActiveCampaign Email Subscription Alerts via NotificationX

', 'notificationx'), /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:62: 'https://help.activecampaign.com/hc/en-us/articles/207317590-Getting-started-with-the-API#getting-started-with-the-api-0-0', /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:63: 'https://notificationx.com/docs/activecampaign-email-subscription-alert/', /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:64: 'https://notificationx.com/integrations/activecampaign/', /tmp/_nx_scan/notificationx/includes/Extensions/ActiveCampaign/ActiveCampaign.php:65: 'https://notificationx.com/blog/activecampaign-email-subscription-alerts/' /tmp/_nx_scan/notificationx/includes/Extensions/NJF/NinjaForms.php:404: return sprintf(__('

Make sure that you have Ninja Forms installed & configured to use its campaign & form subscriptions data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/Give/Give.php:297: return sprintf(__('

Make sure that you have GiveWP installed & configured to use its campaign & donars data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/Tutor/Tutor.php:540: return sprintf(__('

Make sure that you have Tutor LMS installed & configured to use its campaign & course selling data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/PressBar/PressBar.php:2264: return sprintf(__('

Supercharge your WordPress site with an AI-powered Notification Bar that help you create and launches instant popup campaigns β€” smarter and faster than ever. Let AI generate compelling bar content for you in seconds. Need help getting started? Explore our step-by-step guides to set up your AI-enhanced notification bars using both Elementor and Gutenberg.

/tmp/_nx_scan/notificationx/includes/Extensions/GlobalFields.php:2244: Rules::includes('source', ['woocommerce', 'woocommerce_sales', 'woocommerce_sales_reviews', 'custom_notification_conversions', 'surecart', 'edd', 'tutor', 'learndash', 'learnpress', 'cf7', 'wp_comments', 'njf', 'wpf', 'fluentform', 'elementor_form', 'custom_notification', 'grvf', 'mailchimp', 'convertkit', 'ActiveCampaign', 'zapier_email_subscription', 'give', 'woo_reviews', 'freemius_conversions', 'freemius_reviews', 'zapier_conversions', 'zapier_reviews']), /tmp/_nx_scan/notificationx/includes/Extensions/FluentForm/FluentForm.php:405:

To use the campaign & form subscription data, make sure that you have Fluent Forms installed and configured on your website. For detailed guidelines, follow this documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/Envato/Envato.php:69: return sprintf(__('

Make sure that you have created & signed in to Envato account to use its campaign & product sales data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/WPF/WPForms.php:342: return sprintf(__('

Make sure that you have WPForms installed & configured to use its campaign & form subscriptions data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/MailChimp/MailChimp.php:58: return sprintf(__('

Make sure that you have signed in & retrieved API key from MailChimp account to use its campaign & email subscriptions data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/EDD/EDD.php:398: return sprintf(__('

Make sure that you have Easy Digital Downloads installed & activated to use its campaign & product sales data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/ExtensionFactory.php:78: 'ActiveCampaign' => 'NotificationX\Extensions\ActiveCampaign\ActiveCampaign', /tmp/_nx_scan/notificationx/includes/Extensions/LearnDash/LearnDash.php:70: return sprintf(__('

Make sure that you have LearnDash installed & configured to use its campaign & course selling data. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/WooCommerce/WooCommerceSalesInline.php:167: return sprintf(__('

Make sure that you have WooCommerce installed & activated to use this campaign. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/WooCommerce/WOOReviews.php:493: return sprintf(__('

Make sure that you have WooCommerce installed & activated to use this campaign. For further assistance, check out our step by step documentation.

/tmp/_nx_scan/notificationx/includes/Extensions/WooCommerce/WooCommerceSales.php:203: return sprintf(__('

Make sure that you have WooCommerce installed & activated to use this campaign. For further assistance, check out our step by step documentation.

==== External HTTPS URLs in PHP ==== ==== wp-scheduled-posts remote? ==== /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:52: // Remove OLD notice from 1.0.0 (if other WPDeveloper plugin has notice) /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:126: $links[] = sprintf('' . __('Go Pro', 'wp-scheduled-posts') . ''); /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:141: $links[] = sprintf('' . __('Docs & FAQs', 'wp-scheduled-posts') . ''); /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:173: 'link' => 'https://wpdeveloper.com/go/review-wpsp', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:193: 'link' => 'https://wpdeveloper.com/support', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:220: 'html' => '

' . __('Enjoying SchedulePress? Why not check our Pro version which will enable auto schedule, multi social account share and many more features! [Learn More]', 'wp-scheduled-posts') . '

', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:243: 'do_action' => 'wpdeveloper_notice_clicked_for_wp-scheduled-posts', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:249: // Upgrade to pro '; /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:367: 'http://app.wpdeveloper.com', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin.php:591: array('title' => 'WPDeveloper', 'target' => '_blank') /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:175: 'link' => 'https://wpdeveloper.com/docs/wp-scheduled-posts/how-does-auto-scheduler-work/', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:180: 'link' => 'https://wpdeveloper.com/docs/wp-scheduled-posts/how-to-handle-the-missed-schedule-error-using-wp-scheduled-post/', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:185: 'link' => 'https://wpdeveloper.com/docs/advanced-schedule-update-published-posts/', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:190: 'link' => 'https://wpdeveloper.com/support/', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:451: 'sub_title' => __('To configure Email Notify Settings, check out this Doc', 'wp-scheduled-posts'), /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:616: 'desc' => sprintf(__('You can enable/disable Facebook social share. To configure Facebook Social Profile, check out this Doc', 'wp-scheduled-posts'), 'https://wpdeveloper.com/docs/share-scheduled-posts-facebook/'), /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:626: 'https://wpdeveloper.com/docs/share-scheduled-posts-facebook/', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:642: 'https://wpdeveloper.com/docs/automatically-tweet-wordpress-posts/' /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:653: 'https://wpdeveloper.com/docs/automatically-tweet-wordpress-posts/', /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:667: 'desc' => sprintf(__('You can enable/disable LinkedIn social share. To configure LinkedIn Social Profile, check out this Doc', 'wp-scheduled-posts'), 'https://wpdeveloper.com/docs/share-wordpress-posts-on-linkedin/'), /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:672: 'desc' => sprintf(__('For details on LinkedIn configuration, check out this Doc.
Click here to Retrieve Your API Keys from your LinkedIn account.', 'wp-scheduled-posts'), 'https://wpdeveloper.com/docs/share-wordpress-posts-on-linkedin/', 'https://developer.linkedin.com/'), /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:684: 'desc' => sprintf(__('You can enable/disable Pinterest social share. To configure Pinterest Social Profile, check out this Doc', 'wp-scheduled-posts'), 'https://wpdeveloper.com/docs/wordpress-posts-on-pinterest/'), /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:689: 'desc' => sprintf(__('For details on Pinterest configuration, check out this Doc.
Click here to Retrieve Your API Keys from your Pinterest account.', 'wp-scheduled-posts'), 'https://wpdeveloper.com/docs/wordpress-posts-on-pinterest/', 'https://developers.pinterest.com/'), /tmp/_nx_scan/wp-scheduled-posts/includes/Admin/Settings.php:701: 'desc' => sprintf(__('You can enable/disable Instagram social share. To configure Instagram Social Profile, check out this Doc', 'wp-scheduled-posts'), 'https://wpdeveloper.com/docs/share-scheduled-wordpress-posts-on-instagram/'), Hello World!