Sep 6, 2013

Magento Catalog Page Load Optimization

Magento Site Issue:

Our client had complained of slow site speed for a few months. The long load times were significant enough to warrant concern that valuable sales were being lost.

It was clear the issue lie in lengthy queries to the database, specifically when loading category pages. We were in agreement with the host (another Magento Silver partner) that installing a robust caching application would merely be throwing money at a band-aid and not a full-fledged solution.

Discovery:

We began by investigating which particular database calls were taking the longest, and found a problem in the getFinalPrice function on the catalog page.

It seems that in order to get the price to display on category pages, Magento loads every simple product associated with a configurable product. For checkout and billing, this is necessary, but when displaying a simple price, it’s completely overkill.

The category pages in question were filled with configurable products, most having over 100 associated simple products. This meant that even loading as few as 9 products on a page made over 1,000 database calls. This caused a far too lengthy load time.

In our client’s case it took over 12 seconds to load one of their most popular categories.

Magento Website Speed Test

Magento Solution:

We commented out the database calls within the getFinalPrice function, which gave us an immediate improvement on page load time.

There were still a few kinks to work out in this solution, however.

We discovered that this code was responsible for loading super product attribute pricing. Disabling this code meant disabling the ability to upcharge based on configurable product attributes.

Also, simply commenting out this line of code would be a modification to the Magento core code.

In resolution, our Magento Certified Developer created a module that creates a new, optimized version of getFinalPrice called getFinalBasicPrice for configurable products. It also updates the price.phtml used on the catalog list pages to use the new call.

This module lives outside the Magento core code, and also allows the site to retain  the function of super product attribute pricing.

Results:

We were able to push this new module to the client’s site, and immediately saw a 75% decrease in category page load time

Magento Catalog speed improved

Magento Conversion Rate Improved

 

For an immediate result, the day after their site enjoyed a 43.97% increase in their eCommerce conversion rate.



Jul 15, 2013

Facebook Posting from a client: Lifesavers! You guys absolutely ROCK.

FYI, this is a little bit of Facebook praise for the Customer Paradigm team and our ability to solve Magento programming problems quickly:

Lifesavers! You guys absolutely ROCK. .

Customer`s Comments on the Magento Developer Project: Lifesavers! You guys absolutely ROCK.
Thank you so much for being there for us!
Great team, delivered ahead of schedule, impeccable communication and (WOW) reasonable.

 

 

Jun 19, 2013

Magento Custom Reporting Saves Time, Money for Clients

Mini-Case Study: Magento Custom Reporting


At Customer Paradigm, our interests don’t stop at our customers’ satisfaction—they carry over to our customers’ customers, and their customers, too.

Mark Laufhutte of Solutions313 came to Customer Paradigm a couple of months ago for help on a Magento internal inventory management website for his client, a major Las Vegas hotel resort and casino.

Continue reading →

Apr 17, 2013

Magento Programming: Adding a “Home” link to the top menu (Magento Way)

So, in this article I’ll give you a handy script to add a home link to the top menu.

In magento 1.7, the menu is now created via an *event* (page_block_html_topmenu_gethtml_before)

The catalog observer hooks into this and adds menu items as Varien_Data_Tree_Node objects.

I have some samples here to show you how to add a link at the beginning of this menu.

config.xml portion:


Copy The Code:


===============================
<pre>
<config>
….
<frontend>
<events>
<page_block_html_topmenu_gethtml_before>
<observers>
<catalog_add_topmenu_items>
<class>cp_layout/observer</class>
<method>addTopMenuItems</method>
</catalog_add_topmenu_items>
</observers>
</page_block_html_topmenu_gethtml_before>
</events>
</frontend>
</config>

</pre>

observer portion:
=================================
<pre>
<?php
Class Cp_Layout_Model_Observer
{
/**
* Adds additional links to the top menu
*
* @param Varien_Event_Observer $observer
*/
public function addTopMenuItems(Varien_Event_Observer $observer)
{
$nodeId = “home”;
$menu = $observer->getMenu();
$tree = $observer->getMenu()->getTree();

$data = array(
“name” => “Home”,
“id” => $nodeId,
“url” => Mage::getBaseUrl(),
“is_active” => Mage::getSingleton(‘cms/page’)->getIdentifier() == ‘home’ && Mage::app()->getFrontController()->getRequest()->getRouteName() == ‘cms’
);
$homeNode = new Varien_Data_Tree_Node($data, ‘id’, $tree, $menu);
$this->_prependNode($homeNode, $menu);

}

protected function _prependNode($node, $menu)
{
$menu->addChild($node);
$nodeId = $node->getId();
$readded = array();
foreach($menu->getChildren()->getNodes() as $n)
{
if ($n->getId() != $nodeId)
{
$readded[] = $n;
$menu->getChildren()->delete($n);
}
}
foreach($readded as $r)
{
$menu->getChildren()->add($r);
}
}
}
</pre>


Feb 1, 2013

USPS Shipping Quotes Patch for ALL Magento Sites – Community and Enterprise

A quick note:

If you’re having trouble with USPS shipping quotes on your Magento site, there’s a reason why:

The United States Postal Service just changed their system (effective today), and it changes the way that USPS works with Magento. Beyond the API changes, they also renamed: • Parcel Post is now renamed to “Standard Post.” • First-Class Mail International Parcel has been renamed “First-Class Package International Service.”

There are patches available for Magento Enterprise Edition, as well as Magento Community.

If you’re using USPS as a shipping method or shipping quote on your Website, and you’re having trouble with USPS shipping rates on Magento, it’s likely because you need to apply the patch.

Let us know if you need assistance with this – our team of Certified Magento Developers is here to help get your site back up and running quickly. Call 303.473.4400 or visit here to have someone contact you now. This is something we can take care of quickly for you.

Oct 30, 2012

Impact of Holiday eCommerce Shopping – MAGENTO

Is Your Website Ready For Sales?

Magento eCommerce Website SalesI’m not talking about any sales, I’m talking about holiday sales. Shoppers that are price-sensitive, impatient and quick to click to your nearest competition to get their holiday shopping done.

The holiday season is upon us and committing to the final changes to your website now can make all the difference for your sales and conversion rates.

Having the right Magento Developers can determine the success or failure of your site.

At Customer Paradigm we are Magento Certified Developers. We work hard to meet your eCommerce goals, communicate clearly with prompt project management and deliver to exceed your expectations.

 

Importance of Holiday Sales

Sometimes, words just don’t do the job. Here are some great info-graphics and statistics on holiday eCommerce consumption behaviors.

 

Magento eCommerce Development for Holidays

Revenue in the Holiday Season

  • The Holiday Season accounts for 41% of total annual revenue
  • The average conversion rate increases by 108% in December
  • It is projected that US Retail web sales will increase by about 17% this year in comparison to last years online shopping trends

 

How to Make Them Purchase

Are you asking the right questions?

  • How can I change my website to increase my conversion rate?
  • What can we offer that will make shoppers purchase with me over Amazon where they already have an account?
  • What matters to the consumer?

If you can understand what drives consumer sales, you will have a more profitable holiday season and overall profitable year. Adapting these strategies can make all the difference, start updating your Magento website today to convert for sales tomorrow!

 

Is Your Website Accessible?

With the variety of tablets, smart phones, computers with different browsers, is your site accessible and functional?

eCommerce SalesAccording to Invesp.com:

  • Shoppers via Tablets have an average sale of $110
  • Shoppers via Computers have an average sale of $95
  • Shoppers via Smartphones have an average sale of $70

What are Shoppers Doing Online?

If your store is getting a lot of visitors but the conversion rate is low, my first thought as a marketer is to understand the consumer. Get in their mindset. What are they doing online? What are they looking for? What matters to THEM?

 

Consumer Magento Online Shopping HabitsAttributes of Online Shoppers:

  • Price Sensitive – 79% of users are viewing your website to compare prices
  • Deals – 73% are looking for what you offer in deals and promotions
  • Information – 67% are reading reviews about the product
  • Substitutes – 60% are comparing specs of one model to a close substitute
  • Customer Service – 37% are trying to get in contact with you

Know & Act

The first step is understanding your consumer and what they are doing on your website, the next step is acting to satisfy their concerns while keeping them on your site.

 

 Know: Price Sensitive >> Provide Perks that Diminish Price-Sensitivity

  • Free Shipping - Influences holiday purchases by 55%
  • Payment Plans – Having multiple methods of payment plans affects purchase intent by 8%. A potential customer will be hesitant to purchase from you if they have to create a new account or your check-out process is comprised of too many steps.

Know: Deals >> Give Them Discounts, Coupons, and Incentives!

  • Daily Deals – Having daily deals increases the urgency of the purchase, making users feel if they pass up the opportunity today the price may never come back. 1 in every 4 holiday consumers purchases a daily deal.
  • Coupons – Coupons offer discounts or rewards which are an incentive to the consumer to purchase with you over not receiving any discount. Many shoppers will associate a discount as more value even if the end price is higher than a competitor.

Know: Information >> Tell Them What The Product Is

  • Descriptions – Write captivating descriptions which describe the product fulfilling every specification they will need to know. This is very important for electronic devices, the more information you provide the less a shopper will research on other sites.
  • Reviews – Get in a habit of sending automatic e-mails a few months after the purchase of an item to accrue reviews on your website. Reviews are one of the most influential factors for the final decision on whether or not to purchase.

Know: Substitutes >> Internalize the Process

  • Compare Products – Add a compare products option to your eCommerce site. If a user is debating between two camera models, allow them to perform a side by side comparison on your site rather than getting distracted and looking for alternatives on competitors eCommerce sites.

Know: Customer Service >> Be Prompt, Be Thorough

  • Above and Beyond – Remember it is much easier to retain a customer than to attain one. With this in mind, be prompt to answer requests, be thorough so it is not addressed again, and go above and beyond to ensure that they are satisfied with your services.

 

You Know, You Understand, How Will You Act?

After understanding what the consumer is going through, what they are looking for, is your website ready for Holiday eCommerce Shopping? Are you set-up to provide what consumers are looking for and keep them on your site, engaged, and purchasing?

If you are in need of Magento eCommerce development contact Customer Paradigm now at 303.473.4400 to talk to a real person about your business strategy. If your website is in need of internet marketing to create incentives and deals for your shoppers, talk to our SEO team and see how we can work to increase your conversion rates.

Oct 15, 2012

Easy Fix for Chrome Magento Admin Login

If you are having issues logging into your Magento admin panel while using the Chrome browser then this is the PERFECT solution for you. I have read through many solutions and have found people recommending very long fixes. One blog said that I needed to downgrade my Magento platform… um, don’t do this. Needless to say, here is the solution.

First thing to do when breaking down an issue, where is the discrepancy? Because, if you are able to login to Magento through another browser such as Firefox and are having issues with Chrome, then the issue is Chrome not Magento.

problems logging into magento through Chrome browser

Problem: Chrome Unable to Login to Magento Admin Panel

Once attempting to login the system seems to be redirecting back to itself.

Issue: Cookie Settings in Chrome

Chrome likes stable sessions and its opinion is that a cookie’s which only last for only 3600 seconds (Magento’s default cookie session duration) is not alive long enough to be stable.

Fix: Set your cookie lifetime higher than the default

If you are unable to login through Chrome, login through a different internet browser to change the settings in your Magento admin panel. To set your cookie lifetime higher than the default go to: System >> Configuration >> Web >> Session Cookie Management.

Magento System Configuration Settings

 Magento Configuration Web for Cookie settingsWeb cookies for magento

Set your cookies to ’33600′ which is roughly 9 hours or some amount higher than ’3600′.

It is important to make sure that the proper cookie domain is set, Chrome, being a standard neurotic browser, doesn’t like it when cookies can’t be validated/traced to their domain.

Voila! You should be able to login to your Magento admin panel through Chrome. Let me know how it works, or if you run into any other issues.

Sep 24, 2012

Social Media Value of Profitable Customers on Magento

Which Social Media RouteIf you keep hearing that your website needs social media plugins, then the next question is, “which ones?” With so many social media channels it is difficult to know if you need to be on all of them or just the big ones? And, most importantly what does this plugin tell me where Google Analytics fails to cover? We will go over all these questions and the solution I have found so far.

Value of Social Sharing on Magento

Being a social media enthusiast I believe that people aren’t solely on their personal profiles to watch their personal profiles grow, but they are truly there to see what is going on involving their interests and friends. Saying this, I believe the biggest mistake any business owner makes is disregarding the influence of social sharing simply because they do not understand the relation to their store and more importantly conversions. I hope that after reading this article you will re-consider your business approach to social sharing and profitability.

First, the most important reason for sharing, is that the recommendation of friends in your network tilt the tables drastically on whether or not you are more inclined to buy the product. According to Ragan.com 75% of people don’t believe that ads tell the truth about their products and around 70 percent of people are more likely to buy a product if a friend has referred it to them. Unless your product is so revolutionary or perfectly fits the need of an individual it is rare that a user will work to post your product. But, if you make it a simple push of a button, it is much more likely your product will be shared.

Make It Easy For Users to Share Your Content With Social Plug-Ins

The second reason, with every individual who is engaged with your product whether sharing, liking or even referring, your product is able to be viewed by their entire social network. Talk about a pyramid of influence!

Think of Shares As Conversions for Media Reach

 

How Google Analytics Tracks Social Media

Google Analytics offers you the full flexibility to view your engagement through social media channels.

Social Media Engagement Google

From this graph I am able to see how many visits I have received via a Social Media channel. I am also able to see a deeper breakdown of how many clicks are coming from what specific channels. This is a great way to discover which channels are driving the most traffic to your website.

You are also able to view the amount of conversions that come from social sharing, and the conversion value if your Google Conversion Tracking is set up correctly. This allows you to see the dollar amount in sales you have made directly from a user entering through a social media channel. This is very useful information if you are running a social media campaign and want to prove the profitability to a business.

If you are interested in learning more about setting up conversion tracking for your eCommerce store, pick up the phone and call Customer Paradigm today at 303.473.4400 to talk to a real person today.

 

How AddShoppers for Magento Tracks Social Media

 Add Shoppers is my favorite Social Media Tracking Extension for Magento.

Here is why, Add Shoppers takes basic information and gives you the pieces that really matter. It is great to have a large Facebook group and Twitter followers, but what if you were able to scale down

Social Media Incentives

the mass of your Facebook followers and find the top 10 most profitable customers?

Once you have found those top 10 customers, what if you could market directly to them knowing they are more likely to share and recommend? What if you knew they would be fifty-percent more likely to convert? Would that be worth targeting?

With AddShoppers Magento Extension this information becomes readily available to you. With ROI tracking that is profitable for your business model I have yet to find another extension which gives you the same level of detail.

Three levels to track Social Media ROI on:

  • Single product level or SKU
  • Influencer level of a single customers
  • Store wide level

Not only are you now able to see how people are getting to your site, but you are able to view the other side how your products are being shared. You can now view a specific product and see how it has been shared via the social media streams. You can feature your most Pinned products or shared products on your screen. With this Conversion tracking you are able to view which social networks drive sales per product.

My favorite addition which shows to me that AddShoppers really understands the influence of Social Media on Magento eCommerce is their pre-purchase rewards application. This application gives shoppers and incentive to join your social channels by offering small incentives such as 2% of your next purchase. You have the ability to set different rewards based on different channels, through this users gain an incentive to join all of your social channels.

This can be a hard concept for many business owners to get behind because it seems like you are throwing away money to get one more like on your Facebook page, or one more Twitter follower. In reality, you are essentially paying for a targeted customer base. People that have an intent to buy will like your page in order to receive 2% off.

 

I hope I have cleared some confusion about the importance of having social media channels on your Magento website. I am so happy that I have found AddShoppers, if you are interested in getting this extension for your Magento eCommerce site call Customer Paradigm today at 303.473.4400 to talk about how you can add more shoppers to your social media streams! Or fill out the contact form below!

 

Sep 7, 2012

Magento Bug with Versions 1.5 and Above – SOAP Shipments API

We’ve recently discovered a bug with magneto version > 1.5.0.0.

Magento’s native SOAP api exposes most of the core entity types (customers, orders, shipments, products, categories, etc).

However, it looks like the Api code wasn’t updated to ensure compatibility with other parts of the core code.

Specifically, we’ve learned that an update to the Mage_Sales_Model_Resource_Collection_Abstract breaks part of the SOAP Shipments API:

Magento Bug Report - API Definition

Magento Bug Report - API Definition

 The problem lies in the definition of the function joinAttribute inside the aforementioned class. You can see from the screen shot that there is an @todo implement join functionality if necessary—however for now, this method does absolutely nothing!

 You will also notice that the magento core team now deems this a “deprecated method.” However, they themselves reference this method in the shipments module. References to this function can be found in:

  • Mage_Sales_Block_Order_Recent
  • Mage_Sales_Model_Order_Shipments_Api

 

Magento Bug Report - Implementation

Magento Bug Report - Implementation

 

Obviously any place where this method is used will NOT return the desired result—-which can cause major problems for installations that have a 3rd party warehouse or inventory system that requires these api methods work correctly.

 

My suggested fix is to replace the joinAttribute calls with ->getSelect()->join calls (you can see info about Zend’s db layer at: http://zendgeek.blogspot.com/2009/07/zend-framework-sql-joins-examples.html)

* Please make sure you either write a module or do a local override in app/code/local if you need to do this!

 

Sep 4, 2012

Magento Retailers Represent With Google Trusted Store Badge

Google Trusted Badge Magento Stores

Get the Google Trusted Store Badge

Magento is now a proudly offering the Google Trusted Store Badge. With Google’s great reputation of advancing the internet, there is a trust associated with their brand. As they continue to increase users experience with every click across the internet, we now see a visible rating for quality.

There are not many forms in which Google rates websites. At least not visible to the common public. We do see the ratings on Google local pages, but that is a reflection of user ratings.

Features of the Google Trusted Store Badge?

 The Trusted Store Badge works as a “report card” of how well your eCommerce store performs. In order to earn the badge your site must exhibit fast, reliable and responsive customer service. Once your website has been approved, you will receive a grade. The badge will hover in a fixed position at the bottom right of your screen so it is visible during the entire shopping experience on your eStore. Upon hovering over the badge the grade will show. Below is a screenshot of the hover view from http://www.dickblick.com an art supply eCommerce store.

Google eCommerce Trusted Badge

http://www.dickblick.com

Benefits & Drawbacks of Google Trusted Store Badge

Potential Benefits

Google has many case studies which support the benefits of having the badge >> View Here

  • Increase in average order size
  • Increase in conversion rate
  • Ability to show an essential rating system on your page
  • Badge show up in Adword ads

Potential Drawbacks

  • Forums have revealed an abundant concern for privacy, the code requires that the shipping address of every customer is revealed to Google.

Get the Google Trusted Store Badge

There are many resources for installing the badge onto your eCommerce store. Many people are coming across bugs trying to replicate the codes. My best advice is follow the steps that Google has put in place.

If you use Magento >> Get the Badge Here

Through Google >> Get the Badge Here

 

eCommerce Platforms for Google Trusted Store Badge

Although you are able to receive the badge through any eCommerce store, this is where people are coming across bugs trying to replicate the code for their own eCommerce platforms. Currently Google has easily integrated this feature with the three following eCommerce sites:

If your current eCommerce store does not have the full functionality you are looking for, consider migrating your eCommerce site to Magento. Magento is a eCommerce platform that was designed with eCommerce in mind and is tailored to maximize sales and usability.

 

Aug 14, 2012

Magento – How to Move A Website to a New Server

How to move your website to a new server

Want to see a magic trick? Server to Server in 10 minutes!

I’d love to write a really long blog about how this is going to happen, but that would defeat the purpose of getting your website moved from an old server to a new server in 10 minutes. Here are the steps, if you have any questions please feel free to call us at 303.473.4400 or fill out a contact form with your question.

Step 1: Login to the old server (server you are moving from) with SSH

 

Step 2: Move the file tree via a tar SSH pipe

  • tar zcf – app lib includes .htaccess index downloader cron.php cron.sh js LICENSE.html media shell skin var

    or

  • | ssh username@domain.com ‘(cd your_directory && tar xzf -)’

    - To those familiar with the “tar” command this will look very familiar

    - To those less familiar with the tar command, essentially we are gzipping files from the old server to the new server over an SSH connection. The “-” in the tar commands correspond to STDIN and STDOUT.

     

 Step 3: Move the Database

    • mysqldump -u username1 -pPassword1 database1 | ssh username@domain.com ‘mysql -u username2 -pPassword2 database2′

- Once again, we are just piping a mysqldump from server to server (via STDOUT and STDIN) the “|” operator connecting the 2

 

Step 4: Update database creds in app/etc/local.xml

 

Step 5: Change base URL’s:

      My SQL:
      • UPDATE core_config_data SET value = “your_new_unsecure_url” WHERE config_id = 3;
      • UPDATE core_config_data SET value = “your_new_secure_url” WHERE config_id = 4;
Server Transfer of Magento Completed

 

Aug 6, 2012

Faster Page Loading with Magento

Increase to Faster Page Loading with Magento Varnish

Of course you want faster page loading…
Why? Because,

  • Faster Page Loading >> Increase in Conversions
  • Faster Page Loading >> Decreased rate of Abandonment from your website
  • Faster Page Loading >> Decreases time for viewers to get distracted while on your website
  • Faster Page Loading >> Increases your Google SEO value

 

Good Solution: Faster Page Loading with Full Page Caching for Magento

With Magento Enterprise, one of the perks of paying $14,400 a year is you receive full page caching which will result in site load times of around 3-5 seconds. A full page caching system occurs when you have visited a website before, and the server basically takes a screenshot of the webpage and reproduces it upon request. This decreases the load time and produces the page back to the user within 3-5 seconds. The only issues with full page caching is that it requires MySQL and PHP to load for every page each time it is requested.

 

Best Solution: Faster Page Loading with Varnish for Magento

Full Page Caching is a great way to speed up your site, but what if you are trying to achieve the optimal site load speed? According to Google research every 0.1 second improvement in site load speed there is a 1% increase in sales. If you are wanting to achieve a 1 second decrease in page load, down to page loads at 2 seconds or even 1 second, Varnish for Magento is your best solution.  

Varnish graph for Magento

At Customer Paradigm we highly recommend for the best optimization that you install Varnish in addition to Full Page Caching to increase your site page load time. They compliment each other to achieve the fastest page load times. To explain the diagram above, the solid lines represent the path of requests your computer goes through when your page is already cached. The additional dotted line represents an extra request that occurs if you do not have caching. As for varnish, the html of static entities such as images or texts are loaded from cache, then Ajax sends a request for the dynamic parts such as “Recent Articles” for that category page or dynamic sidebar filters. Finally, JSON responds with how the dynamic information is to be structured as a JSON array.

Basically, when you install Varnish and a server has produced the request to anyone, the server is able to step in before php kicks in and reproduce the requested page. This decreases a large step in the database, substantially decreasing the page load time.

When a website does not have Varnish or Full Page Caching the server goes through a long process. Each time the server received a request for a page such as /about.html there is a communication with the database to reproduce the html for that page, instead of reserving the page with Varnish directly from a past request.

Comparing Page Loads for Site Speed

Magento Varnish: Benefits & Drawbacks

Increase page load speed with Magento Varnish

Drawbacks: Let’s start with the bad news first

The only drawbacks are when you make updates to your site you have to clear the cache when adding new content or changing things on a page, such as making changes to a post on your WordPress blog. For example, when you create a post and then you realize you have misspelled something, and you go in and edit your WordPress, the change will not show until you have cleared the cache for your site. This occurs with varnish because you have been served the blog page already, and the server will re-serve the same page upon request.

Benefits: The Bottom Line

In this case, the benefits far outweigh the drawbacks. Installing varnish on an eCommerce site is a no-brainer decision.

  • Increase in Conversion - A faster page load time increases the potential for conversions, which directly contributes to your bottom line of profits. If for every .1 second decrease in load time, there is a 2% increase in conversions, where is the loss?
Page Load and Conversions
  • Varnish is a one time set-up - Many applications or extensions require updates with the development of the eCommerce software, not with Varnish. It is a one time installation, that will last for the life of your website.
  • Google Increase in SEO Value - Google has determined that site load time affects your ranking, Google’s end goal is to provide the best user experience to the end user. If your site is the best for shoes, but it takes 8 seconds to load your page this will directly affect your ranking for keywords associated with shoes. Decrease page load time >> Increase SEO value.
  • Better User Experience – We’ve all done it, you click on a website and watch the loading icon spin and spin, eventually we all click back to the Google search and find a page that loads before we have time to move our cursor. Decrease page load time >> Decrease bounce rate from your page.

If you are interested in installing Full Page Caching or Varnish on your website for optimal speed, conversion rates, SEO value and site traffic contact Customer Paradigm now at 303.473.4400 to talk to a real person today or fill out the contact form below.

 

Aug 3, 2012

Gary Fong e-Store Up and Running

 

Poor Magento Customer Service

Gary Fong like many Magento customers received the dreaded screen when your Magento site is down. You type in your url, and ERROR is across the screen. Scrambling to find customer service from Magento to get your site back up and running is always a daunting task. You think after paying for an Enterprise Magento site which comes at no small cost of $14,000 a year, there would be efficient customer service, wrong. Understandably with frustration, Gary Fong began to search for any service to get his site up and running after all it’s like locking your business door and staring through the glass at customers trying to view your products.

The frustration is strewn out across his twitter feed: @garyfong_REAL

 

Call Customer Paradigm for Magento Customer Service

 

Solution: Fill out a Contact Form with Customer Paradigm

for Immediate Magento Support

Not only at Customer Paradigm do we have easy contact forms when you are in need, we also have a phone number directly on the page. I am surprised with the urgency that he needed to get his site back up and running, he didn’t pick up the phone and call us right away at 303.473.4400. We are very responsive to our contact forms, and within minutes of receiving his urgent need his site was back up, his doors for business open and ready for customers.

Customer Paradigm fixes Gary Fong's Magento Site

 

Jul 31, 2012

The Right Questions to Ask When Considering an eCommerce Solution

Questions before choosing an eCommerce Solution

In the world of eCommerce solutions there are many questions to consider for each platform, but the bigger question is, “What are the RIGHT questions I should be asking?” Asking the right questions is a more profitable route rather than narrowing your mind to only one platform and morphing your needs to fit their limitations.

It used to be an expensive task to develop an eCommerce site, there were so many questions, complications and limitations. But times have changed, and now we are walking down the grocery aisle of choices, where brand after brand is shouting out to catch your eyes. When all you want to know is, “which eCommerce solution fits my needs?”

There is no one correct eCommerce platform, each one exists to fill different needs. Some businesses are fine with a low volume, low security eCommerce platform, while others are needing a solution which can handle thousands of products with an infinite number of possible attributes. For example, if you are a business which primarily deals with blogging information, and you sell a few branded T-shirts or tickets then a simple eCommerce WordPress plugin may do the trick. Read more about WordPress eCommerce Plugins vs. Magento.

 

The RIGHT questions to be asking:

Asking the Right questions for eCommerce Solutions

1. Can your products/services be translated into sales over the internet?

If you are a B2C business and are selling electronics, your business is set up to easily translate your products into an eCommerce platform. Each product listing can display the attributes of memory space, processor speeds, graphics rendering, weight, monitor size and resolution. Of course, I am a fan of sleek filters to help the consumer find exactly what they want in the time they have. A filter will narrow down the various attributes (brands, prices, product attributes.. etc.) and display the products that exist within the selected filter.

If your organization is a B2B model and you are selling services such as corporate legal services or consultations this service is not easily translated for an eCommerce solution. The reason that legal services is not a tangible good to sell across the internet is because each product would vary greatly based on the case type. If you were to make legal services compatible for a product listing on an eCommerce site you would have to set a fixed price for each “type” of case. For example a corporate contract law case would be $15,000. This is obviously not a smart choice for legal services.

Do not take this to be the case for every B2B or B2C model. Whether or not your business is suitable for an eCommerce solution is based on the fact that your product/service can be translated into sales over the internet. Some B2C models are filled with products that do not translate easily into sales. Also, some B2B models are products that can easily be translated into sales over the internet such as wholesale outlets who provide products to other businesses.

Pause. If your business products do translate easily into sales over the internet than continue to read. If your business model does NOT translate into sales, then I would encourage you to invest in SEO for your website to increase site traffic, and organic Google rankings for your industry. Read more here for a deeper understanding on >> what SEO is.

 

2. How much product control do you want?

Product Control for your eCommerce Solution

Your initial reaction is, I want as much control as possible, but with the simplicity to get it all done. If I’ve learned one thing, I may be great at things, but I’m not great at everything, and when it comes to making money let’s get it right. My methodology is what features will make my eCommerce solution the best for the end user (my customers)? If there are features and options I wish to offer such as a mothers day discount, or a cyber Monday sale and make a site-wide discount but I just can’t get it done, hiring a knowledgeable and experienced eCommerce programmer can make all the difference.

If you wish to control the price structure for each of your products, then an eCommerce solution is ideal for you. Price structure control would be offering a 10% discount if you spend over $50 which you can create rules for or purchasing 4 products and receiving a 5th for free. It all sounds easy, because these are common sales tactics, but making them happen on your eCommerce platform is more difficult than a simple check box. One eCommerce platform that I highly recommend is the Magento platform. I particularly like this platform, yes because it is one of the most favorable eCommerce solutions, but favorites are favorites for a reason. They are extremely secure which matters the most when processing orders, there’s nothing worse than a customer coming to you saying their credit card information got leaked after a purchase on your website. They also offer endless functionality and customization for product attributes and categories.

 

3. Do it Myself or Hire an eCommerce Development Service?

Customer Paradigm eCommerce Solutions

This can be a tricky question. If you have the knowledge and are tech savvy then developing your own eCommerce site with the occasional consultation from a professional eCommerce company could be the perfect route for you.

If you want to hire an eCommerce Development Service to make sure that your site is set up properly with a clean navigation, optimized product tags, seamless checkout process and customer support then hiring a service may be the perfect route for you. It all comes down to the functionality of your site, and your ability to make that functionality happen.

At Customer Paradigm we make sure that your platform is upgraded correctly, and perform testing to maintain the full functionality of your site. We provide you with a direct line to always contact your project manager. Most importantly, we take the time to understand your business and what you wish to offer to your customers.

If you are in need of an eCommerce Solution please call us now at 303.473.4400 to talk to a real person or fill out the contact form at the bottom of the screen.

 

Jul 25, 2012

Magento USPS Shipping options: Working with First Class Shipping Rates

Magento Shipping First Class Mail

If you are not seeing the USPS shipping option for “First-Class Mail International Package” on your Magento Shipping options, this would be due to the new First-Class rates taking effect.

First Class Mail Package has been changed to First Class Mail Parcel in the Shipping Options.

 A parcel is considered anything that weighs under 13 oz. when a product is loaded into a shopping cart and the weight associated with that item is 13 oz. you would intuitively like your Magento check-out to select the proper shipping size that will be able to handle the weight. For example, if you were to order a computer and it weighed 8 lbs. you would ideally like the user to select for shipping methods: USPS First Class, Standard Shipping, Next Day or whatever your shipping methods are. Then your shopping cart would automatically select the parcel size subcategory.

To make this happen on the back end of your Magento site go to: System –> Configuration –> Shipping Method (under the Sales category) and you will see the “Allowed Methods” under the UPS tab.

How to Make this Happen:

The best way to make this happen is if you want to ship “First-Class” to select all the First-Class methods that pertain to the products you have. For our site we selected all the first-class methods because we have items that can be shipped efficiently in each of these categories. You would continue this methodology for all categories of shipping.

 

First Class Mail Shipping

 

If your site is in need of Magento Development, call us now at 303.473.4400 or fill out the contact form below.

 

Jul 20, 2012

Magento Site Launched: Evologie

 

Evologie Logo

Dr. Robert Nagel a respected endontist created Evologie when finding a  solution for his daughters monthly blemishes and breakouts. He consulted with many medical physicians and tested his product with many scientists studying acne. As he consulted with many medical physicians it became more apparent that there is a great need for an acne solution that does not temporarily fix blemishes, but rather heals and protects the skin.

 

Evologie came to Customer Paradigm with a complete set of PSDs outlining every detail of their new Magento site. . We knew that we could make the designs come to life, after viewing their products and hearing their business goals it was an easy decision to go with a Magento eCommerce platform.

Here’s How we Made it Happen on Magento

 

  • Themed the Magento Community site in accordance with their Photoshop document designs and Excel guides and created a custom WordPress Blog to match!

Magento eCommerce Evologie Homepage

 

  • Social Media PluginsEvologie Share Buttons
  • For the standard Facebook Like button there appears a count indicating the amount of people
    that have liked the page, we modified this Facebook extension so that the “Like” button becomes a clean button with no added on numbers when signed in.
  • We also added the standard social media share buttons on each product page. This is a great way for users to increase their engagement with the site, and to spread the news about this product if they have a friend to share this great product with.
  • And finally there is the Evologie Social Media icons located at the footer to stay involved with the Evologie site if you want to follow their Tweets, or join their Facebook Group page.
Evologie Social Media
  • Custom Free Sample System for Magento
    When ordering an item, you are prompted to go through all the payment fields to complete your order. But, what if you want to offer FREE Samples because you know your product is so good? In order to solve this situation and preserve the default full check out for purchases, Customer Paradigm developed a completely customized separate checkout page to offer Free Samples with a promotional code.

Evologie Free Samples

 Plus this free sample system helps to capture additional information about the perspective customer such as age and what the product will be used for.  It also features a check-box for the Newsletter sign up to help increase email subscriptions.

 

  • Tabbed CMS System
    If you have ever visited a website where you click on a tab and the whole page reloads? Then after it reloads you have to scroll back down the page to where you were looking. We have inserted a tabbed CMS system with static blocks in Magento that prevent the reloading of pages when shifting from tab to tab.
Evologie Tabbed CMS
  • Custom Video Player Module
    When viewing a video we have inserted a video player similar to the lightbox feature for photos. When you click on an image to view a video, the custom video module pops up and gives the user a more concentrated view and aren’t distracted by the content on the page.

Evologie Custom Video Module

  • Customized Product Page with Recurring Order Options
    When it comes to items like acne treatments, prescriptions or even make-up having your necessary supplies delivered to you without having to reorder allows you to avoid ever running out. Customer Paradigm developed a product page with the recurring order options in time increments of every 30 days, every 60 days, or a one time purchase.

Recurring orders for Products

To view the Evologie site please go to: www.evologie.com

The Evologie website has shown us how any eCommerce business can be taken to the next level and customized to tailor to your business goals and customers needs with custom Magento Extensions. If you are interested in Magento eCommerce for your business call us now at 303.473.4400 to talk to a real person, or fill out the short contact form below.

 

Jul 19, 2012

Magento vs WordPress for eCommerce

Magento eCommerce vs. WordPress eCommerce Plugin

With so many eCommerce platforms available, it is hard to figure out which one is right for you. Many platforms offer different functionality which is necessary for some eCommerce stores, while simple functionality may be your piece of pie. Our experience has been stores that have invested in a simple functioning eCommerce platform but as time goes on, their business grows and they want to offer more customization, they eventually migrate their eCommerce site to Magento.

From our experience, choosing an eCommerce platform that your business is able to grow into is the best route (unless you don’t want business to grow). This route is better than investing in one eCommerce method may do the trick for your business at its infancy stage, and then needing to migrate your whole site to a new platform that can handle all your desired functionality and customization.

At Customer Paradigm our general rule of thumb for deciding if your site should be run on Magento or a WordPress Plugin is the question of what is the goal of your site?

If your goal is to sell products we highly recommend Magento. If your goal is to post content and blog then WordPress CMS is recommended. Generally, when the amount of products you have to sell are more than 25 it is a smart move to switch to Magento.

First we will go through the Magento and WordPress similarities, then we will look at the functionality that Magento has that WordPress does not, then the functionality that WordPress has that Magento does not.

Magento and WordPress Similarities

  • They are both Open Source platforms – they are both free (Magento Community version)
  • Ability to integrate blogging into their functionality
  • Ability to easily add products
  • Ability to use themes to design and personalize the look of your website

Magento vs. WordPress eCommerce Plugins

One advantage of Magento vs. WordPress eCommerce plugins is the fact that Magento was developed specifically for eCommerce. The Magento Logooverall functionality is going to be more tailored towards a business structure for sales.

  • Customization of shipping options
  • Various payment integration
  • Custom Shipping methods
  • Dynamic pricing functionality
  • Order fulfillment
  • Gift Cards
  • A more secure eCommerce platform than WordPress third party plugins
  • Ability to add more functionality than a WordPress Plugin
  • Great forums available on the web if you run into problems because Magento is the most widely used eCommerce platform
If Magento sounds like the right eCommerce solution for you, please call Customer Paradigm to talk to a real person at 303.473.4400 or fill out the contact form below.

WordPress eCommerce Plugins vs. Magento

WordPress is ideal for your eCommerce needs if you are only selling a few products. If you mainly have a site that is driven by content and news updates and you sell a few t-shirts or tickets to an event then the WordPress eCommerce Plugin will work for you. Unfortunately I can not cover WordPress eCommerce plugins in one bullet point list, because the functionality is dependent on the 3rd party plugin you choose. Below is a list of the general well known facts about WordPress eCommerce. Wordpress Logo

  • Tons of eCommerce 3rd party plugins to choose from to fit your needs
  • Easily integrate your eCommerce into your existing WordPress theme
  • Not as secure as Magento, WordPress has been frequently hacked.
  • Unfortunately, 3rd party plug-ins are less reliable which isn’t good when it comes to selling products or tickets.

If WordPress eCommerce sounds like the right route for your business here are a few plugins that we recommend WP-Commerce and Jigoshop. If you are interested in WordPress Design and Development call us now at 303.473.4400 and talk to a real person.

 

 

Jul 6, 2012

Critical Magento Security Update – Zend Vulnerability

There is an important security update for any company using Magento; this was posted yesterday (July 5, 2012) to Magento`s blog.

Magento uses the Zend Platform; the vulnerability is in the Zend software.

The Issue: The vulnerability potentially allows an attacker to read any file on the web server where the Zend XMLRPC functionality is enabled. This might include password files, configuration files, and possibly even databases if they are stored on the same machine as the Magento web server.

Summary: We`re not trying to scare you, but it`s really not very good if you don`t apply this patch. An atacker could access all of your customer`s information, your admin functionality, and gain complete access to your site. They could delete all of your products, customers, change pricing. It wouldn`t be pretty.

What Should You Do:
a. Patch it
b. Put in a workaround until it`s patched.

If you`d like us to take care of this for you, we can fix this for you in one hour of billable time (we just need FTP access).  Call 303.473.4400 or visit here to have someone contact you now >>



Technical Details About the Magento Local File Inclusion (LFI) security vulnerability:

The attack is called local file inclusion (LFI) and essentially it allows a hacker to read any file on the server. At a high level, here’s what happens:

 

  1. Someone connects to your Magento installation’s Web API. Great, you think to yourself “I’m checking login/passwords, so I won’t give them anything they don’t have access to. And even if they do have access, I’ll only allow them certain actions (getting orders, creating products, etc)
  2. Your api reads the request using zend framework
  3. Zend framework uses a PHP xml library
  4. You send a response back saying “Sorry, you don’t have access to my api” or “Ok, you just updated your product description”
  5. But little do you know, you also sent back the entire password file! Now your hacker owns the server!!

 

Here’s an example XML request the hacker might send:

<?xml version=”1.0″?>

<!DOCTYPE api_username [<!ENTITY my_api_username SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">]>

… XML REQUEST …

<api_username>&my_api_username</api_username>

….The rest of the request

 

So, assuming they don’t have access (or they do, this really is just an example) your application might send something back like:

<?xml version=”1.0″?>

<message>Sorry, {insert_api_username_here} you don’t have access</message>

 

But where you just inserted the api username, you actually inserted the contents of the entire password file!

 

Luckily PHP provides us with an easy function to prevent this: http://php.net/manual/en/function.libxml-disable-entity-loader.php

The magento patch works by using this function in the appropriate places.

 

Need help applying this Magento Security Fix?  Call 303.473.4400 or visit here to have someone contact you now >>

May 23, 2012

FedEx Shipping Fix for Magento Versions 1.5 and lower

Customer Paradigm
888.772.0777
303.499.9318


If you`re running the Magento eCommerce system (version 1.5 and lower) and rely on FedEx for shipping quotes, you may need to update your system so that it works after May 31, 2012.

FedEx Shipping Fix for Magento Versions 1.5 and lower

What`s going on: FedEx is switching over to a newer Web Service API, and is discontinuing their older system at the end of May, 2012.

If you`re running Magento Community 1.6 or 1.7.0, you`re fine — this uses the latest system.

If you`re running Magento version 1.5, 1.4 or lower, you need to do a quick extension update, and you`ll be able to continue to use FedEx for shipping quotes.

If you`re not running Magento (but do rely on real-time shipping quotes from FedEx), please check and make sure that your system is going to work after May, 2012.

How can I tell what version of Magento I`m running?
Log in to your Magento admin area. At the bottom of the page (you may need to scroll down), it will read in the center: Magento ver. 1.6.0.0 (or something similar).

How much does it cost to update? The software extension is free; if you would like us to assist you, we can install, test and configure this for you on an hourly basis.

Please call or email if we can help.

Thanks,

Jeff FinkelsteinFounder, Customer Paradigm
Jeff Finkelstein
Founder, Customer Paradigm


303.499.9318

Connect Via Facebook >>
Connect Via Linked In >>
Connect Via Twitter >>

We love referrals! Our Referral Promise >>


 

Customer Paradigm
5353 Manhattan Circle, Suite 103
Boulder, Colorado 80303
Visit our Website
direct 303.499.9318
fax 303.374.6104
toll free 888.772.0777
Web & Print Design • Programming • Email Newsletters • Search Engine Marketing • eCommerce
May 22, 2012

StaySafeMedia's Migration to Magento

Magento Migration for Stay Safe Media

StaySafeMedia.com is an eCommerce site that sells personal defense courses in a variety of formats such as videos and books. The original eCommerce site had been run by a custom PHP platform which had become outdated. The client needed a secure platform for their eCommerce store and was also interested in new functionality which they had seen on other sites.  They needed to add videos, update the design and be able to connect with their customers on social media.

The original platform was both less secure then Magento and  provided little of the functionality which most eCommerce sites now depend on. After taking a look at the existing functionality we had a good idea about what types of platforms would work best for them. We suggested Magento Community as the new platform for Stay Safe Media for a couple reasons -

First, Magento would give them the ability to better manage their customer base, run reports, make promotional rules and codes, and would vastly simplify the usability of the site.

Second, Magento is a very secure platform for eCommerce and came with all the necessary security features that Stay Safe Media was interested in such as CAPTCHA validation.

Finally, Magento gave the client all their existing frontend functionality from their previous site while giving them new features for their customers. This included a Customer Account dashboard, “Shop By” refinements for categories, clear out of stock notices, up-sell options for product pages and improved shopping cart functionality.

After going with Magento for the eCommerce platform we took a look at what we could do to improve on the current site. Rather then using the existing design on Stay Safe Media we decided to upgrade them to a new design. We also made improvements to their logo and updated the homepage to include sliders, testimonials and product carousel. Finally we included the content from the original site at the bottom of the homepage to improve SEO.

To migrate them from their previous platform we needed to import both Products and Customers into Magento. We did this by dumping their previous MySQL database and running a script to transfer everything into Magento. The customer import was done just before taking the site live to ensure that all customers were imported.

We also helped them a couple of additional items that are always critical to moving a site. This included re-keying their SSL Certificate for the new server, helping them point over the domain and setting up existing email accounts on their new server.

The new site looks and works great, you can check it out yourself here at staysafemedia.com.

 

May 21, 2012

New FedEx Shopping Extension for Magento

Magento FedEx Extension FixOn May 31st, 2012 FedEx will be switching to a Web Service to supply shipping rates in Magento. This means users of Magento CE1.5x or less or EE1.10.x or less will no longer be able to retrieve FedEx shipping rates in Magento.

Fortunately, users can install the Magento FedEx fix extension to allow users of older versions of Magento to continue to retrieve FedEx shipping rates without upgrading to Magento 1.7.

Here are a few items that our developers have learned from our installations of the new FedEx shipping fix:

  1. You have to have the WebShopApps “Logger” extension installed for the FedEx extension to work (but after you’ve set up the FedEx extension you need to disable it per this article – http://wiki.webshopapps.com/webshopapps-logger)
  2. If you are using the “Home Delivery” option you need to set “Residential Delivery” to Yes or it will show as an error. You will need the following credentials to set up the account:
    ID: (Account number)
    – Production Password: (Provided in email once you sign up)
    – Production Meter Number: (provided in sign up success screen)
    – Key: (provided in sign up success screen)

Customer Paradigm is a full-service ecommerce solution featuring Magento website development. From 1 hour to 1000, we can help! For more information about setting up the FedEx shipping fix extension for your Magento store or upgrading to Magento 1.7, please call Customer Paradigm toll free at 888.772.0777 or contact us to speak to a real person now.

May 18, 2012

Google bots learning to read webpages like humans

Here’s another really interesting article about Google’s bots… they are now starting to execute javascript, so that they can use sites more like humans… Google bots learning to read webpages like humans, one step closer to knowing everything. -visit here to read.
May 14, 2012

Rel="Canonical" vs. Pagination : Weeding Through Duplicate Content with a Paginated Sequence Tank

If you are working on any Magento E-commerce site, your website most likely falls under the umbrella of multiple products that can be categorized by more than one attribute. This makes it very likely that you will have many pages displaying the same products. So what can we do to avoid duplicate content of product listings? Just because your site has plenty of products to offer and a variety of ways to define precisely what you are looking for doesn’t mean you should suffer any duplicate content penalties.

Rel=”canonical” Tactic

One common solution is adding a rel=”canonical” link to the <link> section of your first product page to indicate this is the page you wish to be indexed by Google. Next, on all your pages that display similar products you add a <rel=”canonical” href=”http://www.example.com/product=X634K23> to the <head> section of your HTML pages. This signals to Google to ignore that page and says this [href] is the main page that you want stressed in search results. By completing this, the SEO content of your first product page that is indexed is able to be optimized for its full value. For Example:

<head>
<link rel=”canonical” href=”http://www.example.com/article?story=payattentionhere” />

<title> How to use rel=canonical</title>

</head>

Below is a visual representation of the rel=”canonical”:

 

 

 

Paginated Sequences: Rel=”next/prev” Tactic

Another solution that is the pagination sequence which uses rel=”next” and rel=”prev” this is a process that is most effectively used for pages in a series, one after the next. For example, if you were reading an article and it was split into four pages. From the second page, the rel=”next” would be linked to the third page in the article, the rel=”prev” would be linked to the first page. A user would most likely not click from the second page in the article and continue reading on the fourth page. For example:

<head>
<link rel=”prev” href=”http://www.example.com/article?story=page1″ />
<link rel=”next” href=”http://www.example.com/article?story=page3″ />
<title>How to use rel=next and rel=prev, page 2</title>
</head>

This code is easily implemented and organized the sequence of your pages, this differs from rel=”canonical” in that all the pages come from one page and point to the next, instead of each page pointing to one page.

Below is a visual representation of a Pagination sequence:

 

 

 

Which tactic should I use?

From a Search Engine Optimization point of view, the winner is definitely the Pagination Sequencing tactic. By implementing pagination sequencing you are able to yield the SEO strength of all linking pages rather than just the single canonical page with the rel=canonical tactic. This gives you the strength of all your title tags, image alt-tags, and content of all pages associated.

 

If you are interested in implementing the Pagination Sequencing Search Engine Optimization strategy on your Magento or e-commerce site, Customer Paradigm is here to help! Please contact us or call and talk to a real person at 303.473.4400.

http://www.customerparadigm.com/category/blog/magento-ecommerce/

Apr 26, 2012

Running Varnish Caching on Magento – but pages not updating

If you care about optimizing an eCommerce site, you know that page load times are critical.  For every second you shave off the time of a page load, conversions increase dramatically.

For every 1 second delay your page takes to load, you’ll see approximately 7% less conversions, and 11% fewer subsequent page views.

Our clients don’t usually call us to see if we can help speed up their page views.  Rather, we look at their sites, using advanced tools (some free, like Google Analytics), and see how long pages take to load, and what the conversion rates are.

If we speed up a page, it means (a) more business for the eCommerce Magento site, (b) a better experience for the end user (we save them time), and (c) the page tends to be ranked higher via Google and other search engines.

If you set up your Magento eCommerce site correctly with caching turned on well, it will scream.  Fast page load times – sub-one-second.  We’ve taken sites from 8-10 second page load times, and had them load in 1 or 1.5 seconds.

How?  We use many techniques, but one is Varnish.

What is Varnish?

Varnish is a HTTP Accelerator (reverse proxy for technical folk). 

A HTTP Accelerator sits between your web server and other people’s web browsers, and creates copies of content normally served from the web server. This content can include anything from images, JavaScript files, swf files, HTML files, to dynamically generated content.

How does Varnish benefit someone running Magento?

Magento varies in the amount of resources it consumes, suffice it to say Magento is more resource hungry than most PHP apps.

For this reason Magento has many types of caching built into it (you can see these in your admin panel).

These caches can help quite a bit, but there is still more you can do.

The overhead of loading the actual Magento core to start utilizing these caches is one more component that we can eliminate with Varnish.

For the following cases:
•    First time users to your site
•    Users that are not logged in
•    Users that do have items in their carts

There may be no reason to have Magento load more than once.

Why is that? In the cases listed above Magento may not render any differently for different users.

Because of this we only need to let Magento once per page, from there Varnish will keep a static copy of the content so that PHP, Mysql, and Magento do not need to run in the future.

This saves system resources, and just as important it significantly lowers your First Byte Time.

Your users will be waiting less for the page to load, and Google will love you!

So you may be asking what about when I do not meet the criteria listed above.

In those cases you will need to let Magento run as it normally would, this is because we want each user to have a unique experience based on their interactions with the site (i.e. if a user adds a product to the cart, it needs to be shown to them in the header as it normally would).

In these cases however,  users still benefit from Varnish since the system is not working as hard as it normally would, and can serve those users faster.

The problem with Varnish: When You Add New Products, Edit Products, Edit Categories or CMS Pages:

Why is the Customer Paradigm Magento Varnish Extension needed to run Varnish on my Magento site?

The Customer Paradigm Magento Varnish Extension takes a lot of the headache out of running Varnish, it automates many of the tasks needed to keep the Varnish Cache in sync with the actual Magento install.

For instance, if you did not have the Customer Paradigm Magento Varnish Extension , and updated a product from the Magento Admin Panel, your updates would not be reflected on the frontend until your restarted Varnish, thus reducing the effectiveness of Varnish.

With the Customer Paradigm Magento Varnish Extension , all changes to Categories, Product, and CMS pages are kept in sync.

It does this without ever needing to clear the entire Varnish cache, thus keeping most of your Magento site fast.

Customer Paradigm’s Magento Varnish Extension also provides methods to flush the entire cache, or to disable the cache for certain parts of your site. This is very useful for people that may not manage their server infrastructure directly.

What the Customer Paradigm Magento Varnish Extension Does:

•    Lowers the amount of time needed to setup a Varnish Cache.
•    Syncs Varnish with Magento’s Catalog Search, Catagories, Products, and CMS pages.
•    Adds debugging features to the Magento Admin panel.

Requirements:
•    Magento 1.5 +
•    Varnish 3.0.0

 

Results:

Non-Varnish results (3 users):

SIEGE 2.70

** Preparing 3 concurrent users for battle.

The server is now under siege…

 

Lifting the server siege…-done.

Transactions:                    23 hits

Availability:                100.00 %

Elapsed time:                 14.57 secs

Data transferred:              0.13 MB

Response time:                 1.38 secs

Transaction rate:              1.58 trans/sec

Throughput:                    0.01 MB/sec

Concurrency:                   2.19

Successful transactions:          23

Failed transactions:              0

Longest transaction:           1.87

Shortest transaction:          0.89

 

 

 

Varnish results (1st run ie. Not in cache)

SIEGE 2.70
** Preparing 3 concurrent users for battle.
The server is now under siege...

Lifting the server siege...-done.
Transactions:                    33 hits
Availability:                100.00 %
Elapsed time:                 14.76 secs
Data transferred:              0.19 MB
Response time:                 0.71 secs
Transaction rate:              2.24 trans/sec
Throughput:                    0.01 MB/sec
Concurrency:                   1.59
Successful transactions:          33
Failed transactions:              0
Longest transaction:           1.52
Shortest transaction:          0.01

Varnish results (2nd run cache is loaded):

SIEGE 2.70
** Preparing 3 concurrent users for battle.
The server is now under siege...

Lifting the server siege...-done.
Transactions:                    48 hits
Availability:                100.00 %
Elapsed time:                 14.04 secs
Data transferred:              0.27 MB
Response time:                 0.36 secs
Transaction rate:              3.42 trans/sec
Throughput:                    0.02 MB/sec
Concurrency:                   1.25
Successful transactions:          48
Failed transactions:              0
Longest transaction:           1.96
Shortest transaction:          0.00

Want the Extension?

This extension is currently being submitted to Magento Connect, but if you’d like to get a copy before it’s available there, please call us at 303.473.4400 or click here to have someone contact you now >>

Jan 20, 2012

Hamster Dance!

eLearning Series

by The original Hamster Dance from 1997, courtesy of the Customer Paradigm Magento development team. We’re also integrating hamsters into our Magento back-end development, as seen in the screenshot below: Coming soon! Hamster Dance Extension for Magento Happy Friday.

Jan 5, 2012

PHP Programmer Position

Customer Paradigm, a Boulder-based Website Development and Interactive Marketing Company, is looking for a solid PHP programmer to work at our Boulder-based office. You should have: * PHP / mySQL programming skills (write code that works) * Enjoy working with other talented programmers * Magento, Zend, eCommerce experience is a bonus. This is an initial contract position, with the possibility of direct hire in 2-3 months. Please send: * Your Resume * Sites you’ve worked on More info on Customer Paradigm: http://www.CustomerParadigm.com/ Important Notes: 1. Must be okay with getting hit by an occasional nerf gun dart from time to time in our office. 2. Must be okay with Wookie being occasionally spoken in the office. 3. Must be okay with remote-control helicopters flying overhead (1-2x per week). 4. We generally work M-F, 9-5 at our office in South Boulder, Colorado. Due to the nature of our projects, we rely on collaboration between programmers, project managers and clients. Unfortunately this is Not a work-from-home or work-remotely position. Interested? Call us at 303.473.4400 x 8282 or contact us here

Dec 12, 2011

Magento Case Study: Integrating a 3rd Party API, Adding Affiliate Tracking, and Importing Products

By Senior Magento Developer Alan Barber

This week my team celebrated the completion of our most recent project: TeachMeToday.com. This is a heavily customized version of Magento which allows users the opportunity to pay for a membership which gives them access to over 400 eLearning courses.

    We developed the following custom functionality

 

  • Category and Product Import : TeachMeToday’s catalog was imported entirely from a 3rd party provider. We developed an extension to import a category hiearchy and assign products to these categories based on the external catalog. We also created a script to perform daily synching between the two catalog versions
  • Private Sales Functionality : We modified Magento so that a user must pay for a membership before they can view any of the eLearning courses
  • Recurring Memberships (Subscriptions) : We developed a custom extension which allows TeachMeToday to charge their active members on a monthly basis using Authorize.net’s CIM
  • Affiliate Landing Pages with Custom Checkout : My team integrated an external checkout path with TeachMeToday’s Magento installation. Essentially, affiliate traffic signs up on a highly optimized version of the Magento checkout (which is normally very clunky)
  • Affiliate Tracking / Reporting : We added some functionality to the Magento success page and admin area that tracks conversions and rejections

Each of these areas could have a full article written about them, but I will try and provide a few paragraphs about how we accomplished each

 

3rd Party Category and Product Import

This was probably the largest piece of the project. TeachMeToday had ~400 products and ~80 categories in an external catalog. Each of the products was essential an online “course” which launched a java application on the user’s computer. While we couldn’t import the java apps themselves, we could import the category hierarchy and metadata for individual courses. The process we developed for this is as follows:

 

  1. Create your module : We created a custom module in app/code/local.
  2. Add a sql update script to track custom data : Inside our module’s SQL directory we added an install script to add a custom attribute to both products and categories, which would serve to hold a serialized object representing metadata from our 3rd party catalog
  3. Add a helper to connect with the API : our 3rd party catalog provided a soap API to retrieve data. We created an API helper in our module which extended the php SoapClass. We used PHP’s magic functionsto allow the rest of our module to access API methods in the form of
    Mage::helper("apihelper")->{api_method_name}
    — cool huh? The the other objects in the module, the API calls were just regular method calls…our soap class had built in functions to handle soap faults as errors and to parse the soap response.
  4. Get a parsable version of the external catalog : In our case, this was a giant XML tree of the entire catalog: Magento XML Tree
  5. Recursively walk through the tree and update the catalog: This is a big step. A few things were invloved:
    1. I wrote models to represent the different types of nodes in the xml tree : In the external catalog, categories were tagged as “groups” and products tagged as “assets”. I wrote some models which extracted relevent data from each of these node types
    2. I wrote a model to represent the tree as a whole : We needed a model to poll the 3rd party service, retrieve the tree as xml, parse it into php SimpleXML and then recursively walk down each branch of the tree. Depending on the current node’s type, a different operations was performed
    3. I wrote helper models to map the xml nodes into Magento models : Helper were created which took in a <group> and mapped it into a category (in the appropriate place in the category tree) and took an <asset> tag and mapped it into a product (and assigned it to the correct category). The helpers were also smart enough to make a distinction between: creating a new model and updating an existing model
    4. Handle errors : Seems simple, but you ABSOLUTELY NEED functions built in to methodically log and report errors. We could not have done this process without such logic. Magentohas a wonderful function:
      Mage::log({message}, null, {filename})
      which allows you to put a custom log at var/log/{filename}
  6. Setup a cron job to recursively walk through the tree every night : In case the 3rd party catalog changed, we wanted our catalog to represent those changes. So we setup a cron in our config.xml to update the tree every night. Magento Crontab

Private Sales Functionality

TeachMeToday is based on a membership which gives users access to all products in the system. Be default, the community edition of Magento doesn’t enable this functionality. However it is surprisingly simple to implement this:

 

  1. Rewrite the customer account controller in your module’s config.xml
  2. Override the creatAction() in AccountController.php : In our case, we overwrote the create action to redirect the user to one of our landing pages so they could sign up. In this way, a user cannot navigate to /customer/account/create and get a new account…no matter how many times they try, they will alows get redirected to our custom landing pages Magento Controller Overload
  3. Remove the “launch course” option for user’s that aren’t active in the system: All of TeachMeToday’s products are virtual courses, and as part of the private sales piece, we needed to make sure a user that didn’t have a membership (or had an expired membership) could not launch the courses. We created a helper that checks a special customer attribute which is a Boolean flag specifying whether or not the user was active. So we use
    Mage::getSingleton("customer/session")->getCustomer()
    to grab the current customer instance and check their is_active flag.
  4. Update the customer flag when a user signs up for a membership: We created a custom event for this. On our landing pages (which have custom checkout functionality) we call
    Mage::dispatchEvent("our_custom_event", array("customer" => $customer))
    which passes the newly-signed-up customer to our custom module (which then updates the appropriate customer attributes). We created a similar event for when the customer is deleted or fails billing.

Recurring Memberships (Subscriptions)

We needed a way to continually charge customers (since the product they were purchasing was a monthly membership/subscription). However, it requires a lot of legwork and special infrastructure to store credit cards with and be PCI Compliant — and the community edition of Magento is not PCI compliant. Therefore, we decided to use Authorize.net’s CIM. CIM allows you as merchant to store credit card information on authorize.net’s servers, and then provides you a handle for each customer with which you can rebill them without storing their info — cool huh?
Our process was as follows:

 

  1. Create the CIM customer and payment profiles when the user signs up, and store the CIM token (handle) : We used the IDP Magento Extension to handle the requests to authorize.net (no point in reinventing the wheel, and this module does a great job creating a Magento Paygate-mapping to authorize.net).
  2. Create a cron task to bill customers: My team created a script (which runs nightly) that does a few things:
    1. Check which customers are due for a rebill : Using varien data collections we find a list of all customers which are due for a re-bill
    2. Attempt to rebill appropriate customers through their CIM token : try and bill the customer through their CIM handle (which bills them based on the credit card info they have stored in authorize.net)
    3. If payment failed, change their “is_active” flag, if not, create a new order

Magento Affiliate Landing Pages with Custom Checkout

>We needed a number of different landing pages for TeachMeToday to AB test affiliate traffic to. These landing pages needed to be highly optimized for conversions. The process for creating landing pages that could create orders in Magento was as follows:

 

Magento Custom CheckoutCreate CMS Pages with each landing page URL

    : If you wanted your landing page to be: TeachMeToday.com/signup-now, you would make a cms page with URL identifier of “signup-now”
  1. Set the CMS page layout to empty
  2. Add custom stylesheets via layout xml in cms_page–>design : If you need custom styles, you can add them on a per landing page basis there
  3. Create a phtml block in the CMS page to place your landing page code in : We had vastly different looking landing pages…which were all their own layout. The way I did this was to place a block as the sole content in each CMS page as: {{block type=”page/html” name=”signup.now.page” as = “signupNowPage” template=”landing/signup_now/body.phtml”}} Now the page would load its content from my custom phtml file:
  4. Create your custom checkout controller that your landing page submits to : This step is a pain in the @!@ … essentially you need to replicate everything Magentodoes when it creates an order, which is as follows:
    1. Validate customer billing info
    2. Create a new customer with an auto-generated password
    3. Create a quote model and load it with customer and product data : You will need to assign the quote to a customer and add a product to the quote. I’m not going to go into detail on how to do it as its a complicated process. Googling for “create a Magento order programatically” returns some relevent results
    4. Use a service quote to attempt to transform the quote into an order (and therefore charge the customer’s credit card)
    5. If the service quote threw an error, notify the user their payment info was invalid. Otherwise, get the new order from the service quote and move the user to /checkout/onepage/success

Magento Affiliate Tracking / Reporting

Since TeachMeToday receives a large amount of affiliate traffic, they needed to do a few things:

 

  • Store email addresses of leads: Even if a user didn’t not checkout, we needed to store all the email addresses that came through. We did this by associating everyone who comes through the site as a newsletter subscriber (
    Mage::getModel("newsletter/subscriber")
    )
  • Track conversions: Magento by default has a .phtml file in template/checkout/onepage/success.phtml that gets loaded on the checkout confirmation page. This is a great place to drop in tracking pixels or javascript for affiliate tracking (most affiliates will require their tracking pixel on the confirmation page). We passed in the current affiliate’s id in the url string to the confirmation page (as /checkout/onepage/success?aid={affiliate_id}). We then logged every order that had an affiliate id set in a custom table in our database (calling
    Mage::getSingleton("checkout/session")->getLastRealOrderId() will give you the order id).
  • Create reports in the back end of Magento : I’m not going to go into how to add reports to the adminhtml. However, we used the aforementioned table that we stored aid=>order_id associations in to populate several custom reports for each affiliate

Conclusion

I’ve outlined a lot of complicated processes above. It was a considerable amount of work—but it goes to show how Magento’s modular structure allows you to do just about anything with it (and how awesome our Customer Paradigm Team is!).
Alan Barber is a Senior Magento Programmer at Customer Paradigm who specializes in systems architecture and application troubleshooting. For more information, or to get Magento help now, visit customerparadigm.com.

Dec 6, 2011

Great post about why NOT to use overseas / cheap Indian Programmers

The dad of one of our lead Magento Developers here at Customer Paradigm found this article about why he doesn’t fear losing his job to overseas talent, and it’s a great article: http://blog.jpl-consulting.com/2011/12/why-i-will-never-feel-threatened-by-programmers-in-india/ When I first started our company, I was lured into using inexpensive overseas programmers to handle building websites, etc. What I found by hiring an all US-based team of programmers for Magento Development and php programming was that: – The code the US programmers wrote is a lot better – The programmers here in the office were at least 5 to 10 times more efficient – Turnaround times were are lot faster – Customers like being able to talk to a real programmer – Project management costs and frustrations are way down / reduced by 2 to 4 times – There’s a huge premium for having programmers sit together in an office and tackle problems efficiently. Today, we have two of our top programmers traveling to visit one of our clients in San Francisco, CA – a short 2 hour flight from here. Thanks, Alan’s Dad!