woocommerce / google-listings-and-ads

Sync your store with Google to list products for free, run paid ads, and track performance straight from your store dashboard.
https://woo.com/products/google-listings-and-ads/
GNU General Public License v3.0
45 stars 21 forks source link

Campaign Creation: Show campaign setup fields immediately during onboarding #2500

Open joemcgill opened 1 month ago

joemcgill commented 1 month ago

Part of https://github.com/woocommerce/google-listings-and-ads/issues/2459

Currently, the first time someone gets to the Create a Campaign step of the onboarding flow, they are presented with a promotion for PMax campaigns with the option either skip or create a campaign. Choosing to Create a Campaign reveals the forms fields needed to set up your first campaign. This adds unnecessary friction since this step is much simpler than it was when originally introduced.

Image

Instead of showing the Skip/Create buttons in the PaidAdsFeaturesSection and hiding PaidAdsSetupSections components, we will always show the PaidAdsSetupSections.

Acceptance Criteria

When reaching the Create a Campaign step of the onboarding flow:

Implementation Brief

Whether the footer buttons are shown in the PaidAdsFeaturesSection or not is based on the hideFooterButtons prop of that component, which currently passes ! hasGoogleAdsConnection || showPaidAdsSetup. This entire prop can be removed and the footer buttons removed from the component itself and all the related logic be removed from js/src/setup-mc/setup-stepper/setup-paid-ads/setup-paid-ads.js where this component is being used.

Likewise, the PaidAdsSetupSections and StepContentFooter are only shown if showPaidAdsSetup is true. Now that we always want to show that component, we can remove all the logic related to showPaidAdsSetup, which is set via a useState() hook. This includes removing remove the clientSession.setShowPaidAdsSetup and clientSession.getShowPaidAdsSetup methods in js/src/setup-mc/setup-stepper/setup-paid-ads/clientSession.js. The rest of that file should remain since it is also referenced by the PaidAdsSetupSections component.

Test Coverage

Update E2E tests in tests/e2e/specs/setup-mc/step-4-complete-campaign.test.js to match expected behavior and remove unused helpers.

eason9487 commented 1 month ago

This includes removing and cleaning up the clientSession helper in js/src/setup-mc/setup-stepper/setup-paid-ads/clientSession.js that is also referenced in the PaidAdsSetupSections component.

Does it mean the uses of clientSession.getCampaign() and clientSession.setCampaign( nextPaidAds ) are planned to remove?

joemcgill commented 1 month ago

Does it mean the uses of clientSession.getCampaign() and clientSession.setCampaign( nextPaidAds ) are planned to remove?

No, I don't think there is any reason to remove those methods. We should just remove the clientSession.setShowPaidAdsSetup and clientSession.getShowPaidAdsSetup methods. I'll clarify in the Implementation Brief. Thanks!

eclarke1 commented 3 days ago

Engineering complete and approved, moving to UAT for @fblascogarma final approval

eclarke1 commented 3 days ago

Just tagging @joemcgill and @asvinb to advise this needs to be merged please

asvinb commented 2 days ago

Merge conflicts fixed and assigning to @fblascogarma for final approval.