Commit 07d8ca45ef3 for woocommerce
commit 07d8ca45ef351ed72cfd3b51f0df2bdb4cfc1c70
Author: Michael Pretty <prettyboymp@users.noreply.github.com>
Date: Mon Jun 8 10:40:28 2026 -0400
Make abandoned cart recovery experimental and opt-in (not default-on for new installs) (#65521)
* fix: make abandoned cart recovery experimental and opt-in
The Abandoned cart recovery email feature (added in #65136) was
auto-enabled on fresh installs via a woocommerce_newly_installed hook and
registered as a non-experimental feature. A brand-new store therefore
turned the feature on by default and surfaced the "Abandoned cart
recovery is enabled" admin notice without any merchant opt-in.
Remove the fresh-install auto-enable and mark the feature experimental so
it is off by default everywhere and only activates when a merchant
explicitly opts in, matching the sibling customer_review_request feature.
The enable notice now only fires on a deliberate manual enable.
Reported during 10.9 release testing. Bug introduced in PR #65136.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix: surface plugin incompatibility warnings for abandoned cart recovery
Set `skip_compatibility_checks` to false for the abandoned_cart_recovery
feature so a plugin that explicitly declares itself incompatible still
produces a warning. `default_plugin_compatibility` stays COMPATIBLE, so
plugins that make no declaration are treated as compatible and produce no
noise.
Addresses review feedback on #65521.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
diff --git a/plugins/woocommerce/changelog/abandoned-cart-recovery-experimental-optin b/plugins/woocommerce/changelog/abandoned-cart-recovery-experimental-optin
new file mode 100644
index 00000000000..00a068932a4
--- /dev/null
+++ b/plugins/woocommerce/changelog/abandoned-cart-recovery-experimental-optin
@@ -0,0 +1,4 @@
+Significance: patch
+Type: tweak
+
+Make the Abandoned cart recovery feature experimental and opt-in only; it is no longer enabled automatically on new installs.
diff --git a/plugins/woocommerce/includes/class-wc-install.php b/plugins/woocommerce/includes/class-wc-install.php
index 0233d5a07e6..2a659c6b102 100644
--- a/plugins/woocommerce/includes/class-wc-install.php
+++ b/plugins/woocommerce/includes/class-wc-install.php
@@ -373,7 +373,6 @@ class WC_Install {
add_action( 'woocommerce_newly_installed', array( __CLASS__, 'maybe_enable_hpos' ), 20 );
add_action( 'woocommerce_newly_installed', array( __CLASS__, 'add_coming_soon_option' ), 20 );
add_action( 'woocommerce_newly_installed', array( __CLASS__, 'enable_email_improvements_for_newly_installed' ), 20 );
- add_action( 'woocommerce_newly_installed', array( __CLASS__, 'enable_abandoned_cart_recovery_for_newly_installed' ), 20 );
add_action( 'woocommerce_newly_installed', array( __CLASS__, 'enable_customer_stock_notifications_signups' ), 20 );
add_action( 'woocommerce_newly_installed', array( __CLASS__, 'enable_analytics_scheduled_import' ), 20 );
add_action( 'woocommerce_newly_installed', array( __CLASS__, 'enable_product_instance_caching_for_newly_installed' ), 20 );
@@ -1285,20 +1284,6 @@ class WC_Install {
update_option( 'woocommerce_email_improvements_enabled_count', 1 );
}
- /**
- * Enable the abandoned cart recovery feature by default for new shops.
- *
- * Existing stores receiving this as a plugin update remain default-off and
- * must opt in via WooCommerce → Settings → Advanced → Features.
- *
- * @since 10.9.0
- *
- * @return void
- */
- public static function enable_abandoned_cart_recovery_for_newly_installed() {
- wc_get_container()->get( FeaturesController::class )->change_feature_enable( 'abandoned_cart_recovery', true );
- }
-
/**
* Enable customer stock notifications signups by default for new shops.
*
diff --git a/plugins/woocommerce/src/Internal/Features/FeaturesController.php b/plugins/woocommerce/src/Internal/Features/FeaturesController.php
index 780f841c66c..0354a8558e4 100644
--- a/plugins/woocommerce/src/Internal/Features/FeaturesController.php
+++ b/plugins/woocommerce/src/Internal/Features/FeaturesController.php
@@ -451,11 +451,10 @@ class FeaturesController {
'Send a reminder email to shoppers who didn\'t finish checking out.',
'woocommerce'
),
- // Skip compatibility checks like the other opt-in transactional-email features.
- 'skip_compatibility_checks' => true,
+ 'skip_compatibility_checks' => false,
'default_plugin_compatibility' => FeaturePluginCompatibility::COMPATIBLE,
'enabled_by_default' => false,
- 'is_experimental' => false,
+ 'is_experimental' => true,
),
'email_improvements' => array(
'name' => __( 'Email improvements', 'woocommerce' ),