Note: When a WooCommerce WooCommerce store starts selling, owners often face unexpected issues: slow checkout, incorrect tax calculation, shipping difficulties. In 70% of cases, the root cause is suboptimal settings. Over 5 years, we've set up 50+ stores and know how to avoid common mistakes. Once a client with an electronics store came to us: selecting a variable product took 8 seconds. The cause was N+1 database queries when loading attributes. We solved it by caching meta-data via transients and disabling unnecessary plugins. Order WooCommerce setup – and your store will be ready to launch in 2-3 days.
Why WooCommerce Requires Refinement?
Out of the box, the plugin provides a catalog, cart, checkout, and basic analytics. But for the Russian market, it's a skeleton, not a finished store. No patronymic field, no VAT rates of 10/20%, no popular payments (YooKassa, Sberbank), no shipping with free threshold. Everything has to be configured. Unlike Easy Digital Downloads (digital goods only), WooCommerce handles any product type but requires customization for specific business. Additionally, the standard checkout is not adapted for legal entities – it needs an INN and KPP block. Also, the default installation is not optimized for Core Web Vitals – many scripts hurt LCP and CLS. We configure async loading of resources and defer scripts not needed for initial rendering.
How to Properly Configure Taxes and Shipping in WooCommerce?
Tax rates and shipping zones are the foundation of correct store operation. We set them programmatically to avoid manual entry and errors. For Russia, two VAT rates are important: 20% and 10% (for discounted goods). Shipping is configured with a free threshold and fixed cost. For multi-regional trade – zones by federal districts with different rates.
Installation and Configuration
wp plugin install woocommerce --activate wp wc tool run install_pages --user=1 wp option update woocommerce_default_country "RU" wp option update woocommerce_currency "RUB" wp option update woocommerce_currency_pos "right_space" wp option update woocommerce_price_thousand_sep " " wp option update woocommerce_price_decimal_sep "," wp option update woocommerce_calc_taxes "yes" Tax Rates for Russia
Programmatically add VAT rates 20% and 10%:
$tax_rates = [ [ 'country' => 'RU', 'rate' => '20.0000', 'name' => 'VAT 20%', 'priority' => 1, 'compound' => false, 'shipping' => true, 'class' => '', ], [ 'country' => 'RU', 'rate' => '10.0000', 'name' => 'VAT 10%', 'priority' => 1, 'compound' => false, 'shipping' => false, 'class' => 'reduced-rate', ], ]; foreach ($tax_rates as $rate) { WC_Tax::_insert_tax_rate($rate); } Important: For correct tax calculation, ensure WooCommerce setting "Calculate taxes based on store address" is enabled.
Shipping Setup
Create a "Russia" zone with fixed cost 350 rubles and free shipping from 5000 rubles:
$zone = new WC_Shipping_Zone(); $zone->set_zone_name('Russia'); $zone->add_location('RU', 'country'); $zone->save(); $zone->add_shipping_method('flat_rate'); $zone->save(); update_option("woocommerce_flat_rate_{$instance_id}_settings", [ 'enabled' => 'yes', 'title' => 'Shipping within Russia', 'cost' => '350', 'free_min_amount' => '5000', ]); For multi-regional stores, you can add zones by federal districts with different rates.
Custom Checkout Fields
Add patronymic and INN via hook:
add_filter('woocommerce_checkout_fields', function (array $fields): array { $fields['billing']['billing_patronymic'] = [ 'label' => 'Patronymic', 'placeholder' => 'Ivanovna', 'required' => false, 'class' => ['form-row-last'], 'priority' => 25, ]; $fields['billing']['billing_inn'] = [ 'label' => 'INN', 'required' => false, 'class' => ['form-row-wide', 'legal-field'], 'priority' => 90, ]; return $fields; }); add_action('woocommerce_checkout_update_order_meta', function (int $order_id): void { if (!empty($_POST['billing_patronymic'])) { update_post_meta($order_id, '_billing_patronymic', sanitize_text_field($_POST['billing_patronymic'])); } if (!empty($_POST['billing_inn'])) { update_post_meta($order_id, '_billing_inn', sanitize_text_field($_POST['billing_inn'])); } }); Payment Gateway Integration (Example)
Implement a custom gateway based on WC_Payment_Gateway. In the callback, verify HMAC-SHA256 signature:
class WC_My_Gateway extends WC_Payment_Gateway { // ... full implementation in codebase } add_filter('woocommerce_payment_gateways', function (array $gateways): array { $gateways[] = 'WC_My_Gateway'; return $gateways; }); For popular gateways (YooKassa, Tinkoff), use ready plugins – faster and more reliable.
How to Choose a Payment Gateway for Russia?
| Gateway | Fee | Popularity | Integration |
|---|---|---|---|
| YooKassa | from 3% | high | plugin / custom |
| Sberbank | from 2.5% | high | plugin |
| Tinkoff | from 2% | medium | plugin |
| Robokassa | from 4% | low | plugin / custom |
How to Improve WooCommerce Performance?
To speed up page loading, we use a combination: page cache (Varnish or Nginx FastCGI Cache), Redis object caching, disabling WooCommerce scripts on pages where they are not needed (e.g., homepage). Also disable unnecessary emoji and oEmbed. This reduces TTFB and improves LCP. For checkout, we apply lazy loading of scripts that do not affect functionality.
Common WooCommerce Configuration Errors
| Error | Consequences | Solution |
|---|---|---|
| Taxes not configured | Incorrect VAT calculation | Programmatic rate setup |
| Single shipping zone | No flexibility | Create zones by regions |
| Default checkout | Loss of legal entities | Custom fields with INN |
| Many unused plugins | Slow loading | Disable unnecessary ones |
What's Included in Turnkey Setup?
Turnkey setup includes: installation and initial configuration of WooCommerce, setting up tax rates (VAT 20/10% and others), shipping zones and methods (fixed, by amount, courier), custom checkout fields (patronymic, INN, comment), integration of 1-2 payment gateways, email notifications for managers and clients, testing all order scenarios, setup documentation, and admin training.
Why Is Our WooCommerce Setup More Advantageous?
WooCommerce is 1.5 times easier to configure than Magento, and loads twice as fast on typical hosting. But most importantly, we provide a 30-day warranty on all work. If an error is discovered after launch (e.g., incorrect VAT calculation), we fix it for free. In 5 years, we have never violated this warranty. Get a free consultation for your project – no cost.
Timeline and Cost
Basic setup with one gateway and standard shipping: 2-3 days. Complex setup (up to 3 gateways, custom checkout, 1C integration): 5-8 days. Cost is individually calculated after an audit of the current state. Contact us to evaluate your project.







