Part 5: Customer Accounts Offering
Submitted by Matthew Turland on Mon, 08/31/2009 - 09:18This post is the fifth part of a series covering the feature set of the Magento PHP-based e-commerce package. In particular, it will review the customer accounts features.
Once a customer has registered and logged in, they are presented with a dashboard screen that is also accessible from /customer/account/ under the base Magento path or by clicking the My Account link in the default theme. Most features discussed here are made available from the navigation on this dashboard page, located in the column labeled MY ACCOUNT on the left-hand side.
To compile portions of the feature evaluation below, I used the Enterprise Edition demo which requires registration.
Order Status and History
In order to review this feature, I first had to place an order. As part of this process, I registered a new customer account in order to be able to view the customer dashboard. An annoyance I encountered during this process was that upon completing the order, I attempted to go to the dashboard via the My Account link and was prompted to log in. I've already verified my identity, so requiring this seems needless.
A table for the order history is prominently placed at the top of the Account Dashboard page on the left-hand side. The same table is also accessible via the My Orders page linked to from the same navigation area. It contains the order number, date, total, status, and shipping recipient if applicable (it's left blank for virtual and downloadable products) and provides a link per order to view all information for that order.
Re-orders from Account
In addition to the link to view order information, a Re-order link is also provided. This link will add the contents of the selected order to the shopping cart (without removing any existing items in the cart) and direct the customer to the shopping cart page to reflect this effect.
Recently Ordered Items
This feature comes in the form of a block that displays individual products recently ordered by a given customer. You can find it at the bottom of the left column in the My Account area as well as the bottom of the right column on category pages in the demo store. Oddly, even though the label for the block is pluralized, it only ever seems to show the single last product purchased.
Downloadable Products
Downloadable products function similarly to virtual products in that neither shipping nor inventory apply to them. Unlike virtual products, however, they offer a downloadable asset following the purchase. These are available via the My Downloadable Products page. Products can have a limited or unlimited number of downloads per purchase, be locally or remotely hosted, and optionally offer a separate limited sample version.
Sadly, the only documentation on this feature is this wiki article, which isn't as comprehensive as it could be. It doesn't cover some options specific to the downloadable product type, like shareability and separately purchasable links, and no user guide page currently exists as of this writing to fill in those gaps. Odd, considering this is not a recent feature addition.
Address Book with Unlimited Addresses
Available from the Address Book page, this feature lists existing addresses for the current customer and allows customers to enter new addresses. In the checkout process, the customer can select an existing address from a drop-down menu or opt to create a new address within the checkout page using a form identical to the one used by the Address Book page.
Default Billing and Shipping addresses
Addresses can be selected from the Address Book to serve as the default billing and shipping addresses. This is controlled using checkboxes at the bottom of the form to add and edit addresses.
Wishlist with Ability to Add Comments
The user guide covers this feature. When displayed in a category listing and the like, products include an option to be added to a wishlist for the current customer. In the demo store, this wishlist area provides a listing of products currently on the wishlist including the name, price, default photo, link to the product description page, the date it was added to the wishlist, and an optional comment entered by the customer. Products can be added to the shopping cart from the wishlist, individually or all at once. A feature similar to the Last Ordered Products exists for the last product added to the wishlist in a block that appears in the right column of the product description page in the demo store.
Noticeably absent facets of this feature include multiple wishlists per account, quick access to a direct wishlist link, and prioritization of products in the wishlist, features that are normally available on systems such as Amazon.
E-mail or Send RSS Feed of Wishlist
From the My Wishlist page, a SHARE WISHLIST button leads to a form-to-e-mail intended for sharing wishlists with one or more e-mail addresses. The sharing feature didn't appear to actually work on the demo store, as I never received the e-mails. Oddly, it also doesn't appear to have validation to catch the same address being entered multiple times or a visible cap to prevent the form from being used for spam.
The source code appears to indicate that Magento will only use the sendmail transport for e-mail on Linux, which means you're forced to hack the core if you want e-mail functionality if you don't have a sendmail installation because there's no way to override this to use a different transport.
Newsletter Subscription Management
A section of the user guide details the admin area dealing with this particular feature. From the customer side, the Newsletter Subscriptions page displays a list of newsletters (in this case only one called "General Subscription") with checkboxes for enabling or disabling the subscription. There is also a Sign Up for Newsletter checkbox on the form for creating a new customer account.
The documentation and layout of the admin area and the single checkbox on the customer account creation form appear to indicate that only one newsletter is supported per installation (insofar as customers being to subscribe to multiple newsletters or those newsletters being listed in the admin area somewhere), which seems contradictive the related area of the customer dashboard. It's possible that support is or was planned to have support for multiple newsletters.
Under the hood, this feature uses the Sendmail transport of Zend_Mail, which is simply a wrapper around the PHP mail() function. Sadly, there doesn't appear to be an easy way to change this without hacking core code.
Product Reviews Submitted
Customer-submitted were discussed from an administrative perspective in a previous post in this series. For customers, submitted reviews can be viewed from the My Product Reviews page regardless of their publishing status. The table on this page includes the name of the product and a link to its description page as well as the review's overall rating, text, and submission date. A link is also included to show a bit more information with the review including the default product photo and average customer rating.
Two notable traits of this feature are the inability to edit or delete reviews once they're submitted and the ability for the same customer to submit multiple reviews for the same product. The latter capability implies the ability of a malicious user to spam the moderation queue, though I only submitted two reviews for the same product and can't confirm or deny that a cap may exist on the number of reviews for the same product and customer.
Product Tags Submitted
The My Tags page lists tags added to products by the customer. Tag names are linked and produce a listing of products that the customer has tagged with that tag. A link is provided for each product in this list to add that product to the customer's wishlist. Tags can be renamed or deleted. There doesn't appear to be a way to selectively remove a tag from particular products once it's added to them, only deleting the tag entirely.
Account Dashboard
A blog post was done on this feature prior to Magento's initial release. The demo store and a stock installation of 1.3.2.2 differ in the contents of this area. The demo store does indeed include recent orders and reviews, but the stock installation includes neither of those blocks and instead includes recent tags. I'm assuming this has to do with the demo store having a customized theme. Both present a list of newsletter subscriptions, primary billing and shipping addresses with links to edit both, account contact information, and a link to change the account password.
Wrap Up
For the most part, this area deals with features that are common to the point of being expected in any e-commerce package worth its weight. Those that aren't, such as wishlists, newsletters, reviews, and tags, all appear to have quirks or shortcomings that make them appear embryonic in their development and potentially better suited for third-party modules rather than core features.

