• I’ve recently encountered some large discrepancies in the reported sales totals and order totals delivered by analytics and by woocommerce. I’ve spent some time cross referencing our actual payments received with analytics exports and can now verify that these order counts and sales counts are accurate at least.

    However the Summaries that are provided on some of the analytics tabs are not correct. Specifically the summaries on the “orders” tab are correct, but the “products” tab says I have two phantom orders and additional revenue that I do not have.
    Here are some screenshots:

    http://kailashblades.com/wp-content/uploads/2026/03/Screenshot-2026-03-19-214346-scaled.png

    http://kailashblades.com/wp-content/uploads/2026/03/Screenshot-2026-03-19-214403-scaled.png

    I feel that potentially the products summary tab is interpreting refund actions as new orders and adding the refunded values to the total rather than subtracting them. EG $200 order is refunded in full. The tab counts this as $400 and 2 orders rather than $200 and 1 order or $0 and 0 orders. Alternatively it could be an issue with it being stuck on “date created” while the rest of the analytics tabs and exports are going by “date paid”

    For now I can just run from the exports and cleanup manually but it’s less than ideal and will confuse others.

    This brings me to 2 additional issues:

    Firstly in all analytics tabs and exports that I can tell if an order if fully refunded (by changing the order status) then when calculating net sales it deducts the cost of shipping. It assumes that the order was shipped, hit the customer and was then refunded with the shipping at a loss. Example- an order has a total of 252 with a net sales of 205 and 47 shipping. Analytics tracks your net sales as 205 but if you fully refund it tracks that as net sales deduction of 252 rather than 205 as it should. A lot of customer refunds are change of mind and no shipping fees have been paid when they are refunded so this throws out analytics majorly. A simple fix here is to swap this behaviour to only deduce net sales on full refund rather than net revenue form net sales. A more complicated fix would be to update analytics so that this action only occurs when an order is moved from “shipped” to “refunded” and when moved from other statuses to refunded it assumes that there are no losses incurred from the refund.

    The next issue causes issues in analytics but its source is elsewhere. Every now and again I encounter an order that needs to be moved out of paid and back into pending payment- payment issues, things falling through etc. Similarly We place orders “on hold” while they await payment via bank transfer. Both of these events result in the paid date being set irreversibly (without manual database editing). This is a bit insane. It means that orders that are paid for in february show up in january analytics because they checked out in january first even if it was unsuccessful. A fix could be updating analytics behaviour when using “date paid” to run from when the order was most recently moved into processing or shipped if it was never in processing. Potentially there are setting within woocommerce that change this behaviour- I can’t find them though.

    Take care,
    Andrew

    System report is as follows:

    ` WordPress Environment</p> <p>WordPress address (URL): http://kailashblades.com<br>Site address (URL): http://kailashblades.com<br>WC Version: 10.2.2<br>Legacy REST API Package Version: ✔ 1.0.5<br>Action Scheduler Version: ✔ 3.9.3<br>Log Directory Writable: ✔<br>WP Version: ❌ 6.9.1 – There is a newer version of WordPress available (6.9.4)<br>WP Multisite: –<br>WP Memory Limit: 768 MB<br>WP Debug Mode: ✔<br>WP Cron: –<br>Language: en_US<br>External object cache: – Server Environment</p> <p>Server Info: Apache<br>Server Architecture: Linux 6.6.63-MCIclouder663-c9 x86_64<br>PHP Version: 8.4.19<br>PHP Post Max Size: 256 MB<br>PHP Time Limit: 3600<br>PHP Max Input Vars: 3000<br>cURL Version: 8.15.0<br>OpenSSL/3.5.4</p> <p>SUHOSIN Installed: –<br>MySQL Version: 8.4.6-6<br>Max Upload Size: 256 MB<br>Default Timezone is UTC: ✔<br>fsockopen/cURL: ✔<br>SoapClient: ✔<br>DOMDocument: ✔<br>GZip: ✔<br>Multibyte String: ✔<br>Remote Post: ✔<br>Remote Get: ✔ Database</p> <p>WC Database Version: 10.2.2<br>WC Database Prefix: wp_<br>Total Database Size: 394.95MB<br>Database Data Size: 305.76MB<br>Database Index Size: 89.19MB<br>wp_woocommerce_sessions: Data: 32.01MB + Index: 0.12MB + Engine MyISAM<br>wp_woocommerce_api_keys: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_woocommerce_attribute_taxonomies: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_woocommerce_downloadable_product_permissions: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_woocommerce_order_items: Data: 0.76MB + Index: 0.46MB + Engine MyISAM<br>wp_woocommerce_order_itemmeta: Data: 86.74MB + Index: 5.37MB + Engine MyISAM<br>wp_woocommerce_tax_rates: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_woocommerce_tax_rate_locations: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_woocommerce_shipping_zones: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_woocommerce_shipping_zone_locations: Data: 0.68MB + Index: 1.02MB + Engine MyISAM<br>wp_woocommerce_shipping_zone_methods: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_woocommerce_payment_tokens: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_woocommerce_payment_tokenmeta: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_woocommerce_log: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_actionscheduler_actions: Data: 1.03MB + Index: 0.56MB + Engine InnoDB<br>wp_actionscheduler_claims: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_actionscheduler_groups: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_actionscheduler_logs: Data: 0.36MB + Index: 0.30MB + Engine InnoDB<br>wp_aioseo_cache: Data: 0.14MB + Index: 0.03MB + Engine InnoDB<br>wp_aioseo_crawl_cleanup_blocked_args: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_aioseo_crawl_cleanup_logs: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_aioseo_notifications: Data: 1.52MB + Index: 0.06MB + Engine InnoDB<br>wp_aioseo_posts: Data: 1.52MB + Index: 0.09MB + Engine InnoDB<br>wp_aioseo_writing_assistant_keywords: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_aioseo_writing_assistant_posts: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_bv_activities_store: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_commentmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_comments: Data: 4.52MB + Index: 3.45MB + Engine InnoDB<br>wp_css_js_manager: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_ewd_uwpm_email_links_clicked_events: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_ewd_uwpm_email_only_users: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_ewd_uwpm_email_open_events: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_ewd_uwpm_email_send_events: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_ewwwio_images: Data: 0.53MB + Index: 0.27MB + Engine MyISAM<br>wp_links: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_mailchimp_carts: Data: 4.52MB + Index: 0.00MB + Engine InnoDB<br>wp_mailchimp_jobs: Data: 0.05MB + Index: 0.00MB + Engine InnoDB<br>wp_mgmlp_folders: Data: 0.01MB + Index: 0.01MB + Engine MyISAM<br>wp_options: Data: 20.39MB + Index: 4.30MB + Engine InnoDB<br>wp_pmxe_exports: Data: 0.02MB + Index: 0.00MB + Engine MyISAM<br>wp_pmxe_google_cats: Data: 0.26MB + Index: 0.05MB + Engine MyISAM<br>wp_pmxe_posts: Data: 0.03MB + Index: 0.01MB + Engine MyISAM<br>wp_pmxe_templates: Data: 0.03MB + Index: 0.00MB + Engine MyISAM<br>wp_pmxi_files: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_pmxi_hash: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_pmxi_history: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_pmxi_images: Data: 0.01MB + Index: 0.01MB + Engine MyISAM<br>wp_pmxi_imports: Data: 0.06MB + Index: 0.00MB + Engine MyISAM<br>wp_pmxi_posts: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_pmxi_templates: Data: 0.02MB + Index: 0.00MB + Engine MyISAM<br>wp_postmeta: Data: 62.56MB + Index: 28.09MB + Engine InnoDB<br>wp_posts: Data: 6.39MB + Index: 2.34MB + Engine InnoDB<br>wp_redirection_404: Data: 63.59MB + Index: 36.25MB + Engine InnoDB<br>wp_redirection_groups: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_redirection_items: Data: 0.02MB + Index: 0.09MB + Engine InnoDB<br>wp_redirection_logs: Data: 0.08MB + Index: 0.05MB + Engine InnoDB<br>wp_sbi_feed_caches: Data: 3.02MB + Index: 0.02MB + Engine InnoDB<br>wp_sbi_feeds: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_sbi_instagram_feed_locator: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_sbi_instagram_feeds_posts: Data: 0.05MB + Index: 0.03MB + Engine InnoDB<br>wp_sbi_instagram_posts: Data: 1.36MB + Index: 0.00MB + Engine InnoDB<br>wp_sbi_sources: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_sgs_log_events: Data: 3.52MB + Index: 2.52MB + Engine InnoDB<br>wp_sgs_log_visitors: Data: 0.08MB + Index: 0.09MB + Engine InnoDB<br>wp_shopmagic_automation_outcome: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_shopmagic_automation_outcome_logs: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_shopmagic_guest: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_shopmagic_guest_meta: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_shopmagic_marketing_lists: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_shopmagic_optin_email: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_shopmagic_tracked_emails: Data: 0.02MB + Index: 0.05MB + Engine InnoDB<br>wp_shopmagic_tracked_emails_clicks: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_snippets: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_term_relationships: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_term_taxonomy: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_termmeta: Data: 0.00MB + Index: 0.01MB + Engine MyISAM<br>wp_terms: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_tm_taskmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_tm_tasks: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_usermeta: Data: 1.52MB + Index: 0.56MB + Engine InnoDB<br>wp_users: Data: 0.05MB + Index: 0.05MB + Engine InnoDB<br>wp_wc_admin_note_actions: Data: 0.08MB + Index: 0.02MB + Engine InnoDB<br>wp_wc_admin_notes: Data: 0.13MB + Index: 0.00MB + Engine InnoDB<br>wp_wc_category_lookup: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_wc_customer_lookup: Data: 0.41MB + Index: 0.34MB + Engine InnoDB<br>wp_wc_download_log: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_wc_order_coupon_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_wc_order_product_lookup: Data: 1.52MB + Index: 1.22MB + Engine InnoDB<br>wp_wc_order_stats: Data: 1.52MB + Index: 0.56MB + Engine InnoDB<br>wp_wc_order_tax_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB<br>wp_wc_product_attributes_lookup: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_wc_product_download_directories: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_wc_product_meta_lookup: Data: 0.02MB + Index: 0.11MB + Engine InnoDB<br>wp_wc_rate_limits: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_wc_reserved_stock: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_wc_tax_rate_classes: Data: 0.02MB + Index: 0.02MB + Engine InnoDB<br>wp_wc_webhooks: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_wcpdf_invoice_number: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_wcpdf_packing_slip_number: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_wfpklist_template_data: Data: 0.02MB + Index: 0.00MB + Engine InnoDB<br>wp_woo_shippment_provider: Data: 0.14MB + Index: 0.00MB + Engine InnoDB<br>wp_wpmcleaner: Data: 0.00MB + Index: 0.00MB + Engine MyISAM<br>wp_wpml_mails: Data: 3.43MB + Index: 0.01MB + Engine MyISAM<br>wp_wt_iew_action_history: Data: 0.16MB + Index: 0.00MB + Engine InnoDB<br>wp_wt_iew_mapping_template: Data: 0.02MB + Index: 0.00MB + Engine InnoDB Post Type Counts</p> <p>attachment: 588<br>custom_css: 2<br>emailoctopus_form: 5<br>fl-builder-history: 16<br>fl-builder-template: 39<br>giftcard: 4<br>mc4wp-form: 1<br>mgmlp_media_folder: 87<br>nav_menu_item: 73<br>page: 20<br>pi_critical_css: 1<br>popup: 5<br>popup_theme: 8<br>post: 3<br>product: 45<br>product_variation: 55<br>revision: 371<br>shop_coupon: 5<br>shop_order: 6736<br>shop_order_refund: 59<br>sl-insta-account: 1<br>sl-insta-feed: 1<br>sl-insta-media: 1150<br>tm_global_cp: 1<br>tt_font_control: 4<br>wp_block: 1<br>wp_global_styles: 2<br>wp_navigation: 3<br>wp_template: 11<br>wp_template_part: 4<br>wpcf7_contact_form: 1 Security</p> <p>Secure connection (HTTPS): ✔<br>Hide errors from visitors: ✔ Active Plugins (25)</p> <p>Beaver Builder Plugin (Lite Version): by The Beaver Builder Team – 2.9.0.5<br>Contact Form 7: by Rock Lobster Inc. – 6.1.4<br>Fluent Snippets: by Fluent Snippets – 10.51<br>EmailOctopus: by EmailOctopus – 3.1.7<br>Add Himalayan Bank Payment In WooCommerce: by Sanjeev Aryal – 2.2.3<br>Smash Balloon Instagram Feed: by Smash Balloon – 6.10.0<br>jQuery Updater: by Ramoonus – 3.7.1.3<br>Max Mega Menu: by megamenu.com – 3.5<br>Order Export & Order Import for WooCommerce: by WebToffee – 2.6.9<br>Popup Maker: by Popup Maker – 1.21.5<br>Redux Framework: by Team Redux – 4.5.10<br>Regenerate Thumbnails: by Alex Mills (Viper007Bond) – 3.1.6<br>Security Optimizer: by SiteGround – 1.5.9<br>Smart Variations Images & Swatches for WooCommerce: by David Rosendo – 5.2.16<br>SiteOrigin CSS: by SiteOrigin – 1.6.5<br>SVG Block: by Phi Phan – 1.2.3<br>WooCommerce Table Rate Shipping by Mangohour: by mangohour – 1.2.1<br>Spectra: by Brainstorm Force – 2.19.9<br>CTX Feed: by WebAppick – 6.5.69<br>Advanced Shipment Tracking for WooCommerce: by zorem – 3.8.9<br>Ultimate Gift Cards For WooCommerce: by WP Swings – 3.2.4<br>WooCommerce Legacy REST API: by WooCommerce – 1.0.5<br>PDF Invoices & Packing Slips for WooCommerce: by WP Overnight – 4.6.0<br>Extra Product Options & Add-Ons for WooCommerce: by ThemeComplete – 7.5.2<br>WooCommerce: by Automattic – 10.2.2 (update to version 10.6.1 is available) Inactive Plugins (21)</p> <p>Akismet Anti-spam: Spam Protection: by Automattic – Anti-spam Team – 5.4<br>All in One SEO: by All in One SEO Team – 4.8.4.1<br>Asset CleanUp: Page Speed Booster: by Gabe Livan – 1.4.0.3<br>BackWPup: by BackWPup – WordPress Backup & Restore Plugin – 5.2.3<br>Blackhole for Bad Bots: by Jeff Starr – 3.7.5<br>CSS JS Manager, Async JavaScript, Defer Render Blocking CSS: by Pi Websolution – 2.4.49.49<br>LCP Booster for WooCommerce: by Slobodan Manic – 1.0.0<br>Mailchimp for WooCommerce: by Mailchimp – 5.4<br>MC4WP: Mailchimp for WordPress: by ibericode – 4.10.5<br>Redirection: by John Godley – 5.6.1<br>Simple Maintenance: by naa986 – 1.0.4<br>Smart Variations Images & Swatches for WooCommerce: by David Rosendo – 5.2.18<br>Speed Optimizer: by SiteGround – 7.7.2<br>Volumetric Shipping For Woocommerce: by SunArc – 1.0.10<br>WC – APG Weight Shipping: by Art Project Group – 3.4.2<br>WC Speed Repair: by WP Fix It – WordPress Experts – 4.5<br>WooCommerce TM Extra Product Options Weight addon: by themecomplete – 1.0.4<br>WP All Export Pro: by Soflyy – 1.5.1<br>WP All Import: by Soflyy – 4.0.0<br>WP All Import – WooCommerce Add-On Pro: by Soflyy – 3.2.4<br>WP All Import Pro: by Soflyy – 4.5.5 Settings</p> <p>Legacy API Enabled: ✔<br>Force SSL: –<br>Currency: USD ($)<br>Currency Position: left<br>Thousand Separator: ,<br>Decimal Separator: .<br>Number of Decimals: 2<br>Taxonomies: Product Types: external (external)<br>grouped (grouped)<br>simple (simple)<br>variable (variable)<br>wgm_gift_card (wgm_gift_card)</p> <p>Taxonomies: Product Visibility: exclude-from-catalog (exclude-from-catalog)<br>exclude-from-search (exclude-from-search)<br>featured (featured)<br>outofstock (outofstock)<br>rated-1 (rated-1)<br>rated-2 (rated-2)<br>rated-3 (rated-3)<br>rated-4 (rated-4)<br>rated-5 (rated-5)</p> <p>Connected to WooCommerce.com: –<br>Enforce Approved Product Download Directories: –<br>HPOS feature enabled: –<br>Order datastore: WC_Order_Data_Store_CPT<br>HPOS data sync enabled: –<br>Enabled Features: analytics<br>marketplace<br>order_attribution<br>site_visibility_badge<br>remote_logging<br>email_improvements<br>blueprint<br>point_of_sale Logging</p> <p>Enabled: ✔<br>Handler: Automattic\WooCommerce\Internal\Admin\Logging\LogHandlerFileV2<br>Retention period: 30 days<br>Level threshold: –<br>Log directory size: 6 MB WC Pages</p> <p>Shop base: ❌ Page not set<br>Cart: #177 – /cart/ – Contains the woocommerce/cart block<br>Checkout: #178 – /checkout/ – Contains the [woocommerce_checkout] shortcode<br>My account: ❌ Page ID is set<br>but the page does not exist</p> <p>Terms and conditions: #3775 – /modern/terms-and-conditions/ Theme</p> <p>Name: Spectra One<br>Version: 1.1.7 (update to version 1.1.8 is available)<br>Author URL: https://brainstormforce.com/<br>Child Theme: ❌ – If you are modifying WooCommerce on a parent theme that you did not build personally we recommend using a child theme. See: How to create a child theme<br>Theme type: Block theme<br>WooCommerce Support: ❌ Not declared Templates</p> <p>Overrides: spectra-one/woocommerce/emails/customer-invoice.php<br>spectra-one/woocommerce/emails/customer-on-hold-order.php<br>/home/customer/www/kailashblades.com/public_html/wp-content/plugins/woocommerce/templates/block-notices/error.php<br>/home/customer/www/kailashblades.com/public_html/wp-content/plugins/woocommerce/templates/block-notices/notice.php version 9.5.0 is out of date. The core version is 10.2.0<br>/home/customer/www/kailashblades.com/public_html/wp-content/plugins/woocommerce/templates/block-notices/success.php</p> <p>Outdated Templates: ❌</p> <pre class=”wp-block-code”><code> Learn how to update | Clear system status theme info cache</code></pre> <p>Admin</p> <p>Enabled Features: activity-panels<br>analytics<br>product-block-editor<br>coupons<br>core-profiler<br>customize-store<br>customer-effort-score-tracks<br>import-products-task<br>experimental-fashion-sample-products<br>shipping-smart-defaults<br>shipping-setting-tour<br>homescreen<br>marketing<br>mobile-app-banner<br>onboarding<br>onboarding-tasks<br>pattern-toolkit-full-composability<br>product-custom-fields<br>remote-inbox-notifications<br>remote-free-extensions<br>payment-gateway-suggestions<br>printful<br>shipping-label-banner<br>subscriptions<br>store-alerts<br>transient-notices<br>woo-mobile-welcome<br>wc-pay-promotion<br>wc-pay-welcome-page<br>launch-your-store</p> <p>Disabled Features: product-data-views<br>experimental-blocks<br>experimental-iapi-mini-cart<br>experimental-iapi-runtime<br>coming-soon-newsletter-template<br>minified-js<br>product-pre-publish-modal<br>settings<br>async-product-editor-category-field<br>product-editor-template-system<br>use-wp-horizon<br>experimental-wc-rest-api</p> <p>Daily Cron: ✔ Next scheduled: 2025-06-30 13:51:10 +10:00<br>Options: ✔<br>Notes: 225<br>Onboarding: completed Action Scheduler</p> <p>Canceled: 22<br>Oldest: 2026-03-19 21:29:20 +1100<br>Newest: 2026-03-19 21:29:20 +1100</p> <p>Complete: 2,598<br>Oldest: 2026-02-17 01:34:59 +1100<br>Newest: 2026-03-19 21:31:21 +1100</p> <p>Failed: 27<br>Oldest: 2025-04-12 14:34:59 +1000<br>Newest: 2025-10-27 23:34:58 +1100</p> <p>Pending: 10<br>Oldest: 2026-03-20 00:32:33 +1100<br>Newest: 2026-03-30 22:24:54 +1100 Status report information</p> <p>Generated at: 2026-03-19 22:20:02 +11:00<br>`



Viewing 10 replies - 1 through 10 (of 10 total)
  • Plugin Support shahzeen(woo-hc)

    (@shahzeenfarooq)

    Hi there!

    Thank you for sharing the detailed information and screenshots. We completely understand your concern regarding the incorrect net sales reported in the Products tab. Our developers are already aware of this issue and are actively working on a fix. You can follow the progress here:

    Regarding your second issue:

    Could you please confirm whether the orders for which you changed the status to Pending Payment in WooCommerce were appearing as Paid when you made the change?

    Also, could you please provide more information about the payment issue that occurred, which required you to manually change the order status?

    By defualt, you can choose which date field Analytics should use for revenue and order reports: “Date created, Date paid, or Date completed,”.You can change that by going to wordpress dashboard -> Analytics -> Settings.

    I hope this helps.

    Thread Starter fugglesby

    (@fugglesby)

    Hey there- thanks very much for the reply 🙂
    Glad to hear you have got eyes on this bug already.

    The second issue is regarding the way that analytics immediately assumes that refunded shipping costs are a loss and deducts the net revenue from the net sales. it isn’t related to order status change.

    Yes- the orders were in status “processing” which is a paid status.
    Every now and again we receive a phantom payment error in a plugin that we use for our payment gateway. We are a Nepali company working so have very limited legal options for ecommerce aside from a few janky plugins. These phantom payment errors themselves are not caused by woocommerce, but woocommerce rigidly defining a payment date and then not allowing that to be edited is a woocommerce issue.

    I’m aware of this analytics settings and have it set as date paid- this is the most applicable for finances.

    Plugin Support Frank Remmy (woo-hc)

    (@frankremmy)

    Hi @fugglesby,

    Thank you for the clarification and for laying out both issues so clearly. It really helps us make sure we’re addressing the right things!

    I’ve shared the refunded shipping deduction from net sales issue internally with our team so we can look into it further. We’ll circle back once we have an update for you on that one.

    In the meantime, hang tight and thanks for your patience!

    Plugin Support Frank Remmy (woo-hc)

    (@frankremmy)

    Hi @fugglesby,

    Thanks so much for your patience.

    To make sure we’re seeing exactly what you’re seeing, could you share full screenshots of:

    • The affected order where the shipping cost was refunded,
    • What Analytics is showing for that same order,
    • And, if possible, the payment‑method error you mentioned. If that error is related, it would be very helpful for us to review it as well.

    The initial screenshots were a bit hard to interpret, so having full‑frame captures will give us a clearer picture. Be sure to redact any sensitive information.

    For the error logs, feel free to upload them on pastebin.com and just share the link here instead of pasting everything into the editor.

    Looking forward to your response so we can continue investigating this.

    Thread Starter fugglesby

    (@fugglesby)

    The initial screenshots where in regards to the product analytics error. There weren’t any screenshots regarding the net revenue/net sales refund error. Here is a screenshot showing what that info looks like in a downloaded report.

    Here is a screenshot of the order itself.

    Note that the sales value is 205 but when refunded it shows up as a net sales value change of -252 (including shipping) rather than -205. All our refunds are manual and performed through the orders page. It is possible that analytics shows different behaviour for orders that have status moved into refunded (and leave wordpress to figure it out) vs have refunds added to the order and then have the status moved into refunded.

    The payment method error is not related. The plugin is Add Himalayan Bank Payment In WooCommerce by Sanjeev Aryal. It’s just janky nepalese e-finance stuff.

    Some further info on the “move order back into processing but order date remains fixed” error. Other people have encountered the issue and have discussed solutions to it. I have added this PHP here to my functions.php and that has fixed the issue. I feel that this should be the default behaviour for woocommerce.


    Plugin Support Frank Remmy (woo-hc)

    (@frankremmy)

    Thanks @fugglesby.

    I’ve shared it with my team and will circle back once we have an update.

    Hang in there.

    Thread Starter fugglesby

    (@fugglesby)

    As I work my way deeper and deeper into cross referencing these reports I keep stumbling across new bugs in analytics.
    I am cross referencing our actual received payments from bank accounts both with the analytics export you get from the orders tab and an actual export from woocommerce orders itself.

    The net revenue for all 3 is correct in all 3 of these sheets.

    The net sales/ line item costs shown in the actual order export unsurprisingly matches up with the information shown in the order page itself.
    However analytics order export does not! There are seemingly random rounding events all throughout the sheet . The net revenue though is correct which means that an inverse rounding error is happening somewhere else- likely in shipping. Not all values are being rounded. Some are being left with the 0.5. Some are being changed from a dollar exactly to 1.50. Super strange.

    Here are 4 screenshots showing the same order with various totals in these different locations:
    Woocommerce orders backend
    Woocommerce orders export
    Woocommerce analytics orders export (in error)
    Woocommerce analytics orders page (in error) This shows 15176 as an example of a value that SHOULD have $61 as the correct value but is being given 50 cents- presumably from shipping.

    At this stage I cannot trust analytics at all and will be manually exporting orders monthly and resubmitting finance documents for the entire financial year. The potential implications of these analytics bugs are serious in terms of tax compliance and employee pay calculations and these bugs should be taken as seriously as possible.

    Plugin Support Frank Remmy (woo-hc)

    (@frankremmy)

    Hi @fugglesby,

    Thanks again for the additional details. Before we dig deeper into the discrepancy, it would really help to fully understand the exact flow you’re taking when placing the order and issuing the refund.

    At this stage, we’re trying to confirm what is “as designed” versus what might be unexpected behavior, so getting clarity on your steps will ensure we’re troubleshooting in the right direction.

    A quick clarification about shipping labels

    The purchase or refund of a shipping label is a completely separate flow from the order → refund → analytics process. Shipping labels are operational costs and do not affect Analytics totals. So even if a label is refunded, it should not change your revenue or refund numbers in Analytics.

    Just to make sure we’re aligned, the expected core flow is:

    1. Order placed
    2. Order paid (including shipping cost)
    3. Order moves to Processing
    4. Analytics records the sale
    5. Merchant issues a refund
    6. Analytics records the refund and deducts it from totals

    This happens regardless of any shipping label purchase. To move forward, could you walk us through your exact steps? Specifically:

    • What was the order status before you issued the refund
    • Whether you refunded the full amount or a partial amount
    • Whether the refund included shipping charges
    • Whether you also refunded a shipping label, and if so, how
    • What you expected Analytics to show
    • What Analytics actually showed

    Once we have that, we can determine whether the behavior matches WooCommerce’s design or if something is genuinely off.

    Looking forward to your response.

    Thread Starter fugglesby

    (@fugglesby)

    Thank you for the reply. I have not discussed shipping labels at all in these prior messages and am not using them in our operations at all.

    My flow matches your expected core flow exactly.

    I will answer your questions on the exact steps with specific reference to the example order 15190 that was provided in these prior screenshots.

    Here is a screenshot showing what that info looks like in a downloaded report.

    Here is a screenshot of the order itself.

    • What was the order status before you issued the refund Processing
    • Whether you refunded the full amount or a partial amount I processed this refund by moving the order status from processing to refunded. I moved the funds manually from my bank back to the customers account. The amount refunded is 100% of the payment.
    • Whether the refund included shipping charges Yes
    • Whether you also refunded a shipping label, and if so, how I do not use shipping labels.
    • What you expected Analytics to show Net sales gain of 204. On refund a Net sales refund of 204
    • What Analytics actually showed Net sales gain of 205 (weird rounding error described in last message). Net sales refund of 252 (this amount corresponds to net sales plus shipping AKA net revenue)
    Thread Starter fugglesby

    (@fugglesby)

    I have been going through things further and have confirmed the refund totals issue stems from refunding it by moving the status over to refunded. This just dumps a -100% of total revenue at the bottom of the order and analytics then deducts this entire amount from net sales. Incorrect behaviour.

    If instead I go into the totals at the bottom and enter a refund of the full shipping amount in the shipping tab and then the Net Payment amount in the “amount to refund” tab then analytics displays the correct behaviour of showing a net sales deduction that is 100% of net sales rather than 100% of net revenue. It needs the shipping box filled in order to make the correct calculation here. I have verified this behaviour for both cases.

    Fixes:
    -analytics logic side: You could place some logic into the calculator to ensure that the total amount deducted from net sales for a specific order never exceeds 100% of the net sales taken in for that order. It seems that net revenue is already calculated separately so maybe no issues there? Perhaps some users would prefer to have this reporting take into account lost shipping costs when assessing net sales but I don’t think “net sales’ is the right place for that to go. As you have said this is an operational cost.

    -woocommerce side: You could change it so that the default behaviour when moving an order status from processing to refunded is to fill out the shipping refund tab automatically. This would ensure analytics behaves correctly and seems a more robust approach anyway. You could keep the current behaviour of not filling the shipping refund form when moving status from shipped to refunded as this money would presumably be spent at this point and it would maintain the current behaviour for those that find it useful. I think the usefulness is questionable though and the capability for confusion is high.

    • This reply was modified 20 hours, 6 minutes ago by fugglesby.
Viewing 10 replies - 1 through 10 (of 10 total)

You must be logged in to reply to this topic.