The way that checkout works in the NUX right now is a little strange. Since the checkout process is actually after you have finished the NUX flow and are logged in, it's not in the flow at all.
This means you hit the "Continue" button like you're all done, and then get dropped into the checkout flow with no instructional information at all. You aren't even able at this point to change your mind and select a different plan. If you hit the "X" then you're dumped on the plans page with no instructions.
I propose adding a checkout NUX step that within the regular NUX flow. It should be right after the selection of a plan, and allow the user to go back and change their selection.
Checkout page before:
Checkout page as a NUX step (updated: v2):
Going to keep tweaking this, need to take into account some other things that can go in the cart in NUX (google apps etc). Also I think showing the monthly price here so big is probably confusing at a glance.
This is a solid idea. My feedback at this early stage would be mostly in terms of full flow. Checkout is a complex process, so we need to have the design for the full branching journey before starting building it (what's the next step? how do we handle receipts and error messages in NUX? etc).
Smaller details specifically on that first screen:
← Back
button should be centered as is in every other step for consistency.Thanks for the feedback @folletto. One of the main goals here is to keep the primary action pay button above the 660px "fold", so it's not off the screen for more than half of our users. My first thought was to have a top version of the sidebar, but it's going to drop the button below.
I've made a few updates here, I'm going to have a think about the flows before and after. I think ideally we remove all the complexity of the domain registration details out of this particular step. This step would concentrate on converting users to paid in the most simple way possible, and offload more intense information gathering to later.
Ok, all clear 👍
Here's a simple first flow, select plan, pay for plan, get notified of successful payment and then create account.
I feel like creating an account should happen before any of the payment details, to ensure the user gets a receipt. This means it would need to happen very early in the NUX, before selecting a plan, which then means before a domain.
The flow seems good. So it would be already shippable for me.
I can throw in a few discussion / review points, just in case they are worth it:
Quick mock:
Note: I keep surfacing that we should go away from _username_ everywhere, especially from signup (but editable later). ;)
IMHO, one important change we could do is not just the design, but in the workflow, I'd really like to put payment in front of the "Give us one minute and we'll move right along" step. I believe this setup time may have to do with tri-force, and creating the site with all of the default settings. I suspect we could squeak out a worthwhile bump in payment conversion by doing so.
@rralian The above flow I posted would all be before this step.
I like the new design @apeatling and @folletto. I'm trying to come up with smaller tasks/steps how to tackle this and have stumbled upon a few (implementation) questions:
PayPalPaymentForm
, CreditsPaymentBox
- not that important as we could change these according to the new credit card payment mockups but would help (PayPal form screenshot, CreditsPaymentBox screenshot)FreeTrialConfirmationBox
and FreeCartPaymentBox
- when are they used? Should we take these cases into consideration too or is CreditCardPaymentBox
, PaypalPaymentBox
and CreditsPaymentBox
enough?I/we will put the tasks below as new issues but before we do so, I'd like to get your opinions on them, whether they are any good, can be merged into one task or will require more sub-tasks:
checkout/secure-payment-form
. It renders all the possible payment methods, decides which one to show/hide and also renders placeholders if data is loading.checkout/payment-box
according to the mockups. It renders the "Secure Payment" title and then wraps the credit card details (takes child components).checkout/credit-card-payment-box
and all the other "boxes".CartItems
, CartTotal
and CartCoupon
.The issue I see here is that currently, the component hierarchy is not suitable for our new checkout designs. For example, the "Secure Payment" title is rendered in different component than "All fields are required" but in our new designs, they are on the same line so we'll probably have to create brand new components just for NUX while reusing only the essentials such as CreditCardForm
(which renders the CC input fields) but that too will have to be modified with at least CSS.
It seems that it will be quite a lot of work from the first looks. Will add more info when I find any.
I would consider this step as something separate from the main checkout form. Although, I think it should try and reuse as many components as possible, while keeping the scope small.
The old checkout form can still be used for registered users when purchasing outside of the NUX flow.
A couple of other complexities that will need to be considered:
I would consider this step as something separate from the main checkout form.
Alright, so will create brand new components for this just for NUX.
Although, I think it should try and reuse as many components as possible, while keeping the scope small.
Definitely. However, from what I've seen when analyzing the code, not much can be reused. Will see about this more.
It's unfortunate we are building all of these components that can't be reused at all. It might be nice to understand the reasons why this happens, and in the future try and avoid the reasons. Might be a good topic for a Calypso hangout. /cc @mtias
I split the task to smaller issues and put them into Plans: Maintenance milestone (which is probably not correct but I don't feel like creating new milestones. Could somebody else create a new one?). Hopefully the tasks are any good.
Another question: NUX steps are the same for both new users (with no account) and for current users who want to create a new site. Will this apply only to new users without an account? If yes, we don't have to recreate the CreditsPaymentBox
because (I assume) new users don't have any credits.
@lamosty why do you think they can't be reused? It'd be good to have the reasoning before building new components that will just coexist with the others and will probably never converge.
For instance, I believe this popover content uses cart-item:
Which is reused here:
And both match conceptually what is shown here:
So the work should probably focus on updating the cart-item component with the design refresh, clean up the code while at it as necessary, and have a consistent result applied through our UI instead of a different component.
Of course, you won't be refactoring everything under the existing Cart, but isolating the pieces that are doable is how we can make steady progress.
The Cart Total sub-component should also converge:
See: https://github.com/Automattic/wp-calypso/blob/master/client/my-sites/upgrades/cart/cart-total.jsx
@mtias I didn't say you can't reuse CartItems, CartTotal and CartCoupon. I've written (among other things) that:
Add the left column cart with plan name and items in cart. This will probably need to be a brand new component but hopefully we can reuse CartItems, CartTotal and CartCoupon.
Parts of the code can be reused but many not. Anyways, as soon as we start working on these things, we'll see exactly what can be reused and what not.
I was following from your last comment about creating brand new components for NUX. Again, I'm curious to see what can't be reused and why, so we can correct that.
I see. Initially, I asked @apeatling whether we should use the same checkout page/components but just refactor/redesign them or whether to create new component(s) for the NUX checkout step for which he replied that we should keep the current checkout page as it is and create new NUX checkout step components.
Could you also please read my other comment here? I've never worked with checkout code before so did a quick analysis and wrote my findings in that comment.
Wow, lots of changes proposed here. Ideally, we'd start with reskinning the checkout page to better match various flows before we change step order, functionality, and huge dependencies. If we're thinking of moving domain registration out of the signup flow and refactoring purchasing to not necessitate a user, then we need to be coordinating on a much deeper scale with Delta & Spectrum as this will have significant ripple effects in both teams' work.
Misunderstood the domain registration bit and thought the intention was to move the NUX domain step out of signup - instead @apeatling is talking about the domain details within the checkout step. Carry on and ping us for reviews :)
@lamosty I think @meremagee has a good point here. A good first step might be to introduce some of these design changes to the existing checkout page and checkout step in NUX. If the components can actually be shared, then we are also setting the stage for moving the checkout step in NUX. Doing it this way means we can test/launch improvements sooner.
I'm happy to talk this through with you and figure out the scope and setup.
Good points. So if I understand this correctly, this is the order of things to do:
We're exploring one small step of this for now, how difficult it would be to avoid the "wait" step and let that background work happen while the user is on the checkout screen. That's being tracked here. https://github.com/Automattic/wp-calypso/issues/7497
I'm moving this to Plans: Maintenance
since it isn't really related to free user conversion. Also removing @lamosty as this isn't an active project. Sounds like it might actually be superseded by some efforts in Delta. /cc @meremagee
There hasn't been any activity on this issue in nearly a year and the NUX process has changed quite a lot in that time. I will close this issue for now as it's been low priority for that time, we can re-open should this be considered important to tackle at some point.
Most helpful comment
Good points. So if I understand this correctly, this is the order of things to do: