E-commerce solutions market research
Table of Contents
Introduction
Many business owners hire freelance programmers to help them integrate, configure and set up online ecommerce websites. But there are at least 3 key questions that need to be answered along the way:
- Which ecommerce solution should I use ?
- Which payment gateway/service should I use ?
- How should I promote/advertise my ecommerce website ?
This blogpost will focus on answering those questions using data from 336,067 freelance job ads collected over the course of 1 year and 2 months.
Ecommerce platforms
You can split ecommerce platforms into two categories:
- SaaS solutions
- selfhosted
The first type, SaaS solutions are centrally hosted, they can be less flexible and customizable but you have the advantage that someone else is taking care of the hosting, reliability, infrastructure. Some examples of SaaS solutions are shopify and bigcommerce.
The selfhosted solutions are very flexible, you can customize/modify/tune/integrate if you're experienced with that particular solution but you also have to take care of installing it, maintainance, monitoring, security, scalability. Some examples of selfhosted solutions are magento, prestashop or woocommerce.
Another aspect is if you're able to export the data. Some of the SaaS solutions make it harder to export data than others (it may be that at some point you'll want to migrate from a SaaS to a selfhosted solution)
WITH classes(label, re1, re2) AS ( VALUES ('magento' , 'magento' , NULL ), ('prestashop' , 'prestashop|presta shop|presta-shop' , NULL ), ('woocommerce' , 'woocommerce|woo-commerce|woo commerce', NULL ), ('bigcommerce' , 'bigcommerce' , NULL ), ('shopify' , 'shopify' , NULL ), ('zencart' , 'zen cart|zencart' , NULL ), ('sharetribe' , 'sharetribe' , NULL ), ('oscommerce' , 'oscommerce' , NULL ), ('nopcommerce' , 'nopcommerce' , NULL ), ('lemonstand' , 'lemonstand.com' , NULL ), ('squarespace' , 'squarespace' , 'commerce' ), ('nopcommerce' , 'nopcommerce' , NULL ), ('volusion' , 'volusion' , NULL ), ('wix' , 'www.wix.com| wix.com| wix ' , NULL ), ('3dcart' , '3dcart' , NULL ), ('shoprocket' , 'shoprocket' , NULL ), ('jigoshop' , 'jigoshop' , NULL ), ('ecwid' , 'ecwid' , NULL ), ('pimcore' , 'pimcore' , NULL ) ), jobs AS ( SELECT job_id, LOWER(job_title || ' ' || snippet) AS jdata FROM odesk_job ) SELECT c.label AS ecommerce_solution, COUNT(j.job_id) AS cnt FROM classes c LEFT JOIN jobs j ON ( j.jdata ~ ('(' || c.re1 || ')') AND ( CASE WHEN c.re2 IS NULL THEN true ELSE (j.jdata ~ ('(' || c.re2 || ')')) END ) ) GROUP BY c.label ORDER BY cnt DESC;
Ecommerce marketing/advertising solutions
WITH classes(label, re1, re2) AS ( VALUES ('google adwords' , 'adwords|google adwords|google.com/adwords|adwords.com' , NULL ), ('facebook ads' , 'ads manager|facebook.com/business|facebook ads' , NULL ), ('google merchant' , 'google merchant|google.com/retail/merchant' , NULL ), ('pinterest ads' , 'ads.pinterest.com|pinterest ads' , NULL ), ('bing ads' , 'bingads|bing ads' , NULL ), ('twitter ads' , 'twitter ads|ads.twitter.com' , NULL ), ('amazon advertising' , 'amazon sponsored links|advertising.amazon.com|amazon ppc|amazon ads|amazon advertising', NULL ) ), jobs AS ( SELECT job_id, LOWER(job_title || ' ' || snippet) AS jdata FROM odesk_job WHERE LOWER(job_title || ' ' || snippet) ~ '(commerce|webstore|web store|online shop|[^a-zA-Z]eshop|[^a-zA-Z]e-shop)' ) SELECT c.label AS advertising_solution, COUNT(j.job_id) AS cnt FROM classes c LEFT JOIN jobs j ON ( j.jdata ~ ('(' || c.re1 || ')') AND ( CASE WHEN c.re2 IS NULL THEN true ELSE (j.jdata ~ ('(' || c.re2 || ')')) END ) ) GROUP BY c.label ORDER BY cnt DESC;
Ecommerce payment solutions
WITH classes(label, re1, re2) AS ( VALUES ('skrill' , 'skrill|moneybookers' , NULL), ('payoneer' , 'payoneer' , NULL), ('amazon' , 'amazon payments|payments.amazon.com' , NULL), ('paypal' , 'paypal' , NULL), ('google wallet' , 'google wallet|google.com/wallet' , NULL), ('ukash' , 'ukash' , NULL), ('intuit' , 'intuit payments|payments.intuit.com' , NULL), ('2checkout' , '2checkout' , NULL), ('square' , 'square' , NULL), ('stripe' , 'stripe' , NULL), ('network merchants' , ' nmi.com|network merchants' , NULL) ), jobs AS ( SELECT job_id, LOWER(job_title || ' ' || snippet) AS jdata FROM odesk_job WHERE LOWER(job_title || ' ' || snippet) ~ '(payment)' ) SELECT c.label AS payment_solution, COUNT(j.job_id) AS cnt FROM classes c LEFT JOIN jobs j ON ( j.jdata ~ ('(' || c.re1 || ')') AND ( CASE WHEN c.re2 IS NULL THEN true ELSE (j.jdata ~ ('(' || c.re2 || ')')) END ) ) GROUP BY c.label ORDER BY cnt DESC;
Conclusion
At the time of writing this, it seems that magento + google adwords + paypal is a good combination of solutions to use when building an ecommerce website.