diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index b44ef573a7..f1c36a3598 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,14 +1,14 @@ # Contributing -Thanks for your interest in contributing to Google Listings and Ads! +Thanks for your interest in contributing to Google for WooCommerce! ## Guidelines Like the WooCommerce project, we want to ensure a welcoming environment for everyone. With that in mind, all contributors are expected to follow our [Code of Conduct](./CODE_OF_CONDUCT.md). -If you wish to contribute code, please read the information in the sections below. Then [fork](https://help.github.com/articles/fork-a-repo/) Google Listings and Ads, commit your changes, and [submit a pull request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) 🎉 +If you wish to contribute code, please read the information in the sections below. Then [fork](https://help.github.com/articles/fork-a-repo/) Google for WooCommerce, commit your changes, and [submit a pull request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) 🎉 -Google Listings and Ads is licensed under the GPLv3+, and all contributions to the project will be released under the same license. You maintain copyright over any contribution you make, and by submitting a pull request, you are agreeing to release that contribution under the GPLv3+ license. +Google for WooCommerce is licensed under the GPLv3+, and all contributions to the project will be released under the same license. You maintain copyright over any contribution you make, and by submitting a pull request, you are agreeing to release that contribution under the GPLv3+ license. ## Reporting Security Issues diff --git a/README.md b/README.md index 8d7a7a9590..b3c2d10244 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Google Listings & Ads +# Google for WooCommerce [![PHP Unit Tests](https://github.com/woocommerce/google-listings-and-ads/actions/workflows/php-unit-tests.yml/badge.svg)](https://github.com/woocommerce/google-listings-and-ads/actions/workflows/php-unit-tests.yml) [![JavaScript Unit Tests](https://github.com/woocommerce/google-listings-and-ads/actions/workflows/js-unit-tests.yml/badge.svg)](https://github.com/woocommerce/google-listings-and-ads/actions/workflows/js-unit-tests.yml) @@ -19,7 +19,7 @@ This repository is not suitable for support. Please don't use our issue tracker For self help, start with our [user documentation](https://woocommerce.com/document/google-listings-and-ads/). -The best place to get support is the [WordPress.org Google Listings and Ads forum](https://wordpress.org/support/plugin/google-listings-and-ads/). +The best place to get support is the [WordPress.org Google for WooCommerce forum](https://wordpress.org/support/plugin/google-listings-and-ads/). If you have a WooCommerce.com account, you can [start a chat or open a ticket on WooCommerce.com](https://woocommerce.com/my-account/contact-support/). diff --git a/changelog.txt b/changelog.txt index 034a016c13..03766081b2 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,4 @@ -*** WooCommerce Google Listings and Ads Changelog *** +*** Google for WooCommerce Changelog *** = 2.7.7 - 2024-07-24 = * Dev - Fix E2E tests failed with WC 9.1. @@ -350,7 +350,7 @@ * Add - Declare compatibility for High Performance Order Storage. * Dev - Selectively externalize bundled packages. * Fix - E2E Testing: Reduce the false positive rate and adjust the running events on GitHub Actions. -* Fix - Move the order of Google Listings & Ads below the Coupons in the Marketing menu of WooCommerce admin page. +* Fix - Move the order of Google Listings and Ads below the Coupons in the Marketing menu of WooCommerce admin page. * Fix - WC 6.9 compatibility: Shipping time settings should not appear after selecting the "complex" shipping option. * Fix - WC 6.9 compatibility: The free shipping threshold should be cleared after selecting the "No" free shipping option. * Fix - WC 6.9 compatibility: The selected free shipping option should be reset after setting all shipping rates to 0. @@ -560,7 +560,7 @@ = 1.12.0 - 2022-03-29 = * Add - Additional data points for tracker snapshot. * Add - Enables merchants to select multiple countries as their audience when creating a Google Ads campaign (Smart Shopping Campaign). -* Add - Google Listings And Ads product attributes icon. +* Add - Google Listings and Ads product attributes icon. * Add - Integration with WooCommerce Shipping Zone to automatically sync shipping settings to Merchant Center. * FIx - Show right link and message in Paid Campaigns report when there is no data available. * Fix - Cleanup synced products locally when disconnecting Merchant Center account. diff --git a/docs/gtag-consent-mode.md b/docs/gtag-consent-mode.md index 6c8edaec52..e5b78c6221 100644 --- a/docs/gtag-consent-mode.md +++ b/docs/gtag-consent-mode.md @@ -1,6 +1,6 @@ ## Google Analytics (gtag) Consent Mode -Unless you're running the [Google Analytics for WooCommerce](https://woocommerce.com/products/woocommerce-google-analytics/) extension for a more sophisticated configuration, Google Listings and Ads will add Google's `gtag` to help you track some customer behavior. +Unless you're running the [Google Analytics for WooCommerce](https://woocommerce.com/products/woocommerce-google-analytics/) extension for a more sophisticated configuration, Google for WooCommerce will add Google's `gtag` to help you track some customer behavior. To respect your customers' privacy, we set up the default state of [consent mode](https://support.google.com/analytics/answer/9976101). We set it to deny all the parameters for visitors from the EEA region. @@ -12,4 +12,4 @@ After the page loads, the consent for particular parameters can be updated by ot The extension does not provide any UI, like a cookie banner, to let your visitors grant consent for tracking. However, it's integrated with [WP Consent API](https://wordpress.org/plugins/wp-consent-api/), so you can pick another extension that provides a banner that meets your needs. -Each of those extensions may require additional setup or registration. Usually, the basic default setup works out of the box, but there may be some integration caveats. \ No newline at end of file +Each of those extensions may require additional setup or registration. Usually, the basic default setup works out of the box, but there may be some integration caveats. diff --git a/google-listings-and-ads.php b/google-listings-and-ads.php index a151561b15..243f1c48e9 100644 --- a/google-listings-and-ads.php +++ b/google-listings-and-ads.php @@ -1,6 +1,6 @@ { return (
+
} diff --git a/js/src/attribute-mapping/index.test.js b/js/src/attribute-mapping/index.test.js index d3dac77321..abdbe92501 100644 --- a/js/src/attribute-mapping/index.test.js +++ b/js/src/attribute-mapping/index.test.js @@ -132,10 +132,14 @@ jest.mock( '.~/hooks/usePolling', () => ( { } ), } ) ); +jest.mock( '.~/components/tours/rebranding-tour', () => + jest.fn().mockReturnValue( null ).mockName( 'RebrandingTour' ) +); + /** * External dependencies */ -import { render, fireEvent } from '@testing-library/react'; +import { render, fireEvent, screen } from '@testing-library/react'; import '@testing-library/jest-dom'; import userEvent from '@testing-library/user-event'; @@ -153,6 +157,7 @@ import { } from '.~/data/actions'; import AttributeMappingSync from '.~/attribute-mapping/attribute-mapping-sync'; import usePolling from '.~/hooks/usePolling'; +import RebrandingTour from '.~/components/tours/rebranding-tour'; describe( 'Attribute Mapping', () => { test( 'Renders table', () => { @@ -378,4 +383,26 @@ describe( 'Attribute Mapping', () => { const { queryByText } = render( ); expect( queryByText( 'Scheduled for sync' ) ).toBeTruthy(); } ); + + describe( 'Rebranding Tour', () => { + test( 'Not rendered in UI', () => { + RebrandingTour.mockImplementation( () => { + return null; + } ); + + render( ); + const tour = screen.queryByRole( 'dialog', { name: 'tour' } ); + expect( tour ).not.toBeInTheDocument(); + } ); + + test( 'Rendered in UI', () => { + RebrandingTour.mockImplementation( () => { + return
; + } ); + + render( ); + const tour = screen.queryByRole( 'dialog', { name: 'tour' } ); + expect( tour ).toBeInTheDocument(); + } ); + } ); } ); diff --git a/js/src/dashboard/all-programs-table-card/campaign-assets-tour.js b/js/src/components/tours/campaign-assets-tour.js similarity index 100% rename from js/src/dashboard/all-programs-table-card/campaign-assets-tour.js rename to js/src/components/tours/campaign-assets-tour.js diff --git a/js/src/dashboard/all-programs-table-card/campaign-assets-tour.scss b/js/src/components/tours/campaign-assets-tour.scss similarity index 100% rename from js/src/dashboard/all-programs-table-card/campaign-assets-tour.scss rename to js/src/components/tours/campaign-assets-tour.scss diff --git a/js/src/components/tours/rebrading-tour.scss b/js/src/components/tours/rebrading-tour.scss new file mode 100644 index 0000000000..f19bd4072f --- /dev/null +++ b/js/src/components/tours/rebrading-tour.scss @@ -0,0 +1,18 @@ +.gla-rebranding-tour { + &__heading { + display: flex; + align-items: center; + gap: $grid-unit-10; + fill: var(--wp-admin-theme-color); + } + + // Hide the footer content but leave the padding-bottom because + // TourKit doesn't offer a way not to use the primary button. + .components-card__footer { + padding-top: 0; + + > * { + display: none; + } + } +} diff --git a/js/src/components/tours/rebranding-tour.js b/js/src/components/tours/rebranding-tour.js new file mode 100644 index 0000000000..c67bdca96e --- /dev/null +++ b/js/src/components/tours/rebranding-tour.js @@ -0,0 +1,67 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import { createInterpolateElement } from '@wordpress/element'; +import { TourKit } from '@woocommerce/components'; + +/** + * Internal dependencies + */ +import useTour from '.~/hooks/useTour'; +import './rebrading-tour.scss'; + +const TOUR_ID = 'rebranding-tour'; + +/** + * Renders the tour for notifying about the new extension rebranding + */ +export default function RebrandingTour() { + const { tourChecked, setTourChecked } = useTour( TOUR_ID ); + + if ( tourChecked ) { + return null; + } + + const config = { + steps: [ + { + referenceElements: { + desktop: + '.toplevel_page_woocommerce-marketing a[href*="google"]', + }, + meta: { + heading: ( +
+ { __( + 'New name, same great solution', + 'google-listings-and-ads' + ) } +
+ ), + descriptions: { + desktop: ( + <> + { createInterpolateElement( + __( + 'Google Listings & Ads is now Google for WooCommerce.', + 'google-listings-and-ads' + ), + { strong: } + ) } + + ), + }, + }, + }, + ], + options: { + classNames: 'gla-admin-page,gla-rebranding-tour', + effects: { overlay: false }, + }, + placement: 'top', + closeHandler: () => setTourChecked( true ), + }; + + return ; +} diff --git a/js/src/dashboard/all-programs-table-card/index.js b/js/src/dashboard/all-programs-table-card/index.js index 786c32f078..52f1f17eb5 100644 --- a/js/src/dashboard/all-programs-table-card/index.js +++ b/js/src/dashboard/all-programs-table-card/index.js @@ -21,7 +21,7 @@ import { FREE_LISTINGS_PROGRAM_ID, CAMPAIGN_TYPE_PMAX } from '.~/constants'; import AddPaidCampaignButton from '.~/components/paid-ads/add-paid-campaign-button'; import ProgramToggle from './program-toggle'; import FreeListingsDisabledToggle from './free-listings-disabled-toggle'; -import CampaignAssetsTour from './campaign-assets-tour'; +import CampaignAssetsTour from '.~/components/tours/campaign-assets-tour'; const PROGRAMS_TABLE_CARD_CLASS_NAME = 'gla-all-programs-table-card'; const CAMPAIGN_EDIT_BUTTON_CLASS_NAME = 'gla-campaign-edit-button'; diff --git a/js/src/dashboard/all-programs-table-card/index.test.js b/js/src/dashboard/all-programs-table-card/index.test.js index 4030990271..ac57aed8f8 100644 --- a/js/src/dashboard/all-programs-table-card/index.test.js +++ b/js/src/dashboard/all-programs-table-card/index.test.js @@ -8,11 +8,11 @@ import { screen, within, render } from '@testing-library/react'; * Internal dependencies */ import AllProgramsTableCard from './'; -import CampaignAssetsTour from './campaign-assets-tour'; +import CampaignAssetsTour from '.~/components/tours/campaign-assets-tour'; import useAdsCampaigns from '.~/hooks/useAdsCampaigns'; import useAdsCurrency from '.~/hooks/useAdsCurrency'; -jest.mock( './campaign-assets-tour', () => +jest.mock( '.~/components/tours/campaign-assets-tour', () => jest .fn() .mockReturnValue(
) diff --git a/js/src/dashboard/index.js b/js/src/dashboard/index.js index e7a18cd2fd..67ac1bca35 100644 --- a/js/src/dashboard/index.js +++ b/js/src/dashboard/index.js @@ -25,6 +25,7 @@ import EditPaidAdsCampaign from '.~/pages/edit-paid-ads-campaign'; import CreatePaidAdsCampaign from '.~/pages/create-paid-ads-campaign'; import { CTA_CREATE_ANOTHER_CAMPAIGN, CTA_CONFIRM } from './constants'; import { recordGlaEvent } from '.~/utils/tracks'; +import RebrandingTour from '.~/components/tours/rebranding-tour'; import './index.scss'; /** @@ -88,6 +89,7 @@ const Dashboard = () => {
+
+ jest.fn().mockReturnValue( null ).mockName( 'RebrandingTour' ) +); + /** * External dependencies */ @@ -11,6 +15,7 @@ import { getQuery } from '@woocommerce/navigation'; */ import Dashboard from './index'; import isWCTracksEnabled from '.~/utils/isWCTracksEnabled'; +import RebrandingTour from '.~/components/tours/rebranding-tour'; import { GUIDE_NAMES } from '.~/constants'; jest.mock( '@woocommerce/settings', () => { @@ -137,4 +142,36 @@ describe( 'Dashboard', () => { ).not.toBeInTheDocument(); } ); } ); + + describe( 'Rebranding Tour', () => { + beforeAll( () => { + getQuery.mockImplementation( () => { + return {}; + } ); + } ); + + afterAll( () => { + getQuery.mockReset(); + } ); + + test( 'Not rendered in UI', () => { + RebrandingTour.mockImplementation( () => { + return null; + } ); + + render( ); + const tour = screen.queryByRole( 'dialog', { name: 'tour' } ); + expect( tour ).not.toBeInTheDocument(); + } ); + + test( 'Rendered in UI', () => { + RebrandingTour.mockImplementation( () => { + return
; + } ); + + render( ); + const tour = screen.queryByRole( 'dialog', { name: 'tour' } ); + expect( tour ).toBeInTheDocument(); + } ); + } ); } ); diff --git a/js/src/get-started-page/benefits-card/index.js b/js/src/get-started-page/benefits-card/index.js index b3fc6df2c9..0d80858dd8 100644 --- a/js/src/get-started-page/benefits-card/index.js +++ b/js/src/get-started-page/benefits-card/index.js @@ -19,7 +19,7 @@ const BenefitsCard = () => { { { __( - 'The Google Listings and Ads plugin allows you to upload your store and product data to Google. Your products will sync automatically to make relevant information available for free listings, Google Ads, and other Google services. You can create a new Merchant Center account or link an existing account to connect your store and list products across Google.', + 'The Google for WooCommerce plugin allows you to upload your store and product data to Google. Your products will sync automatically to make relevant information available for free listings, Google Ads, and other Google services. You can create a new Merchant Center account or link an existing account to connect your store and list products across Google.', 'google-listings-and-ads' ) }

@@ -220,7 +220,7 @@ const faqItems = [ <>

{ __( - 'Create a new Google Ads account through Google Listings & Ads and a promotional code will be automatically applied to your account. You’ll have 60 days to spend $500 to qualify for the $500 ads credit.', + 'Create a new Google Ads account through Google for WooCommerce and a promotional code will be automatically applied to your account. You’ll have 60 days to spend $500 to qualify for the $500 ads credit.', 'google-listings-and-ads' ) }

diff --git a/js/src/get-started-page/features-card/index.js b/js/src/get-started-page/features-card/index.js index 0e21a3035c..00c5a6cd71 100644 --- a/js/src/get-started-page/features-card/index.js +++ b/js/src/get-started-page/features-card/index.js @@ -60,7 +60,7 @@ const FeaturesCard = () => { variant="body" > { __( - 'With Google Listings & Ads, connect with the right shoppers at the right moment when they’re looking to buy products like yours.', + 'With Google for WooCommerce, connect with the right shoppers at the right moment when they’re looking to buy products like yours.', 'google-listings-and-ads' ) } diff --git a/js/src/get-started-page/get-started-card/index.js b/js/src/get-started-page/get-started-card/index.js index 0bf79bdf2c..3dcc5e976a 100644 --- a/js/src/get-started-page/get-started-card/index.js +++ b/js/src/get-started-page/get-started-card/index.js @@ -42,7 +42,7 @@ const GetStartedCard = () => { className="gla-get-started-card__title" > { __( - 'Get your products in front of more shoppers with Google Listings & Ads', + 'Get your products in front of more shoppers with Google for WooCommerce', 'google-listings-and-ads' ) } diff --git a/js/src/get-started-page/unsupported-notices/index.js b/js/src/get-started-page/unsupported-notices/index.js index ede58e5141..ea8ce75125 100644 --- a/js/src/get-started-page/unsupported-notices/index.js +++ b/js/src/get-started-page/unsupported-notices/index.js @@ -42,7 +42,7 @@ const UnsupportedLanguage = () => { > { createInterpolateElement( __( - 'Your site language is . This language is currently not supported by Google Listings & Ads. You can change your site language here. Read more about supported languages', + 'Your site language is . This language is currently not supported by Google for WooCommerce. You can change your site language here. Read more about supported languages', 'google-listings-and-ads' ), { @@ -85,7 +85,7 @@ const UnsupportedCountry = () => { > { createInterpolateElement( __( - 'Your store’s country is . This country is currently not supported by Google Listings & Ads. However, you can still choose to list your products in another supported country, if you are able to sell your products to customers there. Change your store’s country here. Read more about supported countries', + 'Your store’s country is . This country is currently not supported by Google for WooCommerce. However, you can still choose to list your products in another supported country, if you are able to sell your products to customers there. Change your store’s country here. Read more about supported countries', 'google-listings-and-ads' ), { diff --git a/js/src/index.js b/js/src/index.js index f8aef20c48..60a74bf5c2 100644 --- a/js/src/index.js +++ b/js/src/index.js @@ -75,7 +75,7 @@ addFilter( } initialBreadcrumbs.push( - __( 'Google Listings & Ads', 'google-listings-and-ads' ) + __( 'Google for WooCommerce', 'google-listings-and-ads' ) ); const pluginAdminPages = [ diff --git a/js/src/index.test.js b/js/src/index.test.js index b76f6c928d..dcc5480364 100644 --- a/js/src/index.test.js +++ b/js/src/index.test.js @@ -50,7 +50,7 @@ describe( 'index', () => { breadcrumbs: expect.arrayContaining( [ [ '', 'WooCommerce' ], [ '/marketing', 'Marketing' ], - 'Google Listings & Ads', + 'Google for WooCommerce', expect.any( String ), ] ), container: expect.any( Function ), diff --git a/js/src/product-feed/index.js b/js/src/product-feed/index.js index cd0af7c0e7..142c29ad9a 100644 --- a/js/src/product-feed/index.js +++ b/js/src/product-feed/index.js @@ -18,6 +18,7 @@ import './index.scss'; import { GUIDE_NAMES, LOCAL_STORAGE_KEYS } from '.~/constants'; import localStorage from '.~/utils/localStorage'; import isWCTracksEnabled from '.~/utils/isWCTracksEnabled'; +import RebrandingTour from '.~/components/tours/rebranding-tour'; const ProductFeed = () => { const [ canCESPromptOpen, setCESPromptOpen ] = useState( false ); @@ -47,15 +48,16 @@ const ProductFeed = () => { return ( <> + { isSubmissionSuccessOpen && } { canCESPromptOpen && ( + jest.fn().mockReturnValue( null ).mockName( 'RebrandingTour' ) +); + /** * External dependencies */ import '@testing-library/jest-dom'; -import { render } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import { getQuery } from '@woocommerce/navigation'; /** @@ -12,6 +16,7 @@ import ProductFeed from './index'; import localStorage from '.~/utils/localStorage'; import isWCTracksEnabled from '.~/utils/isWCTracksEnabled'; import { GUIDE_NAMES } from '.~/constants'; +import RebrandingTour from '.~/components/tours/rebranding-tour'; jest.mock( '@woocommerce/navigation', () => { return { @@ -30,8 +35,8 @@ jest.mock( '.~/utils/localStorage', () => { jest.mock( '.~/utils/isWCTracksEnabled', () => jest.fn() ); const SUBMISSION_SUCCESS_GUIDE_TEXT = - 'You’ve successfully set up Google Listings & Ads! 🎉'; -const CES_PROMPT_TEXT = 'How easy was it to set up Google Listings & Ads?'; + 'You’ve successfully set up Google for WooCommerce! 🎉'; +const CES_PROMPT_TEXT = 'How easy was it to set up Google for WooCommerce?'; jest.mock( '.~/components/customer-effort-score-prompt', () => () => (
{ CES_PROMPT_TEXT }
@@ -177,4 +182,26 @@ describe( 'ProductFeed', () => { } ); } ); } ); + + describe( 'Rebranding Tour', () => { + test( 'Not rendered in UI', () => { + RebrandingTour.mockImplementation( () => { + return null; + } ); + + render( ); + const tour = screen.queryByRole( 'dialog', { name: 'tour' } ); + expect( tour ).not.toBeInTheDocument(); + } ); + + test( 'Rendered in UI', () => { + RebrandingTour.mockImplementation( () => { + return
; + } ); + + render( ); + const tour = screen.queryByRole( 'dialog', { name: 'tour' } ); + expect( tour ).toBeInTheDocument(); + } ); + } ); } ); diff --git a/js/src/product-feed/submission-success-guide/index.js b/js/src/product-feed/submission-success-guide/index.js index b462cc9941..968124ecec 100644 --- a/js/src/product-feed/submission-success-guide/index.js +++ b/js/src/product-feed/submission-success-guide/index.js @@ -56,7 +56,7 @@ const pages = [ content: ( diff --git a/js/src/reports/products/index.js b/js/src/reports/products/index.js index 537ec97906..c29fd7c549 100644 --- a/js/src/reports/products/index.js +++ b/js/src/reports/products/index.js @@ -24,6 +24,7 @@ import SummarySection from '../summary-section'; import ChartSection from '../chart-section'; import CompareProductsTableCard from './compare-products-table-card'; import ReportsNavigation from '../reports-navigation'; +import RebrandingTour from '.~/components/tours/rebranding-tour'; /** * Available metrics and their human-readable labels. @@ -123,6 +124,7 @@ const ProductsReportPage = () => { <> + { loaded ? ( diff --git a/js/src/reports/programs/index.js b/js/src/reports/programs/index.js index 77a362d0f5..f21e4f1825 100644 --- a/js/src/reports/programs/index.js +++ b/js/src/reports/programs/index.js @@ -17,6 +17,7 @@ import SummarySection from '../summary-section'; import ChartSection from '../chart-section'; import CompareProgramsTableCard from './compare-programs-table-card'; import ReportsNavigation from '../reports-navigation'; +import RebrandingTour from '.~/components/tours/rebranding-tour'; /** * Available metrics and their human-readable labels. @@ -103,6 +104,7 @@ const ProgramsReport = () => { <> + {
+
diff --git a/js/src/setup-mc/setup-stepper/setup-accounts/index.js b/js/src/setup-mc/setup-stepper/setup-accounts/index.js index 9802c4c51f..a318189cbb 100644 --- a/js/src/setup-mc/setup-stepper/setup-accounts/index.js +++ b/js/src/setup-mc/setup-stepper/setup-accounts/index.js @@ -142,7 +142,7 @@ const SetupAccounts = ( props ) => { 'google-listings-and-ads' ) } description={ __( - 'Connect the accounts required to use Google Listings & Ads.', + 'Connect the accounts required to use Google for WooCommerce.', 'google-listings-and-ads' ) } /> @@ -150,7 +150,7 @@ const SetupAccounts = ( props ) => { className="gla-wp-google-accounts-section" title={ __( 'Connect accounts', 'google-listings-and-ads' ) } description={ __( - 'The following accounts are required to use the Google Listings & Ads plugin.', + 'The following accounts are required to use the Google for WooCommerce plugin.', 'google-listings-and-ads' ) } > diff --git a/js/src/setup-mc/top-bar/index.js b/js/src/setup-mc/top-bar/index.js index 767f2873df..e30b4c6c07 100644 --- a/js/src/setup-mc/top-bar/index.js +++ b/js/src/setup-mc/top-bar/index.js @@ -25,7 +25,7 @@ const SetupMCTopBar = () => { return ( } diff --git a/package-lock.json b/package-lock.json index a83b84272e..fba28e05e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "google-listings-and-ads", - "version": "2.7.6", + "version": "2.7.7", "license": "GPL-3.0-or-later", "dependencies": { "@woocommerce/components": "^10.3.0", diff --git a/package.json b/package.json index d5b358e09c..93be7c9295 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "google-listings-and-ads", - "title": "Google Listings and Ads", + "title": "Google for WooCommerce", "version": "2.7.7", - "description": "google-listings-and-ads", + "description": "Google for WooCommerce", "author": "Automattic", "license": "GPL-3.0-or-later", "keywords": [ diff --git a/readme.txt b/readme.txt index e3adba01b8..6dd1d2428c 100644 --- a/readme.txt +++ b/readme.txt @@ -1,4 +1,4 @@ -=== Google Listings & Ads === +=== Google for WooCommerce === Contributors: automattic, google, woocommerce Tags: woocommerce, google, product feed, ads, listings Requires at least: 5.9 @@ -15,11 +15,11 @@ Native integration with Google that allows merchants to easily display their pro https://www.youtube.com/watch?v=lYCx7ZqA1uo -Google Listings & Ads makes it simple to showcase your products to shoppers across Google. Whether you’re brand new to digital advertising or a marketing expert, you can expand your reach and grow your business, for free and with ads. +Google for WooCommerce makes it simple to showcase your products to shoppers across Google. Whether you’re brand new to digital advertising or a marketing expert, you can expand your reach and grow your business, for free and with ads. Sync your store with Google to list products for free, run paid ads, and track performance straight from your store dashboard. -With Google Listings & Ads: +With Google for WooCommerce: - **Connect your store seamlessly** with Google Merchant Center. - **Reach online shoppers** with free listings. - **Boost store traffic and sales** with Performance Max Campaigns. @@ -48,7 +48,7 @@ Connect your Google Ads account, choose a budget, and launch your campaign strai = Get $500 in Google Ads credit when you spend your first $500! = -Create a new Google Ads account through Google Listings & Ads and a promotional code will be automatically applied to your account. You’ll have 60 days to spend $500 to qualify for the $500 ads credit. See full terms and conditions [here](https://www.google.com/ads/coupons/terms/). +Create a new Google Ads account through Google for WooCommerce and a promotional code will be automatically applied to your account. You’ll have 60 days to spend $500 to qualify for the $500 ads credit. See full terms and conditions [here](https://www.google.com/ads/coupons/terms/). == Installation == @@ -66,7 +66,7 @@ Visit the [WooCommerce server requirements documentation](https://woocommerce.co Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t need to leave your web browser. To do an automatic install of this plugin, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New. -In the search field type “Google Listings and Ads” and click Search Plugins. Once you’ve found this plugin you can view details about it such as the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”. +In the search field type “Google for WooCommerce” and click Search Plugins. Once you’ve found this plugin you can view details about it such as the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”. = Manual installation = @@ -74,7 +74,7 @@ The manual installation method involves downloading the plugin and uploading it = Where can I report bugs or contribute to the project? = -Bugs should be reported in the [Google Listings and Ads GitHub repository](https://github.com/woocommerce/google-listings-and-ads/). +Bugs should be reported in the [Google for WooCommerce GitHub repository](https://github.com/woocommerce/google-listings-and-ads/). = This is awesome! Can I contribute? = @@ -87,7 +87,7 @@ Release and roadmap notes available on the [WooCommerce Developers Blog](https:/ = What is Google Merchant Center? = The Google Merchant Center helps you sync your store and product data with Google and makes the information available for both free listings on the Shopping tab and Google Shopping Ads. That means everything about your stores and products is available to shoppers when they search on a Google property. -= Which countries are available for Google Listings & Ads? = += Which countries are available for Google for WooCommerce? = Learn more about supported countries for Google free listings [here](https://support.google.com/merchants/answer/10033607?hl=en). Learn more about supported countries and currencies for Performance Max campaigns [here](https://support.google.com/merchants/answer/160637#countrytable). @@ -98,13 +98,13 @@ If you’re selling in the US, then eligible free listings can appear in search If you’re running a Performance Max campaign, your approved products can appear on Google Search, the Shopping tab, Gmail, Youtube and the Google Display Network. = Will my deals and promotions display on Google? = -To show your coupons and promotions on Google Shopping listings, make sure you’re using the latest version of Google Listings & Ads. When you create or update a coupon in your WordPress dashboard under Marketing > Coupons, you’ll see a Channel Visibility settings box on the right: select “Show coupon on Google” to enable. This is currently available in the US only. +To show your coupons and promotions on Google Shopping listings, make sure you’re using the latest version of Google for WooCommerce. When you create or update a coupon in your WordPress dashboard under Marketing > Coupons, you’ll see a Channel Visibility settings box on the right: select “Show coupon on Google” to enable. This is currently available in the US only. = What are Performance Max campaigns? = Performance Max campaigns are Google Ads that combine Google’s machine learning with automated bidding and ad placements to maximize conversion value and strategically display your ads to people searching for products like yours, at your given budget. The best part? You only pay when people click on your ad. = How much do Performance Max campaigns cost? = -Performance Max campaigns are pay-per-click, meaning you only pay when someone clicks on your ads. You can customize your daily budget in Google Listings & Ads but we recommend starting off with the suggested minimum budget, and you can change this budget at any time. +Performance Max campaigns are pay-per-click, meaning you only pay when someone clicks on your ads. You can customize your daily budget in Google for WooCommerce but we recommend starting off with the suggested minimum budget, and you can change this budget at any time. = Can I run both free listings and Performance Max campaigns at the same time? = Yes, you can run both at the same time, and we recommend it! In the US, advertisers running free listings and ads together have seen an average of over 50% increase in clicks and over 100% increase in impressions on both free listings and ads on the Shopping tab. Your store is automatically opted into free listings automatically and can choose to run a paid Performance Max campaign. diff --git a/src/API/Google/AdsConversionAction.php b/src/API/Google/AdsConversionAction.php index 1f85957c13..f822db5057 100644 --- a/src/API/Google/AdsConversionAction.php +++ b/src/API/Google/AdsConversionAction.php @@ -50,7 +50,7 @@ public function __construct( GoogleAdsClient $client ) { } /** - * Create the 'Google Listings and Ads purchase action' conversion action. + * Create the 'Google for WooCommerce purchase action' conversion action. * * @return array An array with some conversion action details. * @throws Exception If the conversion action can't be created or retrieved. @@ -67,7 +67,7 @@ public function create_conversion_action(): array { 'woocommerce_gla_conversion_action_name', sprintf( /* translators: %1 is a random 4-digit string */ - __( '[%1$s] Google Listings and Ads purchase action', 'google-listings-and-ads' ), + __( '[%1$s] Google for WooCommerce purchase action', 'google-listings-and-ads' ), $unique ) ), diff --git a/src/Admin/Admin.php b/src/Admin/Admin.php index 07b6c31f27..ca3825dc22 100644 --- a/src/Admin/Admin.php +++ b/src/Admin/Admin.php @@ -289,7 +289,7 @@ public function privacy_policy() {

' . $policy_text . '

'; - wp_add_privacy_policy_content( 'Google Listings & Ads', wpautop( $content, false ) ); + wp_add_privacy_policy_content( 'Google for WooCommerce', wpautop( $content, false ) ); } /** diff --git a/src/Admin/Product/Attributes/AttributesTab.php b/src/Admin/Product/Attributes/AttributesTab.php index 85f12c5888..682765a88f 100644 --- a/src/Admin/Product/Attributes/AttributesTab.php +++ b/src/Admin/Product/Attributes/AttributesTab.php @@ -94,7 +94,7 @@ function () { } /** - * Adds the Google Listing & Ads tab to the WooCommerce product data box. + * Adds the Google for WooCommerce tab to the WooCommerce product data box. * * @param array $tabs The current product data tabs. * @@ -102,7 +102,7 @@ function () { */ private function add_tab( array $tabs ): array { $tabs['gla_attributes'] = [ - 'label' => 'Google Listings and Ads', + 'label' => 'Google for WooCommerce', 'class' => 'gla', 'target' => 'gla_attributes', ]; diff --git a/src/Admin/Product/Attributes/AttributesTrait.php b/src/Admin/Product/Attributes/AttributesTrait.php index 4d80abe30c..cb177345f1 100644 --- a/src/Admin/Product/Attributes/AttributesTrait.php +++ b/src/Admin/Product/Attributes/AttributesTrait.php @@ -10,7 +10,7 @@ */ trait AttributesTrait { /** - * Return an array of WooCommerce product types that the Google Listings and Ads tab can be displayed for. + * Return an array of WooCommerce product types that the Google for WooCommerce tab can be displayed for. * * @return array of WooCommerce product types (e.g. 'simple', 'variable', etc.) */ diff --git a/src/Admin/ProductBlocksService.php b/src/Admin/ProductBlocksService.php index 7286ce006d..a3843a6a81 100644 --- a/src/Admin/ProductBlocksService.php +++ b/src/Admin/ProductBlocksService.php @@ -145,7 +145,7 @@ public function hook_block_template( BlockInterface $block ): void { 'id' => 'google-listings-and-ads-group', 'order' => 100, 'attributes' => [ - 'title' => __( 'Google Listings & Ads', 'google-listings-and-ads' ), + 'title' => __( 'Google for WooCommerce', 'google-listings-and-ads' ), ], ] ); diff --git a/src/Autoloader.php b/src/Autoloader.php index 8f72cea100..61c2f0f7cd 100644 --- a/src/Autoloader.php +++ b/src/Autoloader.php @@ -48,7 +48,7 @@ public static function init() { protected static function missing_autoloader() { if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { error_log( // phpcs:ignore WordPress.PHP.DevelopmentFunctions - esc_html__( 'Your installation of Google Listings and Ads is incomplete. If you installed from GitHub, please refer to this document to set up your development environment: https://github.com/woocommerce/woocommerce/wiki/How-to-set-up-WooCommerce-development-environment', 'google-listings-and-ads' ) + esc_html__( 'Your installation of Google for WooCommerce is incomplete. If you installed from GitHub, please refer to this document to set up your development environment: https://github.com/woocommerce/woocommerce/wiki/How-to-set-up-WooCommerce-development-environment', 'google-listings-and-ads' ) ); } add_action( @@ -60,7 +60,7 @@ function () { ', '' ); diff --git a/src/ConnectionTest.php b/src/ConnectionTest.php index 14d6412770..578025e257 100644 --- a/src/ConnectionTest.php +++ b/src/ConnectionTest.php @@ -147,7 +147,7 @@ protected function render_admin_page() {

Connection Test

-

Google Listings & Ads connection testing page used for debugging purposes. Debug responses are output at the top of the page.

+

Google for WooCommerce connection testing page used for debugging purposes. Debug responses are output at the top of the page.


diff --git a/src/Container.php b/src/Container.php index 32c853762d..c39c3855a5 100644 --- a/src/Container.php +++ b/src/Container.php @@ -20,7 +20,7 @@ use Automattic\WooCommerce\GoogleListingsAndAds\Vendor\Psr\Container\NotFoundExceptionInterface; /** - * PSR11 compliant dependency injection container for Google Listings and Ads. + * PSR11 compliant dependency injection container for Google for WooCommerce. * * Classes in the `src` directory should specify dependencies from that directory via constructor arguments * with type hints. If an instance of the container itself is needed, the type hint to use is diff --git a/src/Exception/ExtensionRequirementException.php b/src/Exception/ExtensionRequirementException.php index 065139a8cd..deca35b5e9 100644 --- a/src/Exception/ExtensionRequirementException.php +++ b/src/Exception/ExtensionRequirementException.php @@ -28,7 +28,7 @@ public static function missing_required_plugin( string $plugin_name ): Extension return new static( sprintf( /* translators: 1 the missing plugin name */ - __( 'Google Listings and Ads requires %1$s to be enabled.', 'google-listings-and-ads' ), + __( 'Google for WooCommerce requires %1$s to be enabled.', 'google-listings-and-ads' ), $plugin_name ) ); @@ -45,7 +45,7 @@ public static function incompatible_plugin( string $plugin_name ): ExtensionRequ return new static( sprintf( /* translators: 1 the incompatible plugin name */ - __( 'Google Listings and Ads is incompatible with %1$s.', 'google-listings-and-ads' ), + __( 'Google for WooCommerce is incompatible with %1$s.', 'google-listings-and-ads' ), $plugin_name ) ); diff --git a/src/Exception/InvalidVersion.php b/src/Exception/InvalidVersion.php index 7f5590fac7..875def3ea3 100644 --- a/src/Exception/InvalidVersion.php +++ b/src/Exception/InvalidVersion.php @@ -30,7 +30,7 @@ public static function from_requirement( string $requirement, string $found_vers return new static( sprintf( /* translators: 1 is the required component, 2 is the minimum required version, 3 is the version in use on the site */ - __( 'Google Listings and Ads requires %1$s version %2$s or higher. You are using version %3$s.', 'google-listings-and-ads' ), + __( 'Google for WooCommerce requires %1$s version %2$s or higher. You are using version %3$s.', 'google-listings-and-ads' ), $requirement, $minimum_version, $found_version @@ -50,7 +50,7 @@ public static function requirement_missing( string $requirement, string $minimum return new static( sprintf( /* translators: 1 is the required component, 2 is the minimum required version */ - __( 'Google Listings and Ads requires %1$s version %2$s or higher.', 'google-listings-and-ads' ), + __( 'Google for WooCommerce requires %1$s version %2$s or higher.', 'google-listings-and-ads' ), $requirement, $minimum_version ) @@ -65,7 +65,7 @@ public static function requirement_missing( string $requirement, string $minimum */ public static function invalid_architecture(): InvalidVersion { return new static( - __( 'Google Listings and Ads requires a 64 bit version of PHP.', 'google-listings-and-ads' ) + __( 'Google for WooCommerce requires a 64 bit version of PHP.', 'google-listings-and-ads' ) ); } } diff --git a/src/Google/GlobalSiteTag.php b/src/Google/GlobalSiteTag.php index d00d1a84bd..d8b8159ea8 100644 --- a/src/Google/GlobalSiteTag.php +++ b/src/Google/GlobalSiteTag.php @@ -267,7 +267,7 @@ protected function display_global_site_tag( string $ads_conversion_id ) { // phpcs:disable WordPress.WP.EnqueuedResources.NonEnqueuedScript ?> - +