Commit 8a83c3bf481 for woocommerce

commit 8a83c3bf481eb268205911695ccd7be01075eb02
Author: Taha Paksu <3295+tpaksu@users.noreply.github.com>
Date:   Mon Mar 9 11:45:31 2026 +0300

    [WOOPLUG-6376] update: add IE, PT with Packlink and move DE to Packlink (#63567)

    * [WOOPLUG-6376] update: add IE, PT with Packlink and move DE to Packlink

    * [WOOPLUG-6376] update: add IE, PT with Packlink, move DE to Packlink, GB shipstation-only in settings

    - Core Profiler: remove DE from ShipStation, add DE/IE/PT to Packlink
    - Task List: add IE/PT to Packlink is_visible and countries_where_primary
    - Shipping.php: add IE/PT to can_view() country list
    - Shipping Settings: DE now Packlink only, GB now ShipStation only, add IE/PT
    - Update tests to match new country assignments

    * [WOOPLUG-6376] test: update shipping task eligible countries data provider

    Add IE, PT and sync missing countries (US, NZ, SG, HK, MX, CO) in the
    can_view eligible countries data provider to match the current country list.

    * Add changefile(s) from automation for the following project(s): woocommerce, woocommerce/client/admin

    ---------

    Co-authored-by: woocommercebot <woocommercebot@users.noreply.github.com>

diff --git a/plugins/woocommerce/changelog/63567-update-wooplug-6376-add-ie-pt-with-packlink-and-move-de-to-packlink b/plugins/woocommerce/changelog/63567-update-wooplug-6376-add-ie-pt-with-packlink-and-move-de-to-packlink
new file mode 100644
index 00000000000..74d64d63265
--- /dev/null
+++ b/plugins/woocommerce/changelog/63567-update-wooplug-6376-add-ie-pt-with-packlink-and-move-de-to-packlink
@@ -0,0 +1,4 @@
+Significance: patch
+Type: tweak
+Comment: Update shipping partner suggestions to add Ireland and Portugal with Packlink, and move Germany to Packlink.
+
diff --git a/plugins/woocommerce/client/admin/client/shipping/experimental-shipping-recommendations.tsx b/plugins/woocommerce/client/admin/client/shipping/experimental-shipping-recommendations.tsx
index 82cc9ab178d..af7f6e7fe3d 100644
--- a/plugins/woocommerce/client/admin/client/shipping/experimental-shipping-recommendations.tsx
+++ b/plugins/woocommerce/client/admin/client/shipping/experimental-shipping-recommendations.tsx
@@ -32,13 +32,15 @@ const COUNTRY_EXTENSIONS_MAP: Record< string, ExtensionId[] > = {
 	FR: [ 'packlink' ],
 	ES: [ 'packlink' ],
 	IT: [ 'packlink' ],
-	DE: [ 'shipstation', 'packlink' ],
-	GB: [ 'shipstation', 'packlink' ],
+	DE: [ 'packlink' ],
+	GB: [ 'shipstation' ],
 	NL: [ 'packlink' ],
 	AT: [ 'packlink' ],
 	BE: [ 'packlink' ],
 	AU: [ 'shipstation' ],
 	NZ: [ 'shipstation' ],
+	IE: [ 'packlink' ],
+	PT: [ 'packlink' ],
 };

 const EXTENSION_PLUGIN_SLUGS: Record< ExtensionId, string > = {
diff --git a/plugins/woocommerce/client/admin/client/shipping/test/experimental-shipping-recommendations.tsx b/plugins/woocommerce/client/admin/client/shipping/test/experimental-shipping-recommendations.tsx
index d8938ce0359..88c97c7fe2a 100644
--- a/plugins/woocommerce/client/admin/client/shipping/test/experimental-shipping-recommendations.tsx
+++ b/plugins/woocommerce/client/admin/client/shipping/test/experimental-shipping-recommendations.tsx
@@ -122,23 +122,27 @@ describe( 'ShippingRecommendations', () => {
 			expect( screen.queryByText( 'Packlink PRO' ) ).toBeInTheDocument();
 		} );

-		it( 'should show ShipStation and Packlink PRO for DE', () => {
+		it( 'should show only Packlink PRO for DE', () => {
 			mockSelectForCountry( 'DE' );
 			render( <ShippingRecommendations /> );

 			expect(
 				screen.queryByText( 'WooCommerce Shipping' )
 			).not.toBeInTheDocument();
-			expect( screen.queryByText( 'ShipStation' ) ).toBeInTheDocument();
+			expect(
+				screen.queryByText( 'ShipStation' )
+			).not.toBeInTheDocument();
 			expect( screen.queryByText( 'Packlink PRO' ) ).toBeInTheDocument();
 		} );

-		it( 'should show ShipStation and Packlink PRO for GB', () => {
+		it( 'should show only ShipStation for GB', () => {
 			mockSelectForCountry( 'GB' );
 			render( <ShippingRecommendations /> );

 			expect( screen.queryByText( 'ShipStation' ) ).toBeInTheDocument();
-			expect( screen.queryByText( 'Packlink PRO' ) ).toBeInTheDocument();
+			expect(
+				screen.queryByText( 'Packlink PRO' )
+			).not.toBeInTheDocument();
 		} );

 		it( 'should show only ShipStation for AU', () => {
@@ -158,7 +162,7 @@ describe( 'ShippingRecommendations', () => {
 			expect( screen.queryByText( 'ShipStation' ) ).toBeInTheDocument();
 		} );

-		it.each( [ 'ES', 'IT', 'NL', 'AT', 'BE' ] )(
+		it.each( [ 'ES', 'IT', 'NL', 'AT', 'BE', 'IE', 'PT' ] )(
 			'should show only Packlink PRO for %s',
 			( country ) => {
 				mockSelectForCountry( country );
@@ -218,10 +222,9 @@ describe( 'ShippingRecommendations', () => {
 		} );

 		it( 'should not show Packlink PRO when it is already active', () => {
-			mockSelectForCountry( 'DE', [ 'packlink-pro-shipping' ] );
+			mockSelectForCountry( 'FR', [ 'packlink-pro-shipping' ] );
 			render( <ShippingRecommendations /> );

-			expect( screen.queryByText( 'ShipStation' ) ).toBeInTheDocument();
 			expect(
 				screen.queryByText( 'Packlink PRO' )
 			).not.toBeInTheDocument();
@@ -287,8 +290,7 @@ describe( 'ShippingRecommendations', () => {
 				{
 					context: 'settings',
 					country: 'DE',
-					plugins:
-						'woocommerce-shipstation-integration,packlink-pro-shipping',
+					plugins: 'packlink-pro-shipping',
 				}
 			);
 		} );
diff --git a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/Tasks/Shipping.php b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/Tasks/Shipping.php
index 6b2a501118c..de27eaebab2 100644
--- a/plugins/woocommerce/src/Admin/Features/OnboardingTasks/Tasks/Shipping.php
+++ b/plugins/woocommerce/src/Admin/Features/OnboardingTasks/Tasks/Shipping.php
@@ -116,7 +116,7 @@ class Shipping extends Task {
 				return true;
 			}

-			return in_array( $store_country, array( 'US', 'CA', 'AU', 'NZ', 'SG', 'HK', 'GB', 'ES', 'IT', 'DE', 'FR', 'MX', 'CO', 'CL', 'AR', 'PE', 'BR', 'UY', 'GT', 'NL', 'AT', 'BE' ), true );
+			return in_array( $store_country, array( 'US', 'CA', 'AU', 'NZ', 'SG', 'HK', 'GB', 'ES', 'IT', 'DE', 'FR', 'MX', 'CO', 'CL', 'AR', 'PE', 'BR', 'UY', 'GT', 'NL', 'AT', 'BE', 'IE', 'PT' ), true );
 		}

 		return self::has_physical_products();
diff --git a/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/DefaultShippingPartners.php b/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/DefaultShippingPartners.php
index ec803289ca8..1258289252d 100644
--- a/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/DefaultShippingPartners.php
+++ b/plugins/woocommerce/src/Admin/Features/ShippingPartnerSuggestions/DefaultShippingPartners.php
@@ -212,10 +212,10 @@ class DefaultShippingPartners {
 				),
 				'learn_more_link'         => 'https://wordpress.org/plugins/packlink-pro-shipping/',
 				'is_visible'              => array(
-					self::get_rules_for_countries( array( 'FR', 'DE', 'ES', 'IT', 'NL', 'AT', 'BE' ) ),
+					self::get_rules_for_countries( array( 'FR', 'DE', 'ES', 'IT', 'NL', 'AT', 'BE', 'IE', 'PT' ) ),
 				),
 				'available_layouts'       => array( 'row', 'column' ),
-				'countries_where_primary' => array( 'FR', 'DE', 'ES', 'IT', 'NL', 'AT', 'BE' ),
+				'countries_where_primary' => array( 'FR', 'DE', 'ES', 'IT', 'NL', 'AT', 'BE', 'IE', 'PT' ),
 			),
 			array(
 				'id'                      => 'woocommerce-shipping',
diff --git a/plugins/woocommerce/src/Internal/Admin/RemoteFreeExtensions/DefaultFreeExtensions.php b/plugins/woocommerce/src/Internal/Admin/RemoteFreeExtensions/DefaultFreeExtensions.php
index 8e9eb4d2ee1..791cd5a7767 100644
--- a/plugins/woocommerce/src/Internal/Admin/RemoteFreeExtensions/DefaultFreeExtensions.php
+++ b/plugins/woocommerce/src/Internal/Admin/RemoteFreeExtensions/DefaultFreeExtensions.php
@@ -482,7 +482,7 @@ class DefaultFreeExtensions {
 				'is_visible'     => array(
 					array(
 						'type'      => 'base_location_country',
-						'value'     => array( 'CA', 'DE', 'GB', 'AU', 'NZ' ),
+						'value'     => array( 'CA', 'GB', 'AU', 'NZ' ),
 						'operation' => 'in',
 					),
 				),
@@ -495,7 +495,7 @@ class DefaultFreeExtensions {
 				'is_visible'     => array(
 					array(
 						'type'      => 'base_location_country',
-						'value'     => array( 'FR', 'ES', 'IT', 'NL', 'AT', 'BE' ),
+						'value'     => array( 'FR', 'ES', 'IT', 'DE', 'NL', 'AT', 'BE', 'IE', 'PT' ),
 						'operation' => 'in',
 					),
 				),
diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/tasks/shipping.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/tasks/shipping.php
index 9db22e524eb..5e52403e304 100644
--- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/tasks/shipping.php
+++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/features/onboarding-tasks/tasks/shipping.php
@@ -150,13 +150,19 @@ class WC_Admin_Tests_OnboardingTasks_Task_Shipping extends WC_Unit_Test_Case {
 	 */
 	public function data_provider_can_view_eligible_countries() {
 		return array(
-			array( 'AU' ),
+			array( 'US' ),
 			array( 'CA' ),
+			array( 'AU' ),
+			array( 'NZ' ),
+			array( 'SG' ),
+			array( 'HK' ),
 			array( 'GB' ),
 			array( 'ES' ),
 			array( 'IT' ),
 			array( 'DE' ),
 			array( 'FR' ),
+			array( 'MX' ),
+			array( 'CO' ),
 			array( 'CL' ),
 			array( 'AR' ),
 			array( 'PE' ),
@@ -166,6 +172,8 @@ class WC_Admin_Tests_OnboardingTasks_Task_Shipping extends WC_Unit_Test_Case {
 			array( 'NL' ),
 			array( 'AT' ),
 			array( 'BE' ),
+			array( 'IE' ),
+			array( 'PT' ),
 		);
 	}
 }