{"id":354927,"date":"2026-08-17T10:22:47","date_gmt":"2026-08-17T10:22:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sales-by-state-report-for-woocommerce\/"},"modified":"2026-08-17T10:22:17","modified_gmt":"2026-08-17T10:22:17","slug":"sales-by-state-report-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sales-by-state-report-for-woocommerce\/","author":11816692,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Sales by State Report for WooCommerce","header_author":"Rodolfo Melogli","header_description":"See a yearly breakdown of WooCommerce sales by state \/ county \/ province for a given country, filterable by order status.","assets_banners_color":"ddcc96","last_updated":"2026-08-17 10:22:17","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/salesbystate.com\/","header_plugin_uri":"https:\/\/salesbystate.com\/","header_author_uri":"https:\/\/businessbloomer.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"BusinessBloomer","date":"2026-08-17 10:22:17"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3650881,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3650881,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3650881,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3650881,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[232,16119,26410,276078,286],"plugin_category":[36,45],"plugin_contributors":[275526],"plugin_business_model":[],"class_list":["post-354927","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-sales-report","plugin_tags-sales-tax","plugin_tags-sales-by-state","plugin_tags-woocommerce","plugin_category-analytics","plugin_category-ecommerce","plugin_contributors-businessbloomer","plugin_committers-businessbloomer"],"banners":{"banner":"https:\/\/ps.w.org\/sales-by-state-report-for-woocommerce\/assets\/banner-772x250.png?rev=3650881","banner_2x":"https:\/\/ps.w.org\/sales-by-state-report-for-woocommerce\/assets\/banner-1544x500.png?rev=3650881","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sales-by-state-report-for-woocommerce\/assets\/icon-128x128.png?rev=3650881","icon_2x":"https:\/\/ps.w.org\/sales-by-state-report-for-woocommerce\/assets\/icon-256x256.png?rev=3650881","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Sales by State Report for WooCommerce adds a report showing net and gross sales grouped by state, county or province, for a chosen year and a chosen set of order statuses.<\/p>\n\n<p>With WooCommerce Analytics enabled the report appears under <strong>Analytics<\/strong>, alongside Revenue and Orders, drawn with the same components so it looks like a built-in report. With Analytics disabled it appears under <strong>WooCommerce<\/strong> instead, and looks the same there.<\/p>\n\n<p>It answers the question sales tax and territory planning actually ask: how much did each state buy in a given year, counting only the orders that matter.<\/p>\n\n<p>This plugin requires <a href=\"https:\/\/wordpress.org\/plugins\/woocommerce\/\">WooCommerce<\/a>.<\/p>\n\n<p>Documentation: <a href=\"https:\/\/salesbystate.com\/\">salesbystate.com<\/a><\/p>\n\n<h4>What the report shows<\/h4>\n\n<ul>\n<li>Net Sales and Gross Sales for every state in the selected country<\/li>\n<li>A summary of both figures across all states<\/li>\n<li>Sortable columns and paginated results<\/li>\n<li>States with no sales, shown as zero rather than hidden<\/li>\n<\/ul>\n\n<h4>Filters<\/h4>\n\n<ul>\n<li><strong>Country<\/strong> \u2014 any country WooCommerce defines states or provinces for. Defaults to the store's base country.<\/li>\n<li><strong>Year<\/strong> \u2014 a rolling list that starts ten years back and gains a year each January without dropping one. Defaults to the current year.<\/li>\n<li><strong>Order status<\/strong> \u2014 a checkbox list of WooCommerce order statuses. Defaults to Completed.<\/li>\n<\/ul>\n\n<h4>How the figures are calculated<\/h4>\n\n<p>Gross Sales is the order total. Net Sales is the order total minus tax and shipping. Both use the values WooCommerce stores on the order, so they reconcile with WooCommerce's own reporting.<\/p>\n\n<p>Refunds are not modelled as separate records. An order that has been fully refunded carries the Refunded status, so the status filter controls whether it is counted. A partial refund is not deducted from its order's total.<\/p>\n\n<h4>Performance<\/h4>\n\n<p>Sales for a whole year are answered by one indexed query that returns one row per state. The response size does not grow with the number of orders.<\/p>\n\n<h4>Data and privacy<\/h4>\n\n<p>The plugin creates one custom database table holding, per order: the order ID, order status, creation and payment dates, billing and shipping country and state codes, currency, and the order, tax, shipping and net totals. It stores no names, addresses, email addresses or any other personal data.<\/p>\n\n<p>Nothing is sent anywhere. The plugin makes no external HTTP requests, includes no third-party services, and collects no analytics or telemetry.<\/p>\n\n<p>Deleting the plugin removes the table and its options.<\/p>\n\n<h4>Compatibility<\/h4>\n\n<ul>\n<li>High-Performance Order Storage (HPOS)<\/li>\n<li>Cart and Checkout blocks<\/li>\n<li>WooCommerce Analytics \u2014 used for the menu location when enabled, never for the figures<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/sales-by-state-report-for-woocommerce<\/code>, or install it through the Plugins screen.<\/li>\n<li>Activate the plugin. WooCommerce must already be installed and active.<\/li>\n<li>Go to <strong>Analytics \u2192 Sales by State<\/strong>, or <strong>WooCommerce \u2192 Sales by State<\/strong> if Analytics is disabled.<\/li>\n<\/ol>\n\n<p>On a store that already has orders, those orders are read into the report table once. This starts on its own. If it has not finished when you open the report, a progress bar shows how far along it is.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"the%20report%20shows%20zeros%20but%20i%20have%20orders.\"><h3>The report shows zeros but I have orders.<\/h3><\/dt>\n<dd><p>Your existing orders are still being read into the report table. Open the report and the progress bar will show how far along it is. It continues on its own; you can leave the page.<\/p>\n\n<p>If the figures still look wrong once it has finished, rebuild from <strong>WooCommerce \u2192 Status \u2192 Tools \u2192 Sales by State: rebuild from scratch<\/strong>.<\/p><\/dd>\n<dt id=\"where%20does%20the%20report%20appear%3F\"><h3>Where does the report appear?<\/h3><\/dt>\n<dd><p>Under <strong>Analytics<\/strong> when WooCommerce Analytics is enabled, and under <strong>WooCommerce<\/strong> when it is not. The report itself is identical either way.<\/p><\/dd>\n<dt id=\"does%20this%20require%20woocommerce%20analytics%3F\"><h3>Does this require WooCommerce Analytics?<\/h3><\/dt>\n<dd><p>No. The figures come from a table this plugin maintains from order saves, never from the Analytics tables, so turning Analytics off changes only where the report sits in the menu.<\/p><\/dd>\n<dt id=\"which%20address%20does%20it%20group%20by%3F\"><h3>Which address does it group by?<\/h3><\/dt>\n<dd><p>The shipping address, falling back to the billing address for orders that have no shipping address, such as virtual-only orders.<\/p><\/dd>\n<dt id=\"are%20refunds%20deducted%3F\"><h3>Are refunds deducted?<\/h3><\/dt>\n<dd><p>A fully refunded order takes the Refunded status, so the status filter decides whether it counts. Partial refunds are not deducted from the order's total.<\/p><\/dd>\n<dt id=\"which%20date%20does%20the%20year%20filter%20use%3F\"><h3>Which date does the year filter use?<\/h3><\/dt>\n<dd><p>The date the order was paid, falling back to the date it was created for orders that were never paid.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20default%20order%20status%3F\"><h3>Can I change the default order status?<\/h3><\/dt>\n<dd><p>Yes, with the <code>sbsr_default_statuses<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20high-performance%20order%20storage%3F\"><h3>Does it work with High-Performance Order Storage?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares HPOS compatibility and reads orders from whichever storage is active.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20support%3F\"><h3>Where can I get support?<\/h3><\/dt>\n<dd><p>Use the <a href=\"https:\/\/wordpress.org\/support\/plugin\/sales-by-state-report-for-woocommerce\/\">WordPress.org support forum<\/a> for this plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"See a yearly breakdown of WooCommerce sales by state \/ county \/ province for a given country, filterable by order status.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/354927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=354927"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/businessbloomer"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=354927"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=354927"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=354927"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=354927"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=354927"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=354927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}