Hosting for an online store: what matters before you start selling
An online store has a harder time on shared hosting than a blog or a company site. The cart, customer accounts and checkout can't be fully cached, a catalog with filters puts load on the database, and hundreds of product pages with photos eat up disk space and files. On top of that, a store holds customers' personal data, so choosing hosting for an online store is also a legal question. Below is what to look at if your store runs on WooCommerce, OpenCart or PrestaShop.
Store CMS and server requirements
- WooCommerce is a WordPress plugin and inherits all its traits: dependence on the number of plugins, the benefit of an object cache, load from WP-Cron. It needs a memory_limit of 256 MB or more and a current PHP 8.x.
- OpenCart is lighter on resources but sensitive to modules and filters: a badly written catalog filter can load the database harder than a hundred visitors.
- PrestaShop is more demanding on memory and the number of PHP processes, especially in the back office and during product imports. Check that the script execution time limit lets you upload your whole price list in one go.
Any of these platforms needs MySQL 8 or MariaDB 10.6 or newer, the gd or imagick, curl, zip and intl extensions, and cron access from the panel — stock levels, exchange rates and marketplace feeds are exported on a schedule.
Databases and disk
One database is often not enough for a store: you need a separate one for a staging copy, and another for a blog or a second language if they run as separate installations. Keep an eye on database size too: order, log, session and statistics tables grow for years and should be cleaned up periodically.
Product photos are the main consumer of disk space and inodes. One product page with a gallery turns into dozens of files, because the CMS generates thumbnails for every size the theme uses. Choose disk space with headroom, compress images on upload and check the inode limit, not just the gigabytes. Disk speed matters more for a store than for a blog: filters, search and the back office constantly read the database — more on that on the NVMe hosting page.
SSL, payments and security
HTTPS is mandatory for a store: without it browsers mark forms as insecure, and payment providers won't connect the site. A free Let's Encrypt certificate is enough, but it must renew automatically — an expired certificate on the day of a promotion stops sales.
A store on shared hosting should never store card data. Payment is taken by the payment provider's hosted page or widget, and the site only receives a status notification. Make sure the host doesn't block incoming requests from payment systems (webhook notifications) or outgoing requests to their APIs, and that the script execution time is long enough to wait for a response. Protect the admin panel with a strong password and two-factor authentication, and install modules only from official marketplaces.
Customer personal data and GDPR
Customers' names, phone numbers, addresses and emails are personal data. If your store sells to people in the EU, GDPR applies wherever the server is: you need a privacy policy, a lawful basis for each kind of processing, cookie consent for analytics and ad pixels, and a data processing agreement (DPA) with your host and every service that receives customer data. A host with servers in the EU makes this easier, because data doesn't leave the Union and a DPA is usually part of the standard terms — such plans are collected on the hosting in Europe page. Some other countries go further and require their citizens' data to be stored locally, so check the rules for each market you sell to. Ask the host where the server is physically located and where backups are kept: they contain personal data too.
Backups and load during sales
A store can't be restored from a week-old copy: you'd lose orders. You need daily database backups — or better, several times a day — kept for at least two weeks, with the option to restore the database separately from the files. Make your own copy before major updates.
During promotions and seasonal sales, visitor numbers multiply, and all of them go through the uncacheable cart and checkout. Prepare in advance:
- look at the resource stats in your panel on a normal peak day: if the site is already close to the process limit, it won't survive a sale;
- enable page caching for the catalog and product pages, and an object cache if the plan supports it;
- pause heavy background jobs for the duration of the sale: imports, feed generation, bulk mailings;
- run a load test on a staging copy and ask the host whether limits can be raised temporarily.
When a store needs a VPS
Shared hosting is enough for a small store with a few hundred products and moderate traffic. It's worth moving to a server if the catalog has tens of thousands of items, orders come in steadily throughout the day, you need Redis, a search engine or queues, and 503 errors appear even after optimization. Configurations for these tasks are collected in the VPS for an online store selection.