WooCommerce is a free WordPress plugin that turns it into a full-featured online store. It supports physical products, digital products, and subscriptions.
Installing WooCommerce
- Plugins → Add New → “WooCommerce” → Install → Activate
- The Setup Wizard will launch
- Specify the country, currency, and product type
- Configure payment methods and shipping
Adding Products
- Products → Add New
- Enter the name, description, and price
- Specify SKU, weight, and dimensions (for physical products)
- Upload a product image and gallery
- Choose a category and tags
Payment Methods
| Gateway | Fee | Setup |
|---|---|---|
| Stripe | 2.9% + $0.30 | WooCommerce Stripe plugin |
| PayPal | 3.49% + $0.49 | WooCommerce PayPal Payments |
| LiqPay | from 2.5% | For Ukraine |
SEO for the Store
- Install Yoast SEO + WooCommerce SEO
- Set up clean URLs: Settings → Permalinks → Post name
- Add Schema.org Product markup to products (Yoast does this automatically)
- Write unique descriptions for each product
WooCommerce Performance
- Exclude the cart and checkout pages from caching
- For large catalogs (1000+ products) — use a VPS instead of shared hosting
- Install WooCommerce PDF Invoices for automatic invoices
Common errors when launching a store
Most errors during a first WooCommerce launch come not from the plugin itself but from the environment not meeting its requirements.
| Error text or symptom | Cause | What to do |
|---|---|---|
| Error establishing a database connection when activating WooCommerce | Activation creates new wp_wc_* tables while the DB connection limit on shared hosting is already exhausted | Activate the plugin during a low-traffic period and check max_connections |
| There has been a critical error on this website after installing a payment plugin | The PHP version is below what the payment gateway requires (usually at least PHP 7.4) | Update PHP to at least 8.1 before installing payment plugins |
| 500 error on the checkout page | A WAF or security plugin blocks the checkout POST request as suspicious | Add an exception for /checkout/ and /wp-json/wc/store/ in the firewall rules |
| Products do not appear on the storefront after a CSV import | Imported products stay in "draft" status instead of "published" | Check the post status: Products → All Products → filter by status |
If the error is specifically about the MySQL connection limit, see the article on too many connections.
When WooCommerce is not the best choice
- A catalog of tens of thousands of SKUs with daily price updates from a supplier — WooCommerce on MySQL starts to degrade; look toward specialized PIM or ERP integrations instead
- A subscription model with complex billing (prorated charges, pauses, plan upgrades) — the base WooCommerce Subscriptions plugin may not be enough without heavy customization
- A multi-vendor marketplace with independent sellers — a separate marketplace plugin on top of WooCommerce is needed, which adds maintenance overhead
- Selling only digital licenses activated on devices — a dedicated licensing service is simpler than forcing WooCommerce to do it
- A store with a legal requirement to fiscalize every receipt in real time — a separate integration with a fiscal register or online cash register is needed; WooCommerce does not solve this out of the box
Before choosing a platform, honestly estimate the expected traffic for the coming year: migrating from WooCommerce to a specialized platform after accumulating thousands of orders costs far more than picking the right solution from the start.
Setting up shipping
Shipping rates are configured by zone: WooCommerce → Settings → Shipping → Add shipping zone. Example of a typical setup for a store serving Ukraine and the EU:
| Shipping zone | Method | Cost |
|---|---|---|
| Ukraine | Carrier pickup point | from 60 UAH |
| Ukraine | Courier within the city | from 90 UAH |
| EU | International mail | from 15 EUR |
How to check the store is ready to launch
- Place a test order in the payment gateway's sandbox mode with a real payment scenario
- Check that order notification emails reach both the customer and the administrator
- Verify the basic settings through WP-CLI without logging into the admin
- Run a load test on checkout with 10 concurrent test sessions
- Check that the SSL certificate is valid on every payment page — without valid HTTPS, payment gateways reject requests before a payment is even attempted
wp option get woocommerce_currency
wp eval 'echo wc_get_page_id("shop");'
For more on choosing an SSL certificate type for a store, see the article on SSL types: DV, OV, EV.