Skip to content| Skip to navigation

Miva Merchant: Customer Account Creation on INVC Page

Recently there’s been lots of buzz on the Miva Merchant User Support Forum about moving the account creation process to the end of the checkout. There are a number of good reasons for doing this. First, you eliminate one of the checkout screens, and streamline the checkout process. Second, and more importantly, you eliminate a decision from the checkout process.

There’s a great usability book out there by a fellow named Steve Krug, called “Don’t Make Me Think” That book title couldn’t be more apt for the checkout process in a shopping cart. When your shoppers commit enough to hit the checkout button, don’t present them with a new decision to have to make before they can get started.

As one person put it, your shoppers aren’t looking to develop a relationship with you. You have something they want, and they want to give you their money so you can send it to them. Since you want to get their money and send them things, it seems you have a common goal. So why not make it easier to achieve that goal? Get the sale, and then offer them the opportunity to create an account if they think they’d like to come back and shop again. But don’t clutter the checkout process with an unnecessary decision.

So, to the meat of the matter. How does one go about creating an account for a customer using the information available on the INVC page? Since they’ve already provided their shipping and billing information, there are only two additional bits you need from them: a user name, and a password. The rest you can feed to the form from what they’ve already told you.

In your INVC page template, decide where you want to present the account creation option, and add the following code. The hidden input for PrevPage isn’t required, but it gives you a global variable to test against if you want to customize the ACED page to display a “Thank you for creating your account” message instead of the account edit form.

You’ll have to do your own form styling, but this should give you the bare bones you need to get started.

<form method="post" action="&mvt:global:secure_sessionurl;">
<input type="hidden" name="Store_Code" value="&mvte:global:Store_Code;">
<input type="hidden" name="Action" value="ICST">
<input type="hidden" name="Screen" value="ACED">
<input type="hidden" name="PrevPage" value="INVC">
<label for="login">User Name</label>
<input type="text" id="login" name="Customer_Login" value="&mvte:global:Customer_Login;">
<label for="pass">Password</label>
<input type="password" id="pass" name="Customer_Password" size="25" value="&mvte:global:Customer_Password;">
<label for="verifypass">Confirm Password</label>
<input type="password" id="verifypass" name="Customer_VerifyPassword" size="25" value="&mvte:global:Customer_VerifyPassword;">
<input type="hidden" name="Customer_PasswordEmail" value="&mvte:order:bill_email;">
<input type="hidden" name="Customer_ShipFirstName" value="&mvte:order:ship_fname;">
<input type="hidden" name="Customer_ShipLastName" value="&mvte:order:ship_lname;">
<input type="hidden" name="Customer_ShipEmail" value="&mvte:order:ship_email;">
<input type="hidden" name="Customer_ShipPhone" value="&mvte:order:ship_phone;">
<input type="hidden" name="Customer_ShipFax" value="&mvte:order:ship_fax;">
<input type="hidden" name="Customer_ShipAddress" value="&mvte:order:bill_addr;">
<input type="hidden" name="Customer_ShipCompany" value="&mvte:order:ship_comp;">
<input type="hidden" name="Customer_ShipCity" value="&mvte:order:ship_city;">
<input type="hidden" name="Customer_ShipState" value="&mvte:order:ship_state;">
<input type="hidden" name="Customer_ShipZip" value="&mvte:order:ship_zip;">
<input type="hidden" name="Customer_ShipCountry" value="&mvte:order:ship_cntry;">
<input type="hidden" name="Customer_BillFirstName" value="&mvte:order:bill_fname;">
<input type="hidden" name="Customer_BillLastName" value="&mvte:order:bill_lname;">
<input type="hidden" name="Customer_BillEmail" value="&mvte:order:bill_email;">
<input type="hidden" name="Customer_BillPhone" value="&mvte:order:bill_phone;">
<input type="hidden" name="Customer_BillFax" value="&mvte:order:bill_fax;">
<input type="hidden" name="Customer_BillAddress" value="&mvte:order:bill_addr;">
<input type="hidden" name="Customer_BillCompany" value="&mvte:order:bill_comp;">
<input type="hidden" name="Customer_BillCity" value="&mvte:order:bill_city;">
<input type="hidden" name="Customer_BillState" value="&mvte:order:bill_state;">
<input type="hidden" name="Customer_BillZip" value="&mvte:order:bill_zip;">
<input type="hidden" name="Customer_BillCountry" value="&mvte:order:bill_cntry;">
<mvt:item name="buttons" param="Save" />
</form>
  • Twitter
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Yahoo! Bookmarks
  • Technorati

5 Responses to “Miva Merchant: Customer Account Creation on INVC Page”

  1. Anonymous says:

    I tweaked the “bare bones” you posted and put it in a table in my INVC footer wrapped in a conditional to check to see if the user was already logged in. Thanks a bunch TQ…just what I was looking for!!!

  2. Shannon says:

    Is it possible to provide a form with a checkbox and a button called “create account” that takes the customer to the ACED page to fill in their username and password instead of doing it right on the INVC page? Having the username and password fields on the invoice makes it a bit distracting on the printed form of the invoice.

  3. Tiny Queen says:

    Hi Shannon,

    Sure it is. You would make the following changes to the form above.

    First, delete this line:
    <input type=”hidden” name=”Action” value=”ICST”>

    Second, change the screen destination to the ACAD page:
    <input type=”hidden” name=”Screen” value=”ACAD”>

    Then, remove the inputs for the login name and password:
    <label for=”login”>User Name</label>
    <input type=”text” id=”login” name=”Customer_Login” value=”&mvte:global:Customer_Login;”>
    <label for=”pass”>Password</label>
    <input type=”password” id=”pass” name=”Customer_Password” size=”25″ value=”&mvte:global:Customer_Password;”>
    <label for=”verifypass”>Confirm Password</label>
    <input type=”password” id=”verifypass” name=”Customer_VerifyPassword” size=”25″ value=”&mvte:global:Customer_VerifyPassword;”>

    Finally, add your checkbox.
    <input type=”checkbox” value=”Account_Create”> Check here to save your information to an account.

    If you wanted to get fancy, you could edit the ACAD page to check for the checkbox value, and display a special message to the customer.

  4. Shannon says:

    Thanks! That works perfectly. I’m now working on tweaking the layout to look the way I want, but that helps a lot!

    Can you suggest what coding I need do the check on the ACAD/ACED to display the special message as you mentioned at the bottom of your response? I’m sure it is an if/else statement but not sure what code is needed to check to see if came from the INVC page after checking the checkbox.

  5. Tiny Queen says:

    Hi Shannon,

    You can create a global variable within a form on any page that will be passed to the next page when the form is submitted. Then you can use that global variable in a conditional to display your custom content.

    You create your global variable by putting a hidden input field into your form, for example:
    <input type=”hidden” name=”MyVariable” value=”1″>

    Then, on the ACAD page, you would write your conditional like so:
    <mvt:if expr=”g.MyVariable EQ ‘1′”>
    Show my special message.
    </mvt:if>

    Since the global variable won’t persist past the current page, if you wanted to carry the conditional message through to the ACED page, you would add a second hidden form input inside a conditional (otherwise it will send all of the time), like so:
    <mvt:if expr=”g.MyVariable EQ ‘1′”>
    <input type=”hidden” name=”MyVariable” value=”1″>
    </mvt:if>

Leave a Reply

HTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>