Archive for the ‘OSS e-Commerce’ Category

Sometimes the developers of the core Magento e-commerce system forgets that most people that use the software spend a huge amount of time doing data entry. One of the UI problems that we’ve run into is the fact that if you have a significant amount of product attributes it doesn’t sort them alphabetically. We ran in to a particular problem with one of our clients. They have a massive amount of Manufactures.

With more than 300+ entries, it was quite the problem for them to manually sort them alphabetically. Instead of writing a plug in to address this problem we came up with a simple hack. We wrote some SQL code to copy the attributes, sort them and then copy then back to the original table.


SET @ordering_inc = 1;
SET @new_ordering = 0;

DROP TABLE IF EXISTS my_new_sort_order;
CREATE Temporary TABLE my_new_sort_order (
option_id INT (10),
attribute_id SMALLINT (5),
sort_order SMALLINT (5)
);

INSERT INTO my_new_sort_order
SELECT eav_attribute_option_value.value, eav_attribute_option.option_id, (@new_ordering := @new_ordering + @ordering_inc) AS sort_order
FROM eav_attribute_option_value
JOIN eav_attribute_option ON eav_attribute_option_value.option_id = eav_attribute_option.option_id
WHERE eav_attribute_option.attribute_id=66
ORDER BY eav_attribute_option_value.value;

UPDATE my_new_sort_order
SET sort_order := (@new_ordering := @new_ordering + @ordering_inc)
ORDER BY VALUE ASC;

UPDATE eav_attribute_option
JOIN my_new_sort_order ON my_new_sort_order.option_id = eav_attribute_option.option_id
SET eav_attribute_option.sort_order = my_new_sort_order.sort_order;

If your sorting a different attribute, simple change the eav_attribute_option.attribute_id=66 to the attribute ID that you’re sorting.

If you’ve deployed your e-commerce site, you’ve probably taken the time to test for functionality. How much did you test? Testing is an ongoing task that needs to be executed by your team after each and every time you update a CMS page or line of code, anytime there is an major OS update or browser update. Have you tested your key systems?

Today, you’re not focusing on performance testing or conversion testing. We will detail a future post on how to increase the speed and performance of your website and how to increase your conversion rates.

Today, we want you to test for functionality. Nothing is more frustrating than when you’ve launched your site, spend innumerable hour marketing and not understanding why you don’t have any sales or conversions.

We recommend that we test the following area’s of your website thoroughly:

Browser Testing
Operating System Testing
Security Testing
Touch Testing
Transaction Testing
Feedback Loop Testing

Browser Testing

Since you’ve already set up your analytic you’re going to be able to know what browser your visitors are using. This will give you insight as to what browsers you need to test for. As you can see from one of our clients, our testing plan would have to include Windows Vista, Windows 7, Windows XP and the Mac OS. The remaining 14% is broken up between the iPhone, Android and Linux Operating systems.

Our testing plan includes testing for each one of these operating system. In the next graphic, you can see that we have an even more complex breakdown of browsers. The clear leader is Internet Exploder 8, but the remaining 60% of browsers are mix of everything else.

Browser Breakdown

Using this information from our analytics, we would need to test for Internet Explorer 7,8, Firefox, Chrome, Safari. If mobile is important, you would also test for Android and iPhone as well.

Operating System Testing

Once again, using your analytics your able to see what operating systems your visitors are using. Our client’s site is made up of about 70% windows based, 20% Mac OS base and the remaining 10% is made up of iPhone, Android and Linux.

Operating Systems Breakdown

This means your testing plan has to include 6 Operating Systems and a minimum of 7 browser. This gives you 42 different combinations of Browser/OS. Now in real life it’s less than that, There is certain  compatibility issues like Internet Explorer 8 Will not run on Windows Vista or The Mac OS, Linux, iPhone or Android. That being said, it’s a formidable amoun to test.

We develop on the Mac OS. We recommend getting VM Ware or Parallels and setting up testing environments for Windows XP, Windows Vista, Windows 7, Mac OS 10.5, Ubuntu or Redhat Linux and if you don’t have access to an iPhone or Android phone, use their virtual environments to test your site on each of these. Once these are set up, we recommend setting up the major browsers on each os.

Make a test plan to go through each OS/Browser combination when you’ve updated your site and test for functionality.

Security Testing

Many of you would think that we’re talking about penetration testing or SQL injection testing. We’re not. SSL on your site is one of the most important features in keeping your customers transactional information safe. Online merchants are throwing away sales with faulty SSL certificate installations that trigger browser alarms that scare the customers away before they have the chance to complete the sale.

According to Qualys, there is more than 21 million incorrect set up SSL Certificates on the web. You can use Qualys’s free SSL test to see if you’re set up correctly. If you’re not. You need to talk with your IT person to get this taken care of immediately. All of our clients score 92 or higher on their scale of 0-100. Does your site pass high security testing?

Have you set up an EV SSL Certificate? It’s a much longer process to acquire, but it’s increased conversion rates almost 10%. It’s worth the extra effort, especially on high traffic sites.

Touch Testing

Touch testing doesn’t mean you’re putting your fingers all over the website. It’s testing what you say when you communicate with the customer. Many times, you e-commerce system comes with premade email templates that communicate with your customer. Have you taken a look at each and everyone of these? Do they have your correct Telephone Number? How about Email address? Are they conveying the complete message?

Have you tested those email addresses to make sure that your customers can talk with you? Do you have auto response messages that don’t go to a working email address. Nothing is more frustrating to a customer than when they want talk with you and their email bounces. Worse yet, you’re a faceless corporation and you use a “No Reply” email address. Nothing says “I don’t care you’re my customer” like a null address.

Transaction Testing

Have you ran some test transactions? How many times? What OS/Browser have you run those test transactions on. We’ll bet that you’ve done it at least once, but you’ve not done it on multiple browsers or OS’s. Use the same setup from above and run those transactions to make sure your customer can complete the transaction and exchange money for your valuable product or service.

What Credit Cards do you take? Do you take checks? Have you tested your system for these. Most systems will allow you to set it to test mode. Use the numbers below to test your ability to take Credit Cards:

Test Credit Card Account Numbers

Credit Card Type

Credit Card Number

American Express

378282246310005

American Express

371449635398431

American Express Corporate

378734493671000

Australian BankCard

5610591081018250

Diners Club

30569309025904

Diners Club

38520000023237

Discover

6011111111111117

Discover

6011000990139424

JCB

3530111333300000

JCB

3566002020360505

MasterCard

5555555555554444

MasterCard

5105105105105100

Visa

4111111111111111

Visa

4012888888881881

Visa

4222222222222

Feedback Loop Testing

Do you solicit feedback from your customer base? Do you ask them to be your facebook friends. Do you ask them to take surveys in exchange for promotional gifts, coupons or discounts. If you do, you need to test those survey/feedback systems. Do they offer discounts? Do those discounts work?

Nothing is going to make you look bad like not testing your discounts or surveys. Make sure that these work in all browsers/os combination. Make sure they have the correct marketing message. You’ll be happier in the long run.

Make e-commerce testing part of your release cycle routine for your e-commerce system. This will prevent you from scratching your head when you have a drop in conversions on your site.

Paypal & Google Checkout are out to screw you.

Today I was reading Reddit.com while drinking my morning coffee and saw this story about some company/person who is “owed money” by Google Checkout. After doing a quick search, I found over 5,000 web sites with complaints about Google Checkout and how they owed some person an amount of money. I see these stories all the time with Google Checkout and Paypal. We’ve been doing e-commerce for about 10 years and in our experience, these “Payment Services” are  bad option for most people once they’ve started to make any significant amount of income from eCommerce transactions.

 

 

Google Checkout and Paypal have tried to set themselves apart from other alternative payment methods by being the champions for consumers. While they’re not to bad for consumers, they are a terrible option for merchants. Being the preferred payment provider for consumers, Paypal and Google Checkout end up screwing the merchant. If you have an attorney, look at their agreements, they’ll tell you that the merchant agreement is 100% one sided. You have very few rights to resolve a dispute. Merchants take on all the liability when dealing with these companies. If a customer is pissed off for ANY reason, they typically will get their money back. Much akin to the credit card companies, merchants take all the risks of taking payments using these services.

 

 

While they easily integrate with most e-commerce applications, they are typically more expensive than a traditional merchant provider in terms of the cost per transaction. Their customer service for merchants is nonexistent and in most cases, you will lose a dispute.

 

Services such as Paypal & Google Checkout have agreements in place that do not allow you to sell certain items, even though they are 100% legal. For instance, with PayPal, you man not sell “Obscene Material”. Who makes this definition, and what does that really mean? Adult novelties, porn? How about gambling advice? Nope, you can do it, even though it’s “protected” first amendment speech.  You can buy a book in the book store about how to place your bets, but if you want to subscribe to a service, you’ll have to find an alternative way to pay.

 

 

Paypal also states in their user agreement it you take payments the following:

 

 

Payments received in your PayPal account may be reversed at a later time, for example, if such a payment is subject to a Chargeback, Reversal, Claim or otherwise invalidated.

 

 

Let me translate: “Otherwise invalidated” meaning they can suspend or take money at any time for any reason and you’re SOL.

 

 

If you’re going to be serious about doing e-commerce online you should really avoid either one of these services and work with a real gateway and get your own merchant account. While evaluating providers, you should look for these features before deciding upon whom to use.

Merchant Provider Features

1. Human Support.

Google Checkout and Paypal make it VERY hard for you to actually talk to a human. They’re so greedy and non supportive to their merchants that after  taking 5% of your transaction, they make sure it’s damn near impossible to connect with someone real.

2. Toll Free Number.

This goes back to #1, but you really want  a provider that publicizes their 800 number. You want to be able to call if there is a problem.

3. Easy to Implement Web API.

You don’t want to deal with a provider that makes you jump through hoops. Their API should be clearly documented using an XML or SOAP interface to their systems. You should be able to either write a plug-in to your e-commerce system or have on readily available that doesn’t give you a headache to implement.

4. Is a Registered ISO.

This is a given. If they’re not a fully registered ISO with Visa & Mastercard, don’t use them. They could leave you holding the bag. They needs some sort of liability as well.

5. 99.9% up Time.

Do I need to say more? I’ve seen a few Gateway providers whom went down and lost 50% of their customers as a result of this. If you can’t process, you can’t get paid.

6. Provides 1 Click Product Checkout Solution.

Many of my clients sell 1 item. It’s much easier to implement a payment solution that involves clicking on one button and checking out. No need for a full blown shopping cart.

7. Provides Reoccurring Billing.

For subscription websites, this is a must. You’re not likely to be PIC compliant by storing your customer’s credit cards. However, your gateway provider is. They should provide a flexible solution for month to month billing.

8. Not Just Web Support.

My biggest pet peeve is when I can’t get support by someone whom has a fine understanding of my problem. Google Checkout and Paypal send your customer service overseas. I don’t personally have a problem with this, but there is a HUGE culture gap between people of different countries. Make sure your gateway provider has support centers in the the country that you are located in.

9. Agents that will Facilitate in Solving Your Problem (Your Account Rep)

If you can’t get something resolved, don’t you want someone to yell at whom will get your problem resolved? I though so. Work with a company that actually employs agents. Agents get a very tiny fraction of the merchant processing fees. However, they don’t want to loose access to your account. Have an agent to do your bidding.

 

 

While not every gateway provider is reputable, there are many that are much better than Paypal & Google Checkout. We’ve dealt with these problems for 10 years. We’ve been able to provide merchant accounts online for low risk merchants to very high risk merchant accounts. These services will work fine for you if you’re doing a low volume of transactions. However, if you start to process any significant amount of credit cards, you should look at other options.


Contact us if you have any questions.

One of our products of choice is the Magento platform for eCommerce development. Recently they’ve announced an application for mCommerce. They’re touting it as the newest hip application for the iPhone and the iPad. Let them manage your store and you’ll be rich!

Magento Mobile Commerce

Yawn. Ok, I’ve said it. They’re touting this as a revolutionary way to promote your brand as a native store front. I’m calling BS. This is not revolutionary… it’s a step backwards in development. Maybe a future version might be better, but we’ll have to wait to see.

I’m not a typical technology user. Using Rodger’s Bell Curve of the Diffusion of Innovations, I’m right there in the early adopter/innovator portion.

Diffusion Of Innovation

I have an iPhone and an iPad. I refuse to put applications on them that do not offer something that has a useful function; a game, a productive application, or a reading program (I absolutely LOVE the Kindle app). I’m not hyper loyal to places that I shop online. I’m always looking for the best deal I can find for the products I need. Does anyone really think that I’m going to want to browse through 52 different apps to find the best price on a product? I think not.

Do you really think that I’m going to put 52 different “Mobile Shopping” apps on my device so that I can shop at company A or B? Really? Even though I purchased the largest iPad that Apple offered, I’m not going to waste space with apps from the Gap and Wally World. This is NOT going to happen. Is this type of mobile shopping experience better than shopping with Safari?

Varien is somewhat of an open source provider. I personally don’t really care for their model, but they have produced a very nice platform for eCommerce. They keep very tight controls on the community edition of the software (community means Varien, not outside developers). They’ve started to accept changes to the code base, but as of yet, I’m pretty sure they haven’t released it to the generally community. Their driving the direction of their “revolutionary” application without input or feedback from the OSS community that has made their product what it is today.

Even if Varien opens up the Mobile Software to it’s very large base of installers and developers, I still stand by that people are not going to want to download hundreds of apps to shop from their mobile device. They’re going to want a richer experience with HTML5 and access to millions of shops that Safari can offer versus the tiny cookie cutter niche app that this type of mobile shopping app represents. Again, we absolutely love their main Magento platform for eCommerce development…it’s one of the best and most complete solutions available today in the open source community, but we have doubts about their mobile solution. Perhaps time will tell…

What do you think?

Recently I had to create some custom code for a client to integrate Google’s Affiliate program into the checkout Process. I was surprised to find there wasn’t an explanation on how to do this easily. After a lengthy search on Magento’s community board with no avail.

Google asks you to render an image file with the following code:

<img class='PxgGlobalImage'  src="https://clickserve.cc-dt.com/link/order?vid=[Vendor ID] &oid=[Unique Order ID]&amt=[Sub-Total Amount] &prdsku=[Product 1 ID^Product 2 ID^Product 3 ID] &prdnm=[Product 1 Name^Product 2 Name^Product 3 Name] &prdqn=[Product 1 Quantity^Product 2 Quantity^Product 3 Quantity] &prdpr=[Product 1 Price^Product 2 Price^Product 3 Price] &prcatid=[Product 1 Category ID^Product 2 Category ID^Product 3 Category ID]" alt="" width="1" height="1" />

Here is the steps to implement this on your site.

Open up app/design/frontend/default/theme_name/template/checkout/success.phtml
Cut and Past the following code into the bottom of the page:

<!--Start Google Affiliate Integration-->

<?php
$lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId();
$order = Mage::getSingleton('sales/order');
$order->load($lastOrderId);

$order = Mage::getModel('sales/order')->load($lastOrderId);
foreach ($order->getAllItems() as $item) {
        $productArray[] = array(
                "product_sku" => $item->getSku(),
                "product_magento_id" => $item->getProductId(),
                "product_name" => $item->getName(),
                "product_qty" => $item->getQtyOrdered(),
                "product_price" => $item->getPrice(),
                "product_discount_amount" => $item->getDiscountAmount(),
                "product_row_price" => $item->getPrice() - $item->getDiscountAmount(),
                 );

        };
?>

<?php
$_totalData = $order->getData();

$_subtotal = $_totalData['subtotal'];

$_orderID = $_totalData['increment_id'];

?>

<img class='PxgGlobalImage'  src="https://clickserve.cc-dt.com/link/
order?vid=KVENDORID&oid=<?php echo "$_orderID"; ?>&amt=<?php echo "$_subtotal"?>&prdsku=<?php foreach ($productArray as $key) {echo $key['product_sku']."^";};
?>&prdnm=<?php foreach ($productArray as $key) {echo $key['product_name']."^";};
?>&prdqn=<?php foreach ($productArray as $key) {echo $key['product_qty']."^";};
?>&prdpr=<?php foreach ($productArray as $key) {echo $key['product_price']."^";};
?>&prcatid=<?php foreach ($productArray as $key) {echo "your-product^";};
?>" width=1 height=1>

<!--End Google Affiliate Integration-->

Save the file to your server and Voilà, you’ve implemented the Tracking Code.

It’s a hack, so if you know a better way, please share in the comments. I still need to work to add code to properly add child categories where “Default_Category” is being placed in the pixel tracking.