Commit c3ec96d661 for woocommerce

commit c3ec96d661099ade65a8b49aaac87185bb8cea84
Author: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
Date:   Mon Jan 5 12:08:23 2026 +0900

    Fix Analytics Products report compatibility for extended variable product types (#62648)

    Fix Analytics Products report compatibility for extended variable
       product types

       Products extending WC_Product_Variable (like variable-subscription or ATUM
       product types) were not showing variations breakdown in Analytics > Products
       because the isVariable check only matched type === 'variable'.

       This change adds a fallback to check if the product has variations array,
       which correctly identifies all variable-like products regardless of their
       specific type string.

diff --git a/plugins/woocommerce/changelog/fix-variable-product-types-analytics-compatibility b/plugins/woocommerce/changelog/fix-variable-product-types-analytics-compatibility
new file mode 100644
index 0000000000..a01cb09024
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-variable-product-types-analytics-compatibility
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Fix Analytics Products report to support product types extending WC_Product_Variable by checking variations array as fallback.
diff --git a/plugins/woocommerce/client/admin/client/analytics/report/products/index.js b/plugins/woocommerce/client/admin/client/analytics/report/products/index.js
index 8f63dc056d..87f648ccb2 100644
--- a/plugins/woocommerce/client/admin/client/analytics/report/products/index.js
+++ b/plugins/woocommerce/client/admin/client/analytics/report/products/index.js
@@ -153,10 +153,12 @@ export default compose(
 			const includeArgs = { include: productId };
 			// TODO Look at similar usage to populate tags in the Search component.
 			const products = getItems( 'products', includeArgs );
+			const product = products?.get( productId );
 			const isVariable =
-				products &&
-				products.get( productId ) &&
-				products.get( productId ).type === 'variable';
+				product &&
+				( product.type === 'variable' ||
+					( Array.isArray( product.variations ) &&
+						product.variations.length > 0 ) );
 			const isProductsRequesting = isResolving( 'getItems', [
 				'products',
 				includeArgs,