How to Use Sales by Location in Amazon: Step-by-Step Tutorial
By MCP Analytics Team | Published , updated
Group your Amazon orders by ship state and see how many orders, how much revenue and what average order value each state has. The example runs on a small made-up file, with the code and output shown.
Introduction to Sales by Location Analysis
Knowing where your orders ship to can inform inventory placement, advertising and fulfillment questions. A sales-by-location table is a starting point for those questions, not an answer to them.
When you analyze sales by location, you're answering critical business questions: Are your products resonating in urban or rural areas? Which states generate the highest revenue? Should you adjust your FBA vs FBM strategy based on regional performance? Where might a test of your advertising budget be worth running?
This tutorial will walk you through the complete process of accessing, analyzing, and acting on your Amazon sales location data. The example in Step 2 uses a small made-up file generated for this tutorial (200 orders across 6 states, fixed random seed), not a real store, so your numbers will differ.
What You'll Learn
- How to extract geographic data from Amazon Seller Central
- Methods for visualizing sales distribution across regions
- Interpreting geographic patterns to inform business decisions
- Optimizing fulfillment and advertising based on location insights
- Common pitfalls and how to avoid them
Prerequisites and Data Requirements
Before diving into geographic analysis, ensure you have the following prerequisites in place:
Required Access and Tools
- Amazon Seller Central Account: You need active seller credentials with access to order reports
- Enough orders per place: a state with only a handful of orders gives an unstable revenue figure, so cover several months if you can and read the order count next to every figure. There is no fixed minimum that makes a pattern reliable
- Report Permissions: Access to download order and settlement reports from your Seller Central account
- Data Analysis Tool: Spreadsheet software (Excel, Google Sheets) or dedicated analytics platform
Understanding Your Export
Which reports and columns you can download depends on your account and marketplace, so check what your own export contains before you plan the analysis. Amazon has a help page titled "Order Reports".
Data Quality Checklist
Before proceeding, verify your data quality:
- Complete shipping addresses in your order data
- No significant gaps in your order history
- Accurate order status information (completed orders only)
- Consistent date ranges for comparison analysis
Step 1: Access Your Amazon Order Data
The foundation of geographic analysis is your raw order data from Amazon Seller Central. Here's how to access it:
1.1 Download an Order Report
Download an order report from Seller Central that lists each order with its shipping state. Amazon's help page "Order Reports" is the place to start. This tutorial does not give menu paths, because Amazon changes them; use the page and your account's own menus. Report names and columns differ by report type and marketplace, so check the headers of your own file.
1.2 Choose Your Report Settings
Set the report so that it covers what you need:
Date range: last 90 days (or your preferred period)
Format: CSV or tab-delimited
Columns needed: order id, order date, ship state (ideally also ship city
and ship postal code), item price, quantity, order status
Request the report, wait until Seller Central says it is ready, and download it.
1.3 Expected Data Structure
For geographic analysis you need a ship state column, a price, a quantity and a status. Here are three made-up rows in that shape (your column names may differ):
order-id | purchase-date | ship-city | ship-state | ship-postal-code | item-price | quantity-purchased
AMZ-001 | 2024-01-15 | Los Angeles | CA | 90001 | 29.99 | 1
AMZ-002 | 2024-01-15 | Austin | TX | 78701 | 45.50 | 2
AMZ-003 | 2024-01-16 | Seattle | WA | 98101 | 29.99 | 1
Verification Point: Ensure your downloaded file contains ship-city, ship-state, and ship-postal-code columns. If these are missing, try another report type, since columns differ by report.
Step 2: Prepare Data for Geographic Analysis
Raw Amazon data requires cleaning and structuring before meaningful analysis can begin.
2.1 Clean Your Dataset
Open your downloaded CSV file and perform these cleaning steps:
- Remove Canceled Orders: Filter out any orders with status "Canceled" or "Pending"
- Standardize State Codes: Ensure all states use two-letter abbreviations (CA, NY, TX, etc.)
- Handle Missing Data: Remove or flag orders with incomplete shipping information
- Format Currency: Ensure all price fields are numeric (remove currency symbols)
2.2 Create Analysis Columns
Add calculated fields to enable deeper analysis:
// Layout: A order-id | B purchase-date | C ship-city | D ship-state
// E ship-postal-code | F item-price | G quantity-purchased | H order-status (completed orders only)
// Cell I2, line revenue, filled down (if your item-price column is already the line total, skip the multiplication):
=F2*G2
// Cell J2, region, filled down (an example grouping of states):
=IF(OR(D2="CA",D2="OR",D2="WA"),"West Coast",IF(OR(D2="NY",D2="MA",D2="CT"),"Northeast",IF(OR(D2="TX",D2="FL",D2="GA"),"South","Other")))
The hyphenated names are column headers in the export. A formula refers to cells such as F2, because a hyphen inside a formula would be read as subtraction. Column I is revenue per item line; to count orders per state, count distinct order ids rather than rows.
2.3 Aggregate by Location (worked example, made-up data)
This code makes a made-up order file with a fixed seed and groups it by ship state. It needs only Python 3. Cancelled orders are dropped first. We ran it with python3 -I ex.py; every number below is its output.
import csv, io, random
from collections import defaultdict
random.seed(7)
states = ["CA","TX","NY","FL","WA","WY"]
weights = [30, 22, 17, 15, 12, 2]
rows = [["order-id","ship-state","item-price","quantity-purchased","order-status"]]
for i in range(1, 201):
s = random.choices(states, weights)[0]
price = random.choice([19.99, 29.99, 45.50, 59.00])
qty = random.choice([1, 1, 1, 2])
status = random.choices(["Shipped","Cancelled"], [92, 8])[0]
rows.append([f"A-{i:04d}", s, price, qty, status])
buf = io.StringIO(); csv.writer(buf).writerows(rows)
open("orders.csv","w").write(buf.getvalue())
print("first 4 rows:"); print("\n".join(buf.getvalue().splitlines()[:5]))
data = list(csv.DictReader(open("orders.csv")))
print("rows:", len(data), "cancelled:", sum(r["order-status"]=="Cancelled" for r in data))
agg = defaultdict(lambda: [0, 0.0])
for r in data:
if r["order-status"] != "Shipped": continue
a = agg[r["ship-state"]]; a[0] += 1; a[1] += float(r["item-price"])*int(r["quantity-purchased"])
tot_o = sum(v[0] for v in agg.values()); tot_r = sum(v[1] for v in agg.values())
print("state orders revenue aov share")
for s,(o,rv) in sorted(agg.items(), key=lambda kv:-kv[1][1]):
print(f"{s:5} {o:6} {rv:9.2f} {rv/o:6.2f} {100*rv/tot_r:5.1f}%")
print("total", tot_o, f"{tot_r:.2f}")
Output:
first 4 rows:
order-id,ship-state,item-price,quantity-purchased,order-status
A-0001,TX,29.99,2,Shipped
A-0002,CA,19.99,1,Shipped
A-0003,WA,29.99,1,Shipped
A-0004,TX,29.99,1,Shipped
rows: 200 cancelled: 15
state orders revenue aov share
CA 54 2492.20 46.15 27.7%
TX 42 2186.26 52.05 24.3%
FL 34 1721.24 50.62 19.1%
NY 29 1271.34 43.84 14.1%
WA 22 1153.93 52.45 12.8%
WY 4 174.47 43.62 1.9%
total 185 8999.44
What each output column means:
- state: the ship-state code on the order.
- orders: shipped orders for that state (cancelled orders excluded).
- revenue: the sum of item price times quantity for those orders.
- aov: average order value, revenue divided by orders.
- share: the state's revenue as a percent of total revenue.
Verification Point: The state revenues should add up to the total. Here the six states add up to $8,999.44 over 185 shipped orders (15 of the 200 rows were cancelled and left out). Compare your own total to the total in your report for the same dates.
Limits: the file is made up, so the ranking says nothing about real Amazon sellers. Wyoming has 4 orders, so its average order value of $43.62 could change a lot with one more order. Read every figure next to its order count.
Step 3: Analyze Geographic Distribution Patterns
Now that your data is prepared, it's time to extract meaningful insights from geographic patterns.
3.1 Identify Top Performing Regions
Sort your aggregated data by total revenue to identify your strongest markets:
- Create a bar chart showing top 10 states by revenue
- Calculate each state's percentage of total sales
- Identify concentration: Do 80% of sales come from 20% of states?
3.2 Analyze Population-Adjusted Performance
Raw numbers can be misleading. A state with high population naturally generates more orders. Calculate revenue per capita to find true opportunities:
// Revenue per 100,000 residents = state revenue / state population * 100000
// Use a population table you download yourself (for example, official
// state population estimates) and join it on the two-letter state code.
Raw totals follow population, so dividing by population shows where you sell more than population alone would predict. Be careful with small places. In the example data, WY has 4 orders and $174.47 of revenue (1.9% of the total), so a single extra order moves its per-resident figure a lot. A high figure built on few orders is a lead to check against order counts, repeat purchases and advertising exposure. It is not evidence of product-market fit.
3.3 Map Urban vs Rural Distribution
To split orders into urban and rural, join their postal codes to a classification table from a source you trust and report how many orders have codes that are not in the table. This tutorial does not include a worked example of that join. Once you have the split, it can inform fulfillment method decisions and shipping cost optimization.
3.4 Seasonal and Temporal Patterns
Compare geographic distribution across different time periods:
- Q4 holiday season vs. other quarters
- Month-over-month changes in regional performance
- Day-of-week patterns by region (some areas may show weekend vs. weekday differences)
Verification Point: You should be able to answer: What are my top 5 states by revenue? Are there any surprising geographic strongholds for my products, and how many orders sit behind each?
Step 4: Combine Location With Other Measures
Once state totals are in place, you can set other measures beside them.
4.1 Add Other Measures
Join your own files to the state totals on the state code:
Analysis dimensions:
- State + advertising spend = regional ROAS (return on ad spend:
revenue attributed to ads divided by ad spend)
- State + return rates = returns by region
- State + delivery times = fulfillment speed by region
- State + repeat purchases = repeat behavior by region
Each pairing needs the second measure in a file of your own, with the same state codes. Read each result with the order counts beside it.
4.2 Review Changes Each Month
When you re-run the analysis on a new export, look for changes such as these (the cutoffs are examples to adjust):
- A new state reaches 50 or more orders (a possible expansion lead)
- An existing state drops 20% or more month over month (worth investigating)
- Revenue becomes more concentrated in one region (a dependency risk)
Step 5: Interpret Your Results and Take Action
Data without action is just numbers. Here's how to translate geographic insights into business improvements.
5.1 Optimize Fulfillment Strategy
As an example, if most of your orders came from the West Coast and your stock sat in one fulfillment center far away, shipping cost and delivery time could be worth checking for that market. Check your own shipping data before acting.
Action Items:
- Consider adding FBA inventory to West Coast fulfillment centers
- Evaluate distributed inventory placement for high-volume regions
- Calculate shipping cost savings from optimized placement
5.2 Refine Advertising Targeting
Geographic data can suggest where to test more (or less) advertising spend. These are ideas to check against your own results:
Regions to consider testing more spend:
- States with high revenue per capita
- Growing markets (month-over-month increase)
- Markets with high conversion rates
Regions to consider testing less spend:
- High ad cost with low conversion
- Returns significantly above average
- Persistently low order values
5.3 Identify Expansion Opportunities
Look for adjacent markets showing promise:
- If one state performs well, you could test a small campaign in a neighbouring state
- If urban areas in one state convert well, expand to similar metro areas nationwide
- Demographic similarity does not show a market will sell; treat it as a hypothesis to test
5.4 Understand Competitive Dynamics
Weak results in an expected market have many possible causes, local competition among them:
- Research competitor presence in underperforming states
- Analyze pricing competitiveness by region
- Identify product differentiation opportunities
5.5 Seasonal Planning
Different regions may show different seasonal patterns:
- Check by month, by state, whether your own sales show a seasonal pattern
Verification Point: Create an action plan with at least three concrete changes you'll implement based on your geographic analysis. Each action should have a measurable outcome.
Step 6: Advanced Geographic Insights
Once you've mastered basic geographic analysis, these advanced techniques can provide competitive advantages.
6.1 Repeat Purchases by Region
Repeat purchase rate and lifetime value by state need a customer identifier on each order, a fixed observation window and a formula (for example, orders per customer or revenue per customer over that window). An order export may not carry a usable customer identifier, so this may not be possible from your file. If you can compute it, show the number of customers behind each state beside the figure, since small counts make it unstable.
6.2 Product Performance by Region
Different products may sell differently in different markets. Check your own data for questions such as:
- Do color preferences differ by region in your sales?
- Do size distributions differ?
- Do some features sell more in some climates?
6.3 Competitive Intelligence
Compare your geographic distribution to any category data you have access to:
- Are you underperforming in major markets where competitors thrive?
- Have you found a niche geography where you dominate?
- Do your geographic patterns align with overall category trends?
6.4 Integrating External Data
Enhance your analysis by incorporating external datasets:
- Census data for demographic insights
- Weather patterns for seasonal products
- Economic indicators for luxury vs. budget product positioning
- Competitor locations for market saturation analysis
Joining state sales totals to state population estimates, as in Step 3.2, is one example of combining an outside data set with your orders.
Run It on Your Own Amazon Export
You upload a CSV export of your Amazon orders to MCP Analytics and ask for the analysis you want. The method is shown for every result, and the same file gives the same numbers. Nothing connects to your Amazon account.
Common Issues and Solutions
Even with careful execution, you may encounter challenges. Here are solutions to the most common problems:
Issue 1: Missing Geographic Data in Order Reports
Symptoms: Downloaded order report lacks ship-city, ship-state, or ship-postal-code columns.
Solution:
- Try another order report type, since columns differ by report
- Check the headers for a ship state column under a different name
Issue 2: Inconsistent State Abbreviations
Symptoms: Some states appear as "California" while others show "CA," splitting data.
Solution:
// Excel/Google Sheets formula to standardize
=IF(LEN(A2)>2, VLOOKUP(A2, StateConversionTable, 2, FALSE), A2)
// Or use find-and-replace:
Find: California → Replace: CA
Find: New York → Replace: NY
// Repeat for all full state names
Issue 3: Insufficient Data for Analysis
Symptoms: You have only a few orders per state, making patterns unreliable.
Solution:
- Extend your date range to 6-12 months for more data
- Focus on high-level insights (regions rather than individual states)
- Re-run analysis quarterly as your order volume grows
- Combine data from multiple marketplaces if selling internationally
Issue 4: PO Box Addresses Skewing Results
Symptoms: Large clusters of orders at single postal codes that don't match typical residential patterns.
Solution:
- Identify PO Box addresses (typically contain "PO Box" in address line)
- For aggregate analysis, you can include them, but note limitations
- For precise geographic targeting, filter PO Boxes out
- Consider maintaining two datasets: with and without PO Boxes
Issue 5: Seasonal Skew Distorting Patterns
Symptoms: Q4 data shows completely different geographic patterns than other quarters.
Solution:
- Analyze each quarter separately to identify seasonal patterns
- Create "baseline" analysis excluding Q4 holiday spike
- Use year-over-year comparison rather than month-over-month for Q4
- Document seasonal patterns to inform future inventory and marketing decisions
Issue 6: Privacy Concerns with Customer Data
Symptoms: Uncertainty about handling customer shipping information.
Solution:
- You don't need individual customer names for geographic analysis
- Work only with aggregated data (state/city level) for privacy compliance
- Avoid sharing raw customer data
- Remove buyer names and emails from the file before you share or upload it
Issue 7: FBA vs FBM Orders Show Different Patterns
Symptoms: Geographic distribution differs significantly between fulfillment methods.
Solution:
- A difference is possible and worth a look
- Analyze FBA and FBM orders separately
- Check whether the two methods ship to different states in your data
- Use insights to optimize which products to send to FBA vs. fulfill yourself
Next Steps with Amazon Geographic Analysis
You've now learned how to extract, analyze, and act on geographic sales data from Amazon. Here's how to continue improving your geographic strategy:
Immediate Actions (This Week)
- Download Your Data: Download your most recent 90 days of order data following Step 1
- Create Your First Analysis: Build a simple state-by-state revenue breakdown
- Identify One Opportunity: Find your single most actionable geographic insight
- Implement One Change: Adjust advertising, inventory, or targeting based on your findings
Ongoing Optimization (Monthly)
- Update your geographic analysis with fresh data
- Track changes in regional performance month-over-month
- A/B test different strategies in high-performing vs. low-performing regions
- Review fulfillment costs by region and optimize inventory placement
Advanced Techniques (Quarterly)
- Integrate geographic data with customer lifetime value analysis
- Build predictive models for seasonal patterns by region
- Conduct competitive analysis in your strongest and weakest markets
- Test expansion into adjacent markets showing promise
Continuous Learning
Geographic analysis is just one dimension of Amazon success. Continue developing your analytical capabilities:
- Check the current text of Amazon's "Order Reports" help page now and then, since report options can change
Conclusion
You downloaded an order report as Amazon describes it, grouped orders by ship state, and read orders, revenue, average order value and share side by side. Keep the order count next to every figure, and treat each pattern as a question to check, not a conclusion.
Explore more: Amazon Seller Analytics: all tools, tutorials, and guides →
Not sure which plan? Compare plans →
Sources
- Amazon Seller Central Help: Order Reports.
- All example data on this page is made up, generated by the code in Step 2.3.