-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Plans: Update "free domain with plan" sidebar upsell to go to domains first #66022
Plans: Update "free domain with plan" sidebar upsell to go to domains first #66022
Conversation
Here is how your PR affects size of JS and CSS bundles shipped to the user's browser: Sections (~2309 bytes added 📈 [gzipped])
Sections contain code specific for a given set of routes. Is downloaded and parsed only when a particular route is navigated to. Async-loaded Components (~104 bytes added 📈 [gzipped])
React components that are loaded lazily, when a certain part of UI is displayed for the first time. Legend What is parsed and gzip size?Parsed Size: Uncompressed size of the JS and CSS files. This much code needs to be parsed and stored in memory. Generated by performance advisor bot at iscalypsofastyet.com. |
If we are already in the upsell flow, there's no need to show another upsell banner.
Thanks for the quick turnaround on this - the flow feels better.
I think this is slightly different than the original issue, where we were adding a plan to the cart in the background, and the user never explicitly knew that they had added it. I think it's completely reasonable to add the domain to the cart when they select the domain - especially if the domain CTA says "add to cart" or something like that. I guess I could go either way - we could wait for feedback from the P2 post. |
Per @michaeldcain's suggestions, I made the following changes (now reflected in the description and screenshots):
|
This feels like a major improvement! Given that the plan is not auto-added, the conversion rate of the link might not be as good as it previously was, but it should go up. We can monitor the stats after the change is merged. It looks good to me but I'll leave the final review to be from a person from Payments. I checked the code, and also tested it by following the test plan and trying a couple of other things that are not on the test plan. I also think this is safe to ship without an experiment, as long as we do a follow-up data request or analysis and see what happened. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This works well for me, and is a definite improvement.
I tested the main flow (CTA > Domain > Plan > Checkout) and everything worked correctly. I also tested exiting the flow after picking a domain (correctly added to cart), mapping and transferring domains (this forked to the existing flows smoothly), and exiting before selecting a domain (no items in cart).
I updated the plans banner to use a title and hopefully reuse existing translation strings. If you don't like the look of it, you can revert to how you had it:
Proposed Changes
In #51609, we updated the "Free domain with annual plan" sidebar upsell nudge to direct users to pick a plan before searching for a domain (instead of adding one silently in the background). This was to address user confusion and refund requests. However, since the primary goal of users clicking on that upsell is to get a domain, the intervening plans page can itself be confusing.
The current flow is: Upsell button > Plans page > Domain search > (maybe) Email upsell > Checkout.
In this PR we modify the upsell flow so that we go to the domains search page first, then the plans page, then directly to checkout.
The new flow is: Upsell button > Domain search > Plans page > Checkout.
There are a few other differences as well:
Some possible problems with this change:
redirectTo
prop that would be used by checkout after the product has been added. This flow will ignore that prop, but since it is added by the?redirect_to=
query string and this flow is started from a hard-coded link I don't think they will ever be combined.withDiscount
prop to add a coupon to the cart along with the plan. This flow will ignore that prop, but since it is added by the?discount=
query string and this flow is started from a hard-coded link I don't think they will ever be combined.Fixes #66017
This must be merged first, but the change will not be active until D84928-code is merged to change where the upsell link goes.
Screenshots
Testing Instructions