August 17, 2012
by David Goodale
A Unique Approach to Shopping Cart Software
I decided to review FoxyCart after hearing about it several times in passing conversation. It's an up and coming entrant in the e-commerce payments space. It doesn't currently have market share like bigger names such as Shopify and Big Commerce, but it is carving out a niche with laser guided accuracy.
FoxyCart provides a very unique approach to building an e-commerce website. It's not often when reviewing shopping cart software that I am impressed because of a truly new approach, but that is exactly what happened in this case.
Before rolling up my sleeves and working with the cart I called management at FoxyCart to introduce myself, and let them know I'd be featuring it on our blog. Inside of two minutes it became clear that this is a cart by developers, for developers. And it's refreshingly different. I knew by the end of my conversation that it would be different, but I still wasn't quite sure what to expect...
FoxyCart Is Not For Everyone
FoxyCart was clearly built with a specific demographic in mind. The authors of the software are unapologetic about not making it a solution that is fit for users of every stripe and background. In fact, they go so far as to point out "what FoxyCart is NOT" right on their website. In order to explain who it is meant for, we have to briefly examine the typical shopping cart options that are currently predominant.
When it comes to selecting a cart the first thing a business owner must decide is: "Am I going to use a pre-existing shopping cart software, or am I going to build this whole damn thing from scratch myself?".
This is a very important question and the decision will have long term ramifications for years ahead. There are pluses and minuses for both options (packaged vs custom built). To explore them in depth would be far beyond the intended scope of this discussion. What we can summarize though is that building your own custom shopping cart will give you more control than using a packaged shopping cart. However, it's far, far more complicated to build (and maintain) a custom built cart than to use an existing software package.
If you are wondering why I'm pointing out something obvious, what you will see is FoxyCart attempts to bridge some of the gap between custom developed and packaged cart solutions.
Within the world of packaged shopping cart software there tend to be two methodologies. The first is a locally hosted cart, like Magento, X-cart or osCommerce. With a cart like Magento you download the source code, install it on your own server, and are responsible for maintaining this software. It runs locally of your own server, and this tends to give you more control over the cart. However, if a security patch is released it is your responsibility to make sure it is downloaded and patched so your software is up to date. It's a fair generalization to say that locally hosted carts provide more flexibility but are harder to install and maintain than remotely hosted carts.
On the flip side of that coin is remotely hosted shopping cart software. This is where you do not download or install anything. Instead, the shopping cart area of your website is hosted directly by the shopping cart provider. (ie: store.yourwebsite.com is hosted by the shopping cart provider and does not reside on your server). A good example of this type of cart is Shopify or Big Commerce. Remotely hosted carts provide several advantages, some of them being very significant such as the fact that all security updates are the responsibly to the software provider and are automatically applied since they are hosting your store. Another huge advantage is that any good remotely hosted cart will be PCI Compliant and will handle the credit card data collection part of the checkout process. This can ease the regulatory/compliance burden of handling sensitive cardholder data yourself. The primary disadvantage to a remotely hosted cart is that they can be more difficult to customize and you inevitably have less control than a cart that is hosted on your own website.
Now, to the point of why I'm stating this: FoxyCart is either neither... or it's both. I'm still not sure how to classify it. The point is that FoxyCart fills a unique void that has never been adequately filled before.
FoxyCart Steps Away from the Traditional Local vs Remotely Hosted Cart Approach
The crux of the matter is that FoxyCart handles all of the sensitive parts of the checkout process like a remotely hosted cart, but the product pages are actually hosted on your own server. To a significant degree, it largely succeeds in giving you the power and control of a locally hosted cart, with the ease of implementation and PCI compliance advantages of a remotely hosted cart.
How does it do this? FoxyCart has no product database. Instead, you use static HTML code snippets on your website. These very basic hyperlink or form code snippets contain basic product information that is sent to FoxyCart. It's a hyper-streamlined modern shopping cart that runs off of static HTML code.
The HTML code snippets can be inserted anywhere on your website. Wherever you insert the code an 'Add to Cart' button is generated on the page. This means that FoxyCart can be integrated directly into any website, even static websites. There really is no installation at all - you just drop the code anywhere you want the buttons to appear.
When a customer clicks one of those 'Add to Cart' buttons the user is not taken off site at all. Instead the user is presented with a modal window (a lightbox that overlays the content on the screen) with the contents of their cart. The user can continue to shop by closing this window and continuing to browse the website. Or, if they are ready to proceed, they can click the checkout button.
When the user presses the checkout then they are launched into the FoxyCart checkout process. This is where FoxyCart begins operating like a remotely hosted shopping cart. As a result of this you are able to retain control over the user on your website for as long as possible. Because the very last step (the credit card collection step) is handled by FoxyCart you do not have to touch any sensitive cardholder data. The part that is handled by FoxyCart is seamless from a look and feel perspective, and we will examine this in more detail below.
The end result is that FoxyCart has the control of a locally hosted cart (and arguably approaching that of a custom developed cart), while sharing some of the benefits of a remotely hosted cart.
It's important to mention that what I have described above is the most basic implementation of FoxyCart and can be expanded on greatly by using some of the more advanced functionality of the cart, which we will examine further below.
It's Time To Decide if FoxyCart is For You...
FoxyCart is easy to use at the basic functionality level, but it's clearly a cart made by developers, for developers.
Better said, it's not that FoxyCart isn't a good choice for non-techies, but it's that non-tecchies will not be able to take advantage of the biggest advantage that FoxyCart brings: it integrates into any system. In other words, FoxyCart lets you use your existing custom scripts, existing software and existing processes, and plays with them in a friendly way.
This integration flexibility is a key point. When a transaction is processed using FoxyCart it says: "hey, I just got this approved, so I'm returning the transaction data to you so that you can go and do whatever you want with it". FoxyCart hands the order data over in XML format. If you are having trouble thinking of why this would matter: consider if you have a central database with your customer information. You are using an existing (and highly specialized) email software to do email blasts to your customers and maintain your list. Many shopping carts provide mail blast functionality, but few shopping carts can handle email blasts as well as dedicated email blast software. With FoxyCart you can take the approval message and update your own database after each order with the new customer's details. FoxyCart is now integrated directly into the database that your email blast software is using.
Building everything from scratch would be the best solution in an ideal world, with unlimited resources, and unlimited technical staff. However, FoxyCart recognizes that we don't always live in an ideal world. So it handles the shopping cart checkout process really, really well, and drops into place like a lego block so you can focus on integrating it into all your exiting software packages.
It actually doesn't make sense for me to come up with too many examples, because if you are the right type of user you will already understand what this means: FoxyCart is like a custom coded cart in that once you get the transaction approval message back you can do whatever you want with the information after it is received.
Let's Talk Interface
So much of what we've been analyzing above is looking at FoxyCart from a concept point of view. We haven't even got into the actual day-to-day checkout functionality of the cart yet.
FoxyCart is a very modern cart and uses new technologies in an effort to benefit the user experience. Much effort has been put into the cart, logic and checkout process to make it as efficient as possible and provide the optimal user experience for your customers.
From an end user standpoint the interface when completing a sale is extremely modern and clutter free. When a user adds a product to the cart a modal (lightbox) type window smoothly appears over the website content. This neither distracts the user or takes them away from their current navigation. From here the user can quickly launch into the purchase process. It's actually 2 clicks through to purchase, but only one screen refresh to purchase because of the modal window so that the page doesn't have to reload. Marketers should love this.
It's clear that the authors have applied years of logic and lessons that (as a community) e-commerce consultants have accumulated over the last decade. It applies many of these concepts in very tangible and effortless ways. We'll examine this through the process of setting up a FoxyCart store.
Let's Get Building. But There's no hurry - Take Your Time!
The fact that the authors of FoxyCart have a development background with a specialization in e-commerce is fairly evident in the little details that pop up as you work through the cart.
For example, the authors of the software understand that building an e-commerce store takes time. Or, better clarified: getting it right takes time. Upon signing up for the software you can take as long as you want to test your FoxyCart store. There won't be any charges until you decide to set it live. The software is 100% functional and not limited in any way except that you can't use it to process live transactions. The clock is not running, so you can work at your own pace.
The first thing to understand is that FoxyCart can be either very simple, or complicated to set up. That's because in it's simplest form FoxyCart is powered by simple 'Add to Cart' buttons that use simple HTML code inserted anywhere on your website. You could get this done minutes and such an application is obviously quite simple.
On the flip side of the coin this software that can do some seriously heavy lifting. If you use the XML based API you have the ability to share user and transaction information via the API with your own custom processes that can trigger pre or post transaction. To a non-tecchie that sounds confusing, so just think that after a transaction is approved, you could make FoxyCart tell your email software to add this customer to your email list.
For the purpose of this review we are only going to scratch the more basic functionality. We'll begin with the process of configuring the cart for use on a website.
Working Through The Setup Wizard
Immediately after filling out the signup page on the FoxyCart website you are launched into the store building process.
The first thing you will notice is that every single configuration field (literally, every single one) has a tooltip box that can be expanded if you need help. The authors of the software want to make it easy to setup even for less skilled users.
The first step configures basic store parameters. For example, you will configure your store name, the URL of your website, the email addresses associated with your store, etc. You also get to choose a sub domain on FoxyCart in which your checkout page will be hosted. You can customize the URL to make it relevant to your store. For example, if you had an online shoe store you could setup your checkout pages to be hosted at shoes.foxycart.com. You also have the option of configuring your own custom subdomain to run on the FoxyCart server.
Creating a Product Category
FoxyCart has no product catalog. This is a significant departure from traditional shopping cart software. Instead, you can create 'Add to Cart' buttons for anything, and stick them anywhere on your website. Technically, you don't need to stick to simple buttons though. You could just as easily build a complex online event registration form. The ways in which you can integrate your purchase process into FoxyCart is mostly limited by your imagination. If a customer clicks on one of these Add to Cart buttons then data is sent to FoxyCart about what this user wants to buy. As a result there is no uploading of product images, no typing out product descriptions and no product database to maintain. For small merchants with simple requirements you could easily create a few static HTML pages and insert some 'Add to Cart' buttons. If you have a large product catalog you can use your own database or framework to pull the product data and populate the 'Add to Cart' buttons into your website. But these are very different applications of FoxyCart. In fact, if I can rant for a moment, that is what makes FoxyCart so hard to review. There are a wide range of uses for both basic and advanced users. (end of rant!)
Inside of FoxyCart you do have to define product categories. The categories you create determine how FoxyCart reacts when different types of products are sent to your FoxyCart store (when the users press the 'Add to Cart' buttons). For example, you could setup two categories: 1) furniture and 2) digital downloads. With digital downloads there might not be any tax or shipping costs. However, products in the furniture category might have a range of different taxes and shipping costs depending on where it is being shipped. For the sake of mentioning it, when the user presses the Add to Cart button the 'product category' that the item is associated with is sent to FoxyCart so it knows what category of logic it should apply for the product that was just added. This is a very unique approach and once you understand that the category determines how FoxyCart will react (ie: should I add tax to products in this category?) this inherently gives website administrators a great deal of control over their cart. The actual control categories can provide is quite granular, including coupon codes, quantity discounts, custom emails for certain products, etc.
Since I mentioned tax logic above, we should dive in a bit deeper. I have to admit that I had a problem at first with the tax logic with FoxyCart. However, the problem wasn't with FoxyCart, the problem was me. When configuring the tax the cart asks a series of very (overly) simple questions, like: Do you want the tax to be charged globally, by country, by region, or at a local/municipal level? The problem I ran into came when I was trying to add a 13% HST tax for customers in Ontario. I simply chose 'regional' tax, named it "Ontario" tax and typed 13% in the amount. I was sure this was inadequate though. What if when someone filled out my checkout page they typed in the provincial acronym 'ON', or the old fashioned "Ont" instead of writing in "Ontario". Or, what if a customer adds a period into the province field when typing in their order? Programmers will understand that a text string (when programming computers) must match literally and won't catch the variations. Ultimately, I couldn't figure out how could I type in the name of a province, with no logical definitions of what it actually meant, and expect the cart to just work. The answer (after some needless worry and frustration) was that FoxyCart is just smart! It knew what province I was talking about because it was designed intelligently. There is actually a logic routine to figure out within each country what the valid region city options are. If a customer is filling out the orderform on the checkout page and types in a provincial or state acronym the cart is smart enough to recognize and update the field with the full proper state or province name - with the correct tax being applied. This might all seem obvious (especially if you do not have a programming background) - but this is not how tax logic usually works! It's usually more painful. That's why I'm taking so much time pointing this out. It's a simple example of how FoxyCart has applied hard earned lessons that e-commerce website builders have learned over the past decade. I just didn't expect it to be so easy... and spent at least 20 minutes trying to figure out how the cart handled provincial acronyms before I just tried a test order and saw that it magically worked.
FoxyCart supports a range of shipping methods split between real time shipping from UPS, FedEX, and USPS and custom logic that you can define per category type.
The shipping logic is very simple to setup. It's worth noting that in my discussion with the authors of the software they mentioned that that there has been a massive undertaking to redesign the shipping logic module from scratch. This is currently under development with a goal to create shipping logic that could handle almost any custom scenario. They used the example of where someone purchased a gift basket with chocolates, but if they added the option of a cheesecake the shipping logic would be smart enough to know the cheesecake would have to be packaged separately and be shipped 48 hours or faster. Therefore, if the shipping destination is more than 500 miles away it would cause the shipping logic to only show the allowable shipping options. They mentioned that this logic is done but hasn't yet been published (they project to publish it some time early in the new year). I have never seen a shopping cart that could handle that type of shipping logic out of the box, so I'll be excited to see that when the updated shipping logic launches. For now though, the existing shipping logic is quite flexible, ties into many real time shipping with popular couriers, and should easily meet the needs of 95% of typical e-commerce merchants.
Other Options - FoxyCart does NOT Include the Kitchen Sink
FoxyCart supports a range of standard cart options such as support for digital downloads, coupon codes, recurring billing, integration with almost every popular payment gateway (including full compatibility with Merchant Accounts.ca), customizable transaction emails, etc. For more on the specific options you can visit the FoxyCart website.
While it's fair to call FoxyCart a fully featured software, it's definitely not the most feature rich shopping cart around. There are many carts available that offer far more built in functionality such as Shopify or Big Commerce. It depends on the type of user you are in order to determine whether this is an advantage or disadvantage.
Customizing Your FoxyCart
Customizing FoxyCart is one of the strongest features of the cart. First, because the 'Add to Cart' buttons are inserted into an existing website it means that there are no page templates to customize. You simply take your existing product page, throw in the button and it works seamlessly. Literally seamlessly. It can't get better than that.
However, there is still the matter of customizing the checkout pages. This is where FoxyCart has taken what I consider to be a fairly revolutionary (and developer friendly) approach. They provide you with two tags to insert into any page on your website:
You simply take these tags, insert them into a page on your website and then go back to your FoxyCart dashboard and type in the URL of this page. FoxyCart spiders the page, finds the tags, copies the design and automatically applies it to your store.
I found this worked fairly well on my customized FoxyCart store. It also allows you to edit the code directly on the page so that you can make any further customizations that you see fit.
SEO, Analytics and Other Functionality
FoxyCart is the most SEO friendly type of cart possible - to the right user. The reason why is because it runs on your own website you can implement absolutely any type of optimization strategies you would like. If you think about it logically you will realize that you are inserting the 'Add to Cart' code snippets into your website. It's YOUR website, so of course you have unlimited control over the search engine optimization. Again, the reason why this can be a positive or a negative is that some users have no idea about SEO and some carts automatically implement little tricks like putting the products name in the HTML title tag and in the URL of the page. These are little tips that someone with no knowledge of SEO would benefit from. However, an advanced user would greatly appreciate the unlimited control that FoxyCart provides from a SEO perspective. Yet another example of why FoxyCart is an awesome tool in the right hands, and simply not the right choice for others. The same logic applies to analytics, and other website functions. You can't use FoxyCart's in-house analytics program because there is none! You have to go and get your own (like Google Analytics). For advanced users = huge bonus. Beginner users = negative.
FoxyCart has two standard programs: Standard and Advanced. The standard program has a monthly cost of $15 and a per transaction fee of 0.5% (to a maximum of 15c). The Advanced is much more expensive at $250/month and 0.5% (to a maximum of 5c per transaction). The advanced would only be a fit for merchants with fairly significant trading volumes.
I am always critical when shopping carts charge a per transaction fee. That is because software technology costs have a monthly fee, but some software authors are dipping their fingers into the per-transaction pie. There is nothing inherently wrong with this, but as transaction volumes get bigger this cost can begin to add up. More importantly, other software providers do not have a per transaction fee so it's just an extra cost.
On the flip side of that argument FoxyCart has two valid points. First of all the per transaction fee maxes out at 5c or 15c per transaction depending on the program you are on. Second, is that when compared to other popular carts with a per transaction fee model, FoxyCart is actually quite comparably less expensive. It does offer functionality that most other carts do not (in terms of it's unique method of implementation), so the per transaction fee is arguably easier to justify than when comparing a standard remotely hosted cart with a per transaction cost model vs one without. It's certainly not a bad value, but a point of consideration.
FoxyCart provides support by email and telephone. During my review I had two instances in which I needed assistance and followed the standard support channels. Email response time was very quick (sent at night, response in early morning the next day), and was able to get folks on the phone immediately when I called in. One advantage of FoxyCart is that today (at least as of writing this review) is not a huge company and does not give the 'anonymous email support ticket system' feeling. There were not canned responses, but the folks I interacted with seemed like they were listening and taking a personal interest in helping resolve the problem. This is a somewhat intangible aspect of a company, but one that I personally do not undervalue. In fact, when it comes to technology (especially technology that powers your ability to complete sales) support absolutely should never be undervalued. In that regard my support experience was reassuring.
Although I haven't worked as a programmer for over a decade I still am far more comfortable working in a technical capacity than the typical business owner. Also, I am the first to admit that I am... a control freak (the gentlest term I could think of) when it comes to maintaining our website.
As a result I admit to being biased in this review to the extent that I fall perfectly within the target demographic of who FoxyCart is meant for. Much about FoxyCart that is a positive could also be a negative in another situation. What if a business owner was not comfortable working with HTML code? What if it's a small business that doesn't have any existing technology infrastructure, and requires a turn key solution (order tracking, analytics, order management, inventory tracking, pre-designed page templates...). In short, there are hundreds of thousands of people for whom FoxyCart would probably be an inferior choice. If you don't already have a website, don't have any comfort in HTML code, don't even know what "website hosting" is then you should definitely be using a hosted cart like Big Commerce, Shopify or 3DCart.
Even for the demographic in which it's intended FoxyCart can have it's problems. There is somewhat limited shipping logic functionality (although this is being addressed in the next major update) and data entry of the tax logic could arguably be streamlined. I had a small error while testing the cart: if the user clicked the 'Add to Cart' button before the page finished loading the cart wouldn't load in a modal window but instead would actually take the user to the FoxyCart site. This didn't break the functionality, but it didn't operate as intended. In fairness, this is almost certainly an error in how I added it to the page I was testing, but the point is that because you are handling some code manually there is more opportunity for error to occur (human error) than with a hosted cart. This is not a case where anything is wrong with FoxyCart, but still a consideration that must be kept in mind.
Because of FoxyCart's uncompromising approach to doing great at what it does great at, and leaving the rest to the imagination of the developer it means that the cart may be lacking functionality that you may want. It's true that developers can build almost anything they need by working with the XML feed (web hook), but sometimes you might want to just click a button that says "embed FedEx tracking code into order receipt email". However, that simply isn't what FoxyCart is built for, and that is the reason why FoxyCart doesn't stack up well against a remotely hosted cart like Shopify in that department.
Overall, these really aren't much criticisms at all in terms of the cart, because it's supposed to behave this way. It's more an honest assessment of the downsides of the FoxyCart method vs the traditional remotely hosted cart method.
When I started working with FoxyCart I had been focusing on what it could do. The further I got the more I realized that it could do almost anything. I've realized that FoxyCart fills an empty space... it fills the empty void between using a pre-packaged cart solution like Big Commerce, and building your own cart from scratch right from the ground up. In the hands of a web developer the question isn't what FoxyCart can do, it's what can't it do. For the most simple of applications, it's arguably easier to setup that the simplest hosted cart solution because there is no installing of any software, just simple html code you paste into your website. At the other end of the line it's harder to setup than the most complicated hosted cart solution and even most locally hosted carts because you will be implementing and tying it into your own existing technology infrastructure. With other packaged solutions you just can't get that sort of control, but to accomplish this you have to be comfortable rolling up your sleeves and plunging into the API.
FoxyCart isn't for everyone, and it is definitely not the solution to every problem. If Big Commerce or Shopify are like a hammer and screwdriver of e-commerce (being useful in almost every typical situation), then FoxyCart is like a titanium drillbit... perfect for the job in the right situation. If you are a developer and are comfortable working in HTML, and especially if retaining control is important to you, then FoxyCart may be the e-commerce platform that you are looking for.
For more information about FoxyCart go to the source at www.foxycart.com.
If you haven't reviewed your processing costs in a while take a moment to view our rates.
If you have comments and would like to contact the author you may do so by completing the form below.