Naqshino Sales Map adds a report to WooCommerce that shows which provinces and cities of Iran your orders come from.
- An interactive map of all 31 provinces, colored by revenue, number of orders, unique customers or average order value.
- A circle on each city, sized by the same metric.
- Click a province to zoom into it and list all of its cities in a sortable table.
- Click a city to open its customer list: name, phone, number of orders, total spent, last order date and a link to the order.
- Date range filter with a Persian (Jalali) calendar, and a choice of which order statuses are counted.
- An Unmatched Cities screen for city names that could not be placed on the map. Link each one to the right city or dismiss it; existing orders are updated immediately.
- CSV export of whatever the table is showing.
The report is only available to users who can manage WooCommerce. Nothing is added to the front end of your store.
No external requests
The map, city coordinates, the Vazirmatn font and every other asset ship with the plugin. No request is made to Google Maps, Google Fonts, tile servers or any CDN, so it works on servers with restricted internet access and on sites with a strict Content Security Policy.
Built for speed
The report does not query the orders table or post meta when the page loads. The plugin keeps a small side table with one lightweight row per order, updated whenever an order changes, and runs the report on that indexed table. Customer names and phone numbers are not copied into it; they are read from WooCommerce only when you open a city's customer list.
Writing that row happens in the background through Action Scheduler, so checkout is not slowed down. Existing orders are processed in batches after activation.
Compatibility
Works with both High-Performance Order Storage (HPOS) and the legacy post storage. Provinces are matched against the state list of your own store, so it works with WooCommerce's built-in Iranian states and with Persian localization plugins that change them.
City names are normalized (zero-width non-joiners, Arabic Yeh and Kaf, diacritics, Persian digits) and matched within the order's province.