diff --git a/assets/js/components/email-reporting/FrequencySelector.js b/assets/js/components/email-reporting/FrequencySelector.js
index f78c398c8bf..a6753cfa831 100644
--- a/assets/js/components/email-reporting/FrequencySelector.js
+++ b/assets/js/components/email-reporting/FrequencySelector.js
@@ -99,7 +99,7 @@ export default function FrequencySelector( { isUserSubscribed, isLoading } ) {
},
monthly: {
label: __( 'Monthly', 'google-site-kit' ),
- period: __( 'Last 28 days', 'google-site-kit' ),
+ period: __( 'Last month', 'google-site-kit' ),
description: __(
'Sent on the 1st of each month',
'google-site-kit'
diff --git a/assets/js/components/email-reporting/__snapshots__/FrequencySelector.test.js.snap b/assets/js/components/email-reporting/__snapshots__/FrequencySelector.test.js.snap
index c428e727987..4a86f5883ac 100644
--- a/assets/js/components/email-reporting/__snapshots__/FrequencySelector.test.js.snap
+++ b/assets/js/components/email-reporting/__snapshots__/FrequencySelector.test.js.snap
@@ -75,7 +75,7 @@ exports[`FrequencySelector Story states (visual + DOM) Monthly selected renders
- Last 28 days
+ Last month
- Last 28 days
+ Last month
- Last 28 days
+ Last month
- Last 28 days
+ Last month
- Last 28 days
+ Last month
- Last 28 days
+ Last month
7,
- Email_Reporting_Settings::FREQUENCY_MONTHLY => 30,
+ Email_Reporting_Settings::FREQUENCY_MONTHLY => (int) $send_date->format( 't' ),
Email_Reporting_Settings::FREQUENCY_QUARTERLY => 90,
);
diff --git a/tests/phpunit/integration/Core/Email_Reporting/Initiator_TaskTest.php b/tests/phpunit/integration/Core/Email_Reporting/Initiator_TaskTest.php
index 541ffc43c76..cf3fbbe476f 100644
--- a/tests/phpunit/integration/Core/Email_Reporting/Initiator_TaskTest.php
+++ b/tests/phpunit/integration/Core/Email_Reporting/Initiator_TaskTest.php
@@ -201,7 +201,7 @@ public function test_handle_callback_action_without_subscribers_still_schedules_
/**
* @dataProvider data_build_reference_dates_uses_expected_period_length
*/
- public function test_build_reference_dates_uses_expected_period_length( $frequency, $expected_days ) {
+ public function test_build_reference_dates_uses_expected_period_length( $frequency, $expected_days, $timestamp_string ) {
$original_timezone_string = get_option( 'timezone_string' );
$original_gmt_offset = get_option( 'gmt_offset' );
@@ -209,7 +209,7 @@ public function test_build_reference_dates_uses_expected_period_length( $frequen
update_option( 'gmt_offset', 0 );
try {
- $timestamp = strtotime( '2026-03-16 00:00:00 UTC' );
+ $timestamp = strtotime( $timestamp_string );
$reference_dates = Initiator_Task::build_reference_dates(
$frequency,
@@ -256,9 +256,12 @@ public function test_build_reference_dates_uses_previous_day_as_send_date() {
public function data_build_reference_dates_uses_expected_period_length() {
return array(
- 'weekly' => array( Email_Reporting_Settings::FREQUENCY_WEEKLY, 7 ),
- 'monthly' => array( Email_Reporting_Settings::FREQUENCY_MONTHLY, 30 ),
- 'quarterly' => array( Email_Reporting_Settings::FREQUENCY_QUARTERLY, 90 ),
+ 'weekly' => array( Email_Reporting_Settings::FREQUENCY_WEEKLY, 7, '2026-03-16 00:00:00 UTC' ),
+ 'monthly_31_day_month' => array( Email_Reporting_Settings::FREQUENCY_MONTHLY, 31, '2026-04-01 00:00:00 UTC' ),
+ 'monthly_30_day_month' => array( Email_Reporting_Settings::FREQUENCY_MONTHLY, 30, '2026-07-01 00:00:00 UTC' ),
+ 'monthly_28_day_month' => array( Email_Reporting_Settings::FREQUENCY_MONTHLY, 28, '2026-03-01 00:00:00 UTC' ),
+ 'monthly_29_day_leap' => array( Email_Reporting_Settings::FREQUENCY_MONTHLY, 29, '2028-03-01 00:00:00 UTC' ),
+ 'quarterly' => array( Email_Reporting_Settings::FREQUENCY_QUARTERLY, 90, '2026-03-16 00:00:00 UTC' ),
);
}
}