Got it! I’ll remove all em dashes and rephrase for clarity and consistency. Here’s your improved, web-ready version without any em dashes, rewritten for readability, SEO, and completeness.
WooCommerce Sales Reports Showing Zero for Orders: Causes and Solutions
If your WooCommerce sales reports are showing zero orders, zero items sold, or zero revenue even though you know customers are buying, you are not alone. Many WooCommerce store owners face this problem at some point. Fortunately, there are several known causes and practical fixes.
This guide explains the most common reasons why your sales reports might be showing zero and what you can do to resolve them.
Common Causes
1. Caching Problems
WooCommerce reports often rely on cached or preprocessed data. If caching plugins, server caching, or CDN caching are serving outdated content, reports can appear empty.
Fix: Clear all caches, including WordPress, CDN, and WooCommerce analytics caches.
2. Incorrect Date Range or Filters
If your report filters are set to a time frame with no orders, your dashboard will naturally show zero results.
Fix: Check the Analytics or Reports date picker. Try “Last 7 days” or “Last month” to ensure the right range. Also verify that the report counts orders by the correct parameter, such as “Date created” or “Date completed.”
3. Analytics or Reporting Feature Disabled
If WooCommerce Analytics is turned off, sales data may not be recorded.
Fix: Go to Analytics → Settings and make sure Analytics is enabled. Also check that “Completed” is included in “Actionable statuses.”
4. Database or Data Import Issues
WooCommerce stores sales data in tables such as wp_wc_order_stats. If those tables are empty or missing rows, reports will show zero.
Fix: Go to Analytics → Settings and click Import historical data.
5. Plugin or Theme Conflicts
Plugins that modify order data or add custom functionality can interfere with WooCommerce reporting.
Fix: Temporarily deactivate all plugins except WooCommerce and switch to a default WordPress theme such as Storefront. If the reports start working, reactivate your plugins one by one until the issue reappears.
6. Outdated Software Versions
Running old versions of WooCommerce or WordPress can cause data-processing issues due to changes in database structures.
Fix: Always keep WordPress, WooCommerce, and extensions up to date. Then rebuild analytics data.
7. Excluded Order Statuses
Reports only include orders in certain statuses, usually “Completed” or “Processing.” If all your orders are in “Pending” or “On hold,” analytics will show zero.
Fix: Review which statuses are counted in Analytics settings and include any relevant ones.
8. Background Tasks (Action Scheduler) Not Running
WooCommerce uses background processes to build reports. If these scheduled actions fail or get delayed, your analytics tables will not update.
Fix: Go to WooCommerce → Status → Scheduled Actions and check for pending or failed actions related to analytics. Process them manually if needed.

9. Site Migration or Domain Change
After migrating to a new domain or host, some data tables might not sync correctly.
Fix: Rebuild lookup tables and verify that database prefixes and permissions are consistent.
Step-by-Step Solutions
Step 1: Back Up Your Website
Before making changes, create a complete backup of your database and files.
Step 2: Clear All Caches
Use your caching plugin to purge caches. Then go to WooCommerce → Status → Tools → Clear Analytics Cache. If you use a CDN such as Cloudflare, purge it as well.

Step 3: Verify Report Filters
Set the date range to include recent sales. Check that the report is using the correct date type and that all relevant order statuses are included.
Step 4: Enable WooCommerce Analytics
Go to Analytics → Settings and ensure the Analytics module is turned on. If “Exclude admin” is checked, disable it so test orders from admin accounts appear in reports.

Step 5: Rebuild or Reimport Data
In Analytics → Settings , run “Import historical data.” Wait until background tasks finish processing.

Step 6: Test for Conflicts
Deactivate all plugins except WooCommerce. Switch to a default theme. Check reports again. If data appears, a plugin or theme is causing the problem. Reactivate them one by one to find the culprit.
Step 7: Inspect Database Tables
Use phpMyAdmin or your host’s database viewer to check that wp_wc_order_stats, wp_wc_order_product_lookup, and wp_wc_customer_lookup contain order records. If they are empty, data import may have failed.
Step 8: Update Everything
Update WordPress, WooCommerce, your theme, and extensions. After updating, clear caches and rebuild reports again.
Step 9: Check Background Tasks
Review WooCommerce → Status → Scheduled Actions for failed or pending tasks. If many tasks are stuck, your cron jobs might not be running. Contact your hosting provider for help.

Step 10: Contact Support
If none of these steps work, contact your hosting support or WooCommerce support. Include your System Status Report, recent error logs, and screenshots of the reports page.
Why This Issue Happens
Several real-world cases show consistent patterns behind this issue. Upgrading WooCommerce app can sometimes reset the “actionable statuses,” which causes existing orders to be excluded from reports. Migrations and database imports may leave analytics tables empty if data does not sync correctly. Plugin conflicts, particularly those related to caching or order management, often block the reporting process. Background tasks can also fail silently when server cron jobs are disabled, preventing analytics from updating. In addition, many store owners still use the older “Reports” section instead of the newer “Analytics” dashboard, which leads to confusion because the legacy reports are now deprecated.
Quick Checklist
- Create a site backup
- Clear all caches
- Verify date range and filters
- Confirm Analytics is enabled
- Include correct order statuses
- Rebuild or import data
- Check for plugin or theme conflicts
- Verify database tables
- Update WooCommerce and WordPress
- Review background tasks
- Contact support if the issue persists