I’m a bit biased since I’ve been profiling in WordPress for a while now but I’ll share some objective points.
That said, Magento has been a leading solution for eCommerce stores for quite some time. It does one thing and does it well – handling large volume of products, orders, and customers for online shops.
WooCommerce = eCommerce + CMS
Unlike WooCommerce (being a WordPress plugin), you don’t get the added overhead of a traditional CMS if you don’t need one. The WordPress Core is over 300,000 lines of code handling posts management, custom post types and taxonomies, comments, various settings, a template hierarchy layer, a robust rewrite API and a number of bits that may incur additional code debt if you don’t need them.
For a pure eCommerce platform handling hundreds of thousands of products, Magento may be a better choice from a scalability standpoint. WordPress is designed to be a generic CMS which could be extended for all sorts of solutions. This leads to a denormalized database schema and a larger number of database queries.
Product Database Serialization
It’s not uncommon for plugins to store data as serialized arrays in order to overcome that obstacle. That said, filtering and searching among serialized arrays in PHP/MySQL is rough and often causes troubles. The problem gets amplified if we consider product categorization – since there are multiple database tables for terms and taxonomies which aren’t intuitive and could be structured better if we aim purely for eCommerce.
Most performance challenges in WordPress are “resolved” via object caching (memcached/redis) and page caching. Given the dynamics of an eCommerce store (for logged in customers), certain areas cannot be cached effectively – adding on top of the performance hogs.
Feature-wise, Magento has a large pool of well-tested and popular extensions for payments, transactions, upsells/downsells and other important areas for online store businesses. WooCommerce is catching up quickly and its extension ecosystem is growing rapidly, though.
WooCommerce – a Winner for Small Projects
WooCommerce is a no-brainer for smaller stores and serious platforms that already rely on WordPress as a CMS. If you’re already maintaining a WordPress platform, introducing WooCommerce as an eCommerce extension may be a reasonable choice.
That also allows for mixing additional payment options – paid training courses, subscriptions, protected forums for members. Since everything is designed as a custom post type, managing different entries is extremely easy and allows for flexible archive pages or search queries.
WooCommerce Acquired by Automattic
WooCommerce has been acquired by Automattic a couple years ago (the company behind the hosted WordPress.com). This would increase the popularity of WooCommerce for hosted WordPress installs along with additional resources allocated on new features, performance improvements, stability, and tons of new extensions.
Some businesses may choose to use WordPress for a CMS and set up Magento separately for their eCommerce module. It’s becoming less common but still happens every now and then.
That said, Shopify has been gaining popularity quite a lot. Since it’s hosted, it handles payments, security, ongoing updates and the like. Businesses often use WordPress along with a Shopify plan in order to reduce their maintenance costs and offload that to Shopify.