So I've taken on the task of rebuilding the checkout process since the way it's done now is really horrifying for the end user..
I've drafted a chart of how the process is today where each box is a new view for the user (except "email pw"):
As you can see, the user has to be in the "shopping cart" view to start the checkout process. Now, when the user wants to check out, the script (circled) checks to see if the user is logged in in order to proceed.
I find that the user has to go through an unnecessary number of views just to be able to place an order, especially when it's a new one.
The main product that is sold requires the user to have an account/profile with the company in order to maintain the device they purchased (uploading/downloading of required files, and support).
Here's a scenario in my mind:
When the user checks out, we use the delivery details and require an email to create the profile. If necessary, this should only happen at the very end of the process. When the user hits "finish", we run a check in our database to see if the email provided exists.
If it does: we ask for the user to provide the password. Done..
If it doesn't: we create a new profile, email the password, and ask the user to enter the password. Done.
What do you guys think?