{"id":366198,"date":"2026-09-09T11:40:17","date_gmt":"2026-09-09T11:40:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sales-by-state-report-for-surecart\/"},"modified":"2026-09-09T12:05:48","modified_gmt":"2026-09-09T12:05:48","slug":"sales-by-state-report-for-surecart","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sales-by-state-report-for-surecart\/","author":11816692,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Sales by State Report for SureCart","header_author":"Rodolfo Melogli","header_description":"See a yearly breakdown of SureCart sales by state \/ county \/ province for a given country, filterable by order status.","assets_banners_color":"ffe8a4","last_updated":"2026-09-09 12:05:48","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/salesbystate.com\/","header_plugin_uri":"https:\/\/salesbystate.com\/","header_author_uri":"https:\/\/www.businessbloomer.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":69,"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-09-09 11:40:09","revision":3688222},"1.0.1":{"tag":"1.0.1","author":"BusinessBloomer","date":"2026-09-09 12:05:48","revision":3688254}},"upgrade_notice":{"1.0.1":"<p>Code style cleanup, no functional change.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3688222,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3688222,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3688278,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3688278,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[232,16119,26410,276078,218637],"plugin_category":[36],"plugin_contributors":[275526],"plugin_business_model":[],"class_list":["post-366198","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-sales-report","plugin_tags-sales-tax","plugin_tags-sales-by-state","plugin_tags-surecart","plugin_category-analytics","plugin_contributors-businessbloomer","plugin_committers-businessbloomer"],"banners":{"banner":"https:\/\/ps.w.org\/sales-by-state-report-for-surecart\/assets\/banner-772x250.png?rev=3688278","banner_2x":"https:\/\/ps.w.org\/sales-by-state-report-for-surecart\/assets\/banner-1544x500.png?rev=3688278","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sales-by-state-report-for-surecart\/assets\/icon-128x128.png?rev=3688222","icon_2x":"https:\/\/ps.w.org\/sales-by-state-report-for-surecart\/assets\/icon-256x256.png?rev=3688222","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Sales by State Report for SureCart 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>It appears under <strong>SureCart \u2192 Sales by State<\/strong>.<\/p>\n\n<p>Use it when you need to know how much each state bought in a given year, counting only the order statuses that matter for sales tax or territory planning.<\/p>\n\n<p>This plugin requires <a href=\"https:\/\/wordpress.org\/plugins\/surecart\/\">SureCart<\/a>. There are no settings screens to configure. After you activate the plugin, open the report and choose a country, year, and order statuses.<\/p>\n\n<p>Documentation: <a href=\"https:\/\/salesbystate.com\/\">salesbystate.com<\/a><\/p>\n\n<h4>How to use<\/h4>\n\n<ol>\n<li>Install and activate SureCart, then install and activate this plugin.<\/li>\n<li>Go to <strong>SureCart \u2192 Sales by State<\/strong>.<\/li>\n<li>Choose a <strong>country<\/strong>, a <strong>year<\/strong>, and the <strong>order statuses<\/strong> that should count.<\/li>\n<li>The table lists Net Sales and Gross Sales for every state in that country.<\/li>\n<\/ol>\n\n<p>If the store already has orders, the plugin imports them from the SureCart API into its report table in the background. A progress bar appears until that finishes. You can leave the page; the import continues on its own.<\/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 United States, Canada, and United Kingdom. Defaults to the store's tax address country when that country has states, otherwise the United States.<\/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 SureCart order statuses. Defaults to Paid.<\/li>\n<\/ul>\n\n<h4>How the figures are calculated<\/h4>\n\n<p>Gross Sales is the checkout total. Net Sales is the checkout total minus tax and shipping. Both use the values SureCart stores on the checkout (converted from cents).<\/p>\n\n<p>Refunds are not modelled as separate records. An order that has been fully refunded is controlled by the status filter. 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<p>SureCart keeps orders on its API, not in a local WordPress table. Existing orders are imported from the SureCart API into the report table once. After that import, opening or changing the report filters does not call the API.<\/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>During the one-off import, and when a checkout is confirmed, the plugin reads order, checkout and address data from the SureCart API. It does not send data to any other service, includes no third-party analytics, and collects no telemetry.<\/p>\n\n<p>Deleting the plugin removes the table and its options.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/sales-by-state-report-for-surecart<\/code>, or install it through the Plugins screen.<\/li>\n<li>Activate the plugin. SureCart must already be installed and active.<\/li>\n<li>Go to <strong>SureCart \u2192 Sales by State<\/strong>.<\/li>\n<\/ol>\n\n<p>On a store that already has orders, those orders are read from the SureCart API 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 only Paid is selected, tick any other statuses that should count.<\/p>\n\n<p>To confirm how much of the import has finished, open <strong>Tools \u2192 Site Health \u2192 Info \u2192 Sales by State Report for SureCart<\/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>SureCart \u2192 Sales by State<\/strong>. Shop managers who can view SureCart orders can open it.<\/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 digital-only orders.<\/p><\/dd>\n<dt id=\"are%20refunds%20deducted%3F\"><h3>Are refunds deducted?<\/h3><\/dt>\n<dd><p>The status filter decides whether an order 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 invoice issue date when the checkout belongs to an invoice, then the date the checkout was paid, then the date the order was created.<\/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>sbssc_default_statuses<\/code> filter.<\/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-surecart\/\">WordPress.org support forum<\/a> for this plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Code style cleanup, no functional change. Fixed WP.org listing banner.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"See a yearly breakdown of SureCart 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\/366198","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=366198"}],"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=366198"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=366198"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=366198"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=366198"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=366198"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=366198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}