WooCommerce at Scale: Running 100K Orders/Month
March 12, 2024 By wpagency.xyz Team

WooCommerce at Scale: Running 100K Orders/Month

How we scaled a WooCommerce store from 500 to 100,000+ monthly orders without switching platforms.

#woocommerce #scaling #performance #e-commerce

They Said WooCommerce Couldn’t Scale

They were wrong.

Last year, we took a struggling WooCommerce store from 500 orders/month to 100,000+. Same platform. No Shopify migration. No custom build.

Here’s exactly how we did it.

The Starting Point

A disaster:

  • Page load: 8+ seconds
  • Database: 4GB, mostly garbage
  • Plugins: 67 (yes, really)
  • Monthly revenue: $50K
  • Cart abandonment: 78%

The Current State

A machine:

  • Page load: 0.9 seconds
  • Database: 800MB, optimized
  • Plugins: 12 essential ones
  • Monthly revenue: $2.8M
  • Cart abandonment: 42%

The Infrastructure Stack

1. Hosting That Doesn’t Suck

Forget shared hosting. Forget basic VPS.

# Our setup
- Load Balancer: 2x instances
- Web Servers: 4x PHP-FPM workers
- Database: Primary + 2 replicas
- Redis: Object + Page cache
- CDN: Global edge caching

Monthly cost: $1,200 Monthly revenue increase: $2.75M ROI: Obvious

2. Database Optimization

WooCommerce’s database is a mess by default.

-- Clean transients
DELETE FROM wp_options
WHERE option_name LIKE '_transient_%';

-- Optimize order queries
ALTER TABLE wp_wc_order_stats
ADD INDEX idx_date_status (date_created, status);

-- Archive old orders
CREATE TABLE wp_wc_orders_archive
SELECT * FROM wp_wc_orders
WHERE date_created < DATE_SUB(NOW(), INTERVAL 6 MONTH);

Result: 95% faster order queries

The Code Optimizations

1. Cart Performance

Default WooCommerce cart = AJAX nightmare

// Disable cart fragments (HUGE win)
add_action('wp_enqueue_scripts', function() {
  wp_dequeue_script('wc-cart-fragments');
});

// Custom mini-cart with local storage
add_action('wp_footer', function() {
  ?>
  <script>
    // Cart in localStorage, not AJAX
    const cart = JSON.parse(localStorage.getItem('wc_cart') || '{}');
  </script>
  <?php
});

2. Checkout Optimization

// Remove unnecessary checkout fields
add_filter('woocommerce_checkout_fields', function($fields) {
  unset($fields['billing']['billing_company']);
  unset($fields['billing']['billing_address_2']);
  return $fields;
});

// Async payment processing
add_filter('woocommerce_payment_complete', function($order_id) {
  wp_schedule_single_event(time(), 'process_order_async', [$order_id]);
  return $order_id;
});

The Scaling Secrets

1. Order Processing

Stop processing orders synchronously.

// Queue-based order processing
class OrderQueue {
  public static function add($order_id) {
    wp_insert_post([
      'post_type' => 'order_queue',
      'meta_input' => ['order_id' => $order_id]
    ]);
  }

  public static function process() {
    // Background job every minute
    $queued = get_posts(['post_type' => 'order_queue']);
    foreach($queued as $item) {
      self::processOrder($item->order_id);
      wp_delete_post($item->ID);
    }
  }
}

2. Inventory Management

Real-time inventory = database killer

// Redis-based inventory
class RedisInventory {
  public static function get($product_id) {
    return wp_cache_get("stock_$product_id", 'inventory');
  }

  public static function update($product_id, $qty) {
    wp_cache_set("stock_$product_id", $qty, 'inventory', 300);
    // Sync to database async
  }
}

The Plugin Diet

From 67 to 12 plugins:

Kept:

  • WooCommerce (obviously)
  • Redis Object Cache
  • Cloudflare
  • Advanced Custom Fields
  • WP Rocket
  • UpdraftPlus

Killed:

  • All page builders
  • Social sharing plugins
  • Slider plugins
  • Pop-up plugins
  • “Optimization” plugins
  • Security plugins (handled at server)

The Caching Strategy

Cache everything, invalidate intelligently:

# Nginx microcaching
location ~ \.php$ {
  fastcgi_cache_bypass $skip_cache;
  fastcgi_cache WORDPRESS;
  fastcgi_cache_valid 200 60m;
  fastcgi_cache_methods GET HEAD;
  add_header X-Cache $upstream_cache_status;
}

Real Performance Numbers

MetricBeforeAfterImprovement
TTFB2.8s120ms95.7%
FCP4.2s0.8s81%
Orders/hour204502,150%
Conversion1.2%4.8%300%

The Monitoring Stack

You can’t scale what you don’t measure:

  • APM: New Relic
  • Uptime: Pingdom
  • Errors: Sentry
  • Analytics: Matomo (self-hosted)
  • Real User: custom JavaScript

Lessons Learned

  1. WooCommerce can scale - Stop believing it can’t
  2. Infrastructure matters - Spend money on hosting
  3. Less is more - Kill unnecessary plugins
  4. Cache aggressively - But invalidate smart
  5. Monitor everything - Data drives decisions

The Money Part

Investment vs Return:

  • Development: $45K
  • Infrastructure: $14.4K/year
  • Revenue increase: $2.75M/month

Time to ROI: 2 weeks

When to NOT Use WooCommerce

Be honest about limitations:

  • Need 1M+ SKUs? Use Magento
  • B2B complexity? Consider BigCommerce
  • Subscription focus? Maybe Shopify
  • Marketplace? Custom build

But for 99% of e-commerce? WooCommerce scales fine.

Your Next Steps

  1. Audit your current setup
  2. Fix the obvious problems
  3. Upgrade infrastructure
  4. Optimize database
  5. Implement caching
  6. Monitor and iterate

Stop making excuses. Start scaling.

About the Author

The wpagency.xyz team has been building WordPress sites for years. We've seen it all, broken it all, and fixed it all. Now we share what actually works.

DON'T MISS THE NEXT ONE

Get our best WordPress insights delivered straight to your inbox. No spam, just value.

Back to Blog →