Shopify: The Ups, The Downs, The Verdict
Upanup recently had the opportunity to dig into Shopify, a hosted ecommerce solution that attracts users with it's point-and-click startup process, while also appealing to designers and developers with its comprehensive list of tools that can take a storefront to the next level. We recommended Shopify as the ecommerce solution of choice for a project because of the multitude of supported payment gateways, its adequate wiki documentation, its feature base-state, and the degree of customization it provided to our development team. The platform is also cost-competitive (if not very attractive) when comparing with other leading competitors like Magento, ProductCart and BigCommerce.
Our production team was pleased that Shopify used .liquid, a template development language that's semantic and powerful. Stacking up to other development languages, .liquid proved more than capable at handling all the needs of our project. It provided suitable expressions to achieve the required functionalities, and supported several of the other common building tools (outputs, filters, tags, cycles, etc.).
Documentation and Support
Shopify's Wiki was adequate; it included decent references and tutorials which covered pretty much all capabilities. The Shopify team wasn't shy about providing support, with timely check-ins and responsive emails when questions were asked. One shortcoming was the traffic at their forum. As a developer, I like to read through the experiences of others, different approaches, varying work-arounds, etc. The forum isn't a bustling hub of info, but it's not totally barren either.
The built-in features as they relate to the products, cart and accounts are abundant. I immediately saw how Shopify must be an attractive solution for business owners to get selling online fast, with little to no customization required. The payment gateway options were plentiful, as mentioned, and the integration process proved functional and smooth.
Shopify uses a predictable and familiar template structure with a universal theme layout and individual view files. The platform also provides freedom to create page templates for non-ecommerce related pages which were useful to address varying layouts.
Our team used TextMate as our code editor for template work, enabled by an excellent bundle available on github that connects to the store's API (thanks to Mitchell Amihod, aka 'meeech', for his great work on this). The store's API was also tested when we created a custom form to post customer registration data, a function that wasn't found in the solution's base-state (read on for more on this).
In hindsight, our team only has two issues with Shopify as an ecommerce solution.
Customer Account Creation
The account creation structure is lacking in options. The store admin can accept checkout from guest users (with login optional), or custom login can be made required. Great! Oh wait, except the admin has to physically create customer accounts themselves and then invite the user to create a password. The admin workflow on this seems too extensive. Our client wanted user registration required before purchases could be made, therefore we developed a custom form to post to the store's customer API to create an account on form submission. Which created a new challenge: providing a notification system on this event. We did accomplish what was required, but it seems that a simple 'Account Creation' registration form could be supported, with the relevant email notifications for the event.
The checkout view is Shopify controlled. It's about the only view that isn't completely customizable. I understand that this page is a critical stage in the checkout process since it's the integration point with payment processors, and that keeping the HTML under strict guard on this view prevents developer- or admin-caused errors. But having access to a few snippets that wrap around the checkout guts would make us happy. We were able to skin the page through CSS but were of course restricted to the set markup. A degree of HTML-modifying powers on the checkout view would be much welcomed by developers and shop owners alike.
As mentioned, Shopify looks to be a very attractive option to the non-technical company owner looking to get online. It also provides enough tools to attract a decent community of developers who are looking to use the platform as a customizable solution. I hope this focus isn't neglected. Nurturing a strong developer fandom is crucial for a platform to thrive because it's this group that are often key decision makers in many project-direction discussions. Shopify is clearly on their way.
Upanup would use Shopify again; the solution is robust, secure, stable and extendable.