Commit 8a87cc1ef16 for woocommerce

commit 8a87cc1ef160190fb6a87df08fea12dcb950a53d
Author: Herman <KokkieH@users.noreply.github.com>
Date:   Tue Sep 29 16:33:13 2026 +0200

    Update newsletter opt-in wording and link to Privacy Policy (#69201)

    * Update newsletter opt-in wording and link to Privacy Policy

    * 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/69201-update-wccom-2980-newsletter-opt-in-wording b/plugins/woocommerce/changelog/69201-update-wccom-2980-newsletter-opt-in-wording
new file mode 100644
index 00000000000..8dc7db1ab28
--- /dev/null
+++ b/plugins/woocommerce/changelog/69201-update-wccom-2980-newsletter-opt-in-wording
@@ -0,0 +1,4 @@
+Significance: minor
+Type: tweak
+
+Update copy and add privacy policy link to newsletter opt-in in the onboarding profiler.
diff --git a/plugins/woocommerce/client/admin/client/core-profiler/pages/BusinessInfo.tsx b/plugins/woocommerce/client/admin/client/core-profiler/pages/BusinessInfo.tsx
index 2b28bf8216a..8c808873d8d 100644
--- a/plugins/woocommerce/client/admin/client/core-profiler/pages/BusinessInfo.tsx
+++ b/plugins/woocommerce/client/admin/client/core-profiler/pages/BusinessInfo.tsx
@@ -29,6 +29,7 @@ import { BusinessInfoEvent } from '../events';
 import { CountryStateOption } from '../services/country';
 import { Heading } from '../components/heading/heading';
 import { Navigation } from '../components/navigation/navigation';
+import { TrackedLink } from '~/components/tracked-link/tracked-link';
 import { GeolocationCountrySelect } from '../components/geolocation-country-select/geolocation-country-select';

 /** These are some store names that are known to be set by default and not likely to be used as actual names */
@@ -385,10 +386,20 @@ export const BusinessInfo = ( {
 							<CheckboxControl
 								__nextHasNoMarginBottom
 								className="core-profiler__checkbox"
-								label={ __(
-									'Opt-in to receive tips, discounts, and recommendations from the Woo team directly in your inbox.',
-									'woocommerce'
-								) }
+								// @ts-expect-error - Type definition is not correct. Label can be a string or JSX.Element.
+								label={
+									<TrackedLink
+										message={ __(
+											// translators: {{Link}} is a placeholder for a html element.
+											'Get tips, discounts, and recommendations from Woo. You can opt out at any time. We track email opens and clicks to improve our emails. See our {{Link}}Privacy Policy{{/Link}} for details.',
+											'woocommerce'
+										) }
+										eventName="coreprofiler_business_info_privacy_policy_click"
+										targetUrl="https://automattic.com/privacy/"
+										linkType="external"
+										target="_blank"
+									/>
+								}
 								checked={ isOptInMarketing }
 								onChange={ ( isChecked ) => {
 									setIsOptInMarketing( isChecked );
diff --git a/plugins/woocommerce/client/admin/client/core-profiler/pages/test/business-info.test.tsx b/plugins/woocommerce/client/admin/client/core-profiler/pages/test/business-info.test.tsx
index e5618147188..0693c5457a1 100644
--- a/plugins/woocommerce/client/admin/client/core-profiler/pages/test/business-info.test.tsx
+++ b/plugins/woocommerce/client/admin/client/core-profiler/pages/test/business-info.test.tsx
@@ -3,6 +3,7 @@
  */
 import { render, screen, waitFor } from '@testing-library/react';
 import userEvent from '@testing-library/user-event';
+import { recordEvent } from '@woocommerce/tracks';

 /**
  * Internal dependencies
@@ -10,6 +11,11 @@ import userEvent from '@testing-library/user-event';
 import { BusinessInfo } from '../BusinessInfo';
 import { CoreProfilerStateMachineContext } from '../..';

+jest.mock( '@woocommerce/tracks', () => ( {
+	...jest.requireActual( '@woocommerce/tracks' ),
+	recordEvent: jest.fn(),
+} ) );
+
 describe( 'BusinessInfo', () => {
 	let props: {
 		sendEvent: jest.Mock;
@@ -332,7 +338,7 @@ describe( 'BusinessInfo', () => {
 			props.context.onboardingProfile.is_store_country_set = true;
 			render( <BusinessInfo { ...props } /> );
 			const checkbox = screen.getByRole( 'checkbox', {
-				name: /Opt-in to receive tips, discounts, and recommendations from the Woo team directly in your inbox./i,
+				name: /Get tips, discounts, and recommendations from Woo./i,
 			} );
 			userEvent.click( checkbox );
 			const continueButton = screen.getByRole( 'button', {
@@ -346,7 +352,7 @@ describe( 'BusinessInfo', () => {
 			props.context.onboardingProfile.is_store_country_set = true;
 			render( <BusinessInfo { ...props } /> );
 			const checkbox = screen.getByRole( 'checkbox', {
-				name: /Opt-in to receive tips, discounts, and recommendations from the Woo team directly in your inbox./i,
+				name: /Get tips, discounts, and recommendations from Woo./i,
 			} );
 			userEvent.click( checkbox );
 			const emailInput = screen.getByRole( 'textbox', {
@@ -416,7 +422,7 @@ describe( 'BusinessInfo', () => {
 			props.context.businessInfo.location = 'AW';
 			render( <BusinessInfo { ...props } /> );
 			const checkbox = screen.getByRole( 'checkbox', {
-				name: /Opt-in to receive tips, discounts, and recommendations from the Woo team directly in your inbox./i,
+				name: /Get tips, discounts, and recommendations from Woo./i,
 			} );
 			userEvent.click( checkbox );
 			const emailInput = screen.getByRole( 'textbox', {
@@ -432,7 +438,7 @@ describe( 'BusinessInfo', () => {
 			props.context.businessInfo.location = 'AW';
 			render( <BusinessInfo { ...props } /> );
 			const checkbox = screen.getByRole( 'checkbox', {
-				name: /Opt-in to receive tips, discounts, and recommendations from the Woo team directly in your inbox./i,
+				name: /Get tips, discounts, and recommendations from Woo./i,
 			} );
 			userEvent.click( checkbox );
 			const emailInput = screen.getByRole( 'textbox', {
@@ -452,7 +458,7 @@ describe( 'BusinessInfo', () => {
 			} );
 			userEvent.type( emailInput, 'invalid email' );
 			const checkbox = screen.getByRole( 'checkbox', {
-				name: /Opt-in to receive tips, discounts, and recommendations from the Woo team directly in your inbox./i,
+				name: /Get tips, discounts, and recommendations from Woo./i,
 			} );
 			userEvent.click( checkbox );
 			expect(
@@ -464,7 +470,7 @@ describe( 'BusinessInfo', () => {
 			props.context.businessInfo.location = 'AW';
 			render( <BusinessInfo { ...props } /> );
 			const checkbox = screen.getByRole( 'checkbox', {
-				name: /Opt-in to receive tips, discounts, and recommendations from the Woo team directly in your inbox./i,
+				name: /Get tips, discounts, and recommendations from Woo./i,
 			} );
 			userEvent.click( checkbox );
 			const emailInput = screen.getByRole( 'textbox', {
@@ -485,7 +491,7 @@ describe( 'BusinessInfo', () => {
 			props.context.businessInfo.location = 'AW';
 			render( <BusinessInfo { ...props } /> );
 			const checkbox = screen.getByRole( 'checkbox', {
-				name: /Opt-in to receive tips, discounts, and recommendations from the Woo team directly in your inbox./i,
+				name: /Get tips, discounts, and recommendations from Woo./i,
 			} );
 			userEvent.click( checkbox );
 			const emailInput = screen.getByRole( 'textbox', {
@@ -519,7 +525,7 @@ describe( 'BusinessInfo', () => {
 			props.context.onboardingProfile.is_store_country_set = true;
 			render( <BusinessInfo { ...props } /> );
 			const checkbox = screen.getByRole( 'checkbox', {
-				name: /Opt-in to receive tips, discounts, and recommendations from the Woo team directly in your inbox./i,
+				name: /Get tips, discounts, and recommendations from Woo./i,
 			} );
 			userEvent.click( checkbox );
 			const emailInput = screen.getByRole( 'textbox', {
@@ -531,5 +537,21 @@ describe( 'BusinessInfo', () => {
 			} );
 			expect( continueButton ).not.toBeDisabled();
 		} );
+
+		it( 'should link to the privacy policy and record a Tracks event when it is clicked', () => {
+			render( <BusinessInfo { ...props } /> );
+			const link = screen.getByRole( 'link', {
+				name: 'Privacy Policy (opens in a new tab)',
+			} );
+			expect( link ).toHaveAttribute(
+				'href',
+				'https://automattic.com/privacy/'
+			);
+			userEvent.click( link );
+			expect( recordEvent ).toHaveBeenCalledWith(
+				'coreprofiler_business_info_privacy_policy_click',
+				{}
+			);
+		} );
 	} );
 } );
diff --git a/plugins/woocommerce/tests/e2e/tests/onboarding/onboarding-wizard.spec.ts b/plugins/woocommerce/tests/e2e/tests/onboarding/onboarding-wizard.spec.ts
index 4dbb6b59e94..0a260d347b3 100644
--- a/plugins/woocommerce/tests/e2e/tests/onboarding/onboarding-wizard.spec.ts
+++ b/plugins/woocommerce/tests/e2e/tests/onboarding/onboarding-wizard.spec.ts
@@ -110,7 +110,7 @@ test.describe(
 				await page
 					.getByPlaceholder( 'wordpress@example.com' )
 					.fill( 'merchant@example.com' );
-				await page.getByLabel( 'Opt-in to receive tips,' ).uncheck();
+				await page.getByLabel( 'Get tips, discounts,' ).uncheck();
 				await page.getByRole( 'button', { name: 'Continue' } ).click();
 			} );

@@ -274,7 +274,7 @@ test.describe(
 				await page
 					.getByPlaceholder( 'wordpress@example.com' )
 					.fill( 'merchant@example.com' );
-				await page.getByLabel( 'Opt-in to receive tips,' ).uncheck();
+				await page.getByLabel( 'Get tips, discounts,' ).uncheck();
 				await page.getByRole( 'button', { name: 'Continue' } ).click();
 			} );