How to Use Location Analysis in Square: Step-by-Step Tutorial
Master multi-location performance tracking to identify your top stores and optimize device deployment
Introduction to Location Analysis in Square
If you operate multiple Square locations, understanding which stores drive the most revenue and how they compare to each other is critical for strategic decision-making. Location analysis helps you answer essential questions: Which store is your top performer? Are certain locations underperforming? Which devices process the most transactions at each location?
This comprehensive tutorial walks you through the process of analyzing Square location data to uncover performance patterns, compare stores effectively, and make data-driven decisions about resource allocation, staffing, and expansion strategies.
Unlike basic Square reporting, advanced location analysis reveals deeper insights about transaction patterns, device utilization, and comparative performance metrics that can transform how you manage your multi-location business. By the end of this guide, you'll know exactly which locations deserve more investment and which need operational improvements.
Prerequisites and Data Requirements
Before beginning your location analysis, ensure you have the following in place:
Required Access and Permissions
- Square Account Access: You need owner or administrator permissions to access multi-location data
- Multiple Locations: At least two active Square locations with transaction history
- Transaction Data Export: Ability to export transaction data from Square Dashboard or API access
- Time Range: Minimum 30 days of transaction history for meaningful comparisons (90+ days recommended)
Data Fields You'll Need
Your Square transaction export should include these essential fields:
location_idorlocation_name- Identifies which store processed the transactiongross_sales_moneyortotal_money- Revenue amount for each transactioncreated_atortransaction_date- Timestamp for temporal analysisdevice_nameordevice_id- Device/terminal that processed the transactionpayment_idortransaction_id- Unique transaction identifier
Recommended Tools
- Square Dashboard for data export
- Spreadsheet software (Excel, Google Sheets) for basic analysis
- Python or SQL for advanced analysis (optional but powerful)
- MCP Analytics Location Analysis Tool for automated insights
Step 1: Identify Your Highest-Performing Location
The first question most multi-location business owners ask is: "Which location makes the most money?" Let's find out.
Export Your Transaction Data
- Log into your Square Dashboard
- Navigate to Reports → Sales
- Set your desired date range (recommend 90 days for meaningful trends)
- Click Export and select CSV format
- Ensure "Include location information" is checked
Aggregate Sales by Location
If you're comfortable with Python, here's how to quickly identify your top-performing location:
import pandas as pd
# Load your Square transaction data
df = pd.read_csv('square_transactions.csv')
# Convert created_at to datetime
df['created_at'] = pd.to_datetime(df['created_at'])
# Aggregate total sales by location
location_sales = df.groupby('location_name').agg({
'gross_sales_money': 'sum',
'payment_id': 'count'
}).rename(columns={
'gross_sales_money': 'total_revenue',
'payment_id': 'transaction_count'
})
# Sort by total revenue
location_sales = location_sales.sort_values('total_revenue', ascending=False)
print(location_sales)
Expected Output
total_revenue transaction_count
location_name
Downtown Store $125,430 2,847
Westside Mall $98,220 2,103
Airport Terminal $76,890 1,654
Suburban Plaza $54,320 1,289
What This Tells You
This analysis immediately reveals your revenue hierarchy. In this example, the Downtown Store generates 27% more revenue than the second-place location. However, notice that it also processes more transactions—we'll need to calculate average transaction value to understand if it's genuinely more efficient or just higher volume.
Calculate Average Transaction Value
# Add average transaction value
location_sales['avg_transaction_value'] = (
location_sales['total_revenue'] / location_sales['transaction_count']
)
print(location_sales[['total_revenue', 'avg_transaction_value']])
Interpreting the Results
A location with high total revenue but low average transaction value might indicate high foot traffic with smaller purchases. Conversely, a location with fewer transactions but higher average value suggests a different customer demographic or product mix. Both metrics matter for understanding true location performance, and this approach aligns with principles discussed in our guide on AI-first data analysis pipelines.
Step 2: Compare Location Performance Over Time
Snapshot comparisons are useful, but temporal analysis reveals trends, seasonal patterns, and growth trajectories that static rankings miss.
Create Weekly Performance Comparisons
# Resample to weekly frequency for cleaner trend visualization
df['week'] = df['created_at'].dt.to_period('W')
weekly_performance = df.groupby(['location_name', 'week']).agg({
'gross_sales_money': 'sum',
'payment_id': 'count'
}).reset_index()
# Pivot for easier comparison
weekly_pivot = weekly_performance.pivot(
index='week',
columns='location_name',
values='gross_sales_money'
)
print(weekly_pivot.tail(10))
Expected Output
location_name Downtown Store Westside Mall Airport Terminal Suburban Plaza
week
2024-W38 $12,450 $9,820 $7,650 $5,430
2024-W39 $13,120 $10,100 $7,890 $5,120
2024-W40 $12,890 $9,950 $8,100 $5,680
2024-W41 $14,200 $10,450 $7,920 $5,340
Identify Growth Trends
# Calculate week-over-week growth rate
weekly_pivot_pct = weekly_pivot.pct_change() * 100
print("Average weekly growth by location:")
print(weekly_pivot_pct.mean())
What Growth Rates Reveal
A location with consistent positive growth (even if currently lower in absolute revenue) might be a better investment opportunity than a high-revenue location with declining trends. This temporal comparison helps you identify which locations have momentum and which need intervention.
Detect Seasonal Patterns
Some locations may perform better during specific days of the week or months of the year:
# Add day of week analysis
df['day_of_week'] = df['created_at'].dt.day_name()
dow_performance = df.groupby(['location_name', 'day_of_week']).agg({
'gross_sales_money': 'mean'
}).unstack()
print(dow_performance)
Understanding these patterns helps with staffing decisions, inventory planning, and promotional timing. For more sophisticated temporal analysis techniques, explore our article on accelerated failure time models for data-driven decisions.
Step 3: Analyze Device Activity by Location
Knowing which devices process the most transactions helps you optimize hardware deployment, plan upgrades, and ensure adequate terminal coverage during peak hours.
Identify Most Active Devices per Location
# Aggregate transactions by location and device
device_activity = df.groupby(['location_name', 'device_name']).agg({
'payment_id': 'count',
'gross_sales_money': 'sum'
}).rename(columns={
'payment_id': 'transaction_count',
'gross_sales_money': 'total_revenue'
})
# Sort within each location
device_activity = device_activity.sort_values(
['location_name', 'transaction_count'],
ascending=[True, False]
)
print(device_activity)
Expected Output
transaction_count total_revenue
location_name device_name
Downtown Store Register 1 1,245 $54,230
Register 2 1,102 $48,900
Mobile POS 1 500 $22,300
Westside Mall Register 1 987 $45,670
Register 2 856 $38,450
Register 3 260 $14,100
Calculate Device Utilization Rates
# Calculate percentage of location's transactions per device
device_pct = device_activity.groupby(level=0).apply(
lambda x: x / x.sum() * 100
)
print(device_pct['transaction_count'])
What This Reveals
If one device processes 60%+ of a location's transactions, you have a bottleneck. During peak hours, customers may experience longer wait times. Conversely, devices with very low utilization might be unnecessary, representing an opportunity to reallocate hardware to busier locations.
Analyze Peak Hour Device Load
# Identify peak transaction hours
df['hour'] = df['created_at'].dt.hour
peak_hours = df.groupby(['location_name', 'hour']).size().reset_index(name='txn_count')
# Find the busiest hour per location
busiest_hour = peak_hours.loc[peak_hours.groupby('location_name')['txn_count'].idxmax()]
print(busiest_hour)
Understanding when devices are busiest helps you schedule staff breaks, plan maintenance windows, and ensure adequate coverage during rush periods. For businesses looking to optimize resource allocation based on device data, our Location Analysis service provides automated recommendations.
Interpreting Your Location Analysis Results
Now that you've generated comprehensive location analytics, let's translate those numbers into actionable business insights.
Revenue vs. Profitability
The highest-revenue location isn't always the most profitable. Consider:
- Rent costs: A high-revenue downtown location might pay 3x the rent of a suburban store
- Labor costs: Locations requiring more staff to handle volume may have lower margins
- Product mix: Different locations may sell different margin products
Efficiency Metrics to Calculate
- Revenue per square foot: Total revenue ÷ store square footage
- Revenue per employee: Total revenue ÷ number of staff members
- Transactions per device per hour: Measures checkout efficiency
- Average transaction value trend: Growing or shrinking basket sizes
Red Flags to Watch For
- Declining week-over-week revenue at any location
- Increasing transaction count but decreasing average transaction value
- One device handling 70%+ of transactions (bottleneck risk)
- Significant performance gaps between similar locations (suggests operational issues)
Growth Opportunities to Identify
- Locations with high traffic but low average transaction value (upselling opportunity)
- Devices with low utilization (reallocate or add more payment methods)
- Specific days/hours with capacity constraints (add temporary staff or devices)
- Locations with consistent growth rates (expansion candidates)
Automate Your Location Analysis with MCP Analytics
While manual analysis provides valuable insights, automating your location performance tracking saves time and catches trends you might miss with periodic manual reviews.
The MCP Analytics Location Analysis Tool automatically processes your Square transaction data to deliver:
- Automated location rankings updated daily with revenue, transaction count, and growth metrics
- Device utilization dashboards showing real-time bottlenecks and underutilized hardware
- Anomaly detection that alerts you when any location shows unusual performance patterns
- Comparative visualizations making it easy to spot trends across all your stores
- Forecasting models that predict future location performance based on historical patterns
Upload your Square transaction data and receive instant insights in minutes instead of hours of manual analysis. The tool handles all the data aggregation, statistical calculations, and visualization automatically.
Next Steps with Square Location Analysis
Once you've mastered basic location comparisons, consider these advanced analytics approaches:
1. Customer Segmentation by Location
Analyze whether different locations attract different customer types. Look at payment methods (cash vs. card), transaction sizes, and repeat customer rates to understand location-specific demographics.
2. Product Performance by Location
If your Square data includes item-level details, analyze which products sell best at each location. This reveals opportunities to optimize inventory distribution and customize offerings per store.
3. Staff Performance Correlation
Compare location performance during different staff shifts to identify training opportunities or recognize high-performing team members. Cross-reference device data with staff schedules for deeper insights.
4. Marketing Attribution
Track how location-specific promotions impact sales. Run controlled experiments to measure promotional effectiveness, and consider statistical approaches like those described in our A/B testing statistical significance guide.
5. Expansion Planning
Use your highest-performing locations as benchmarks for evaluating potential new store locations. Analyze what characteristics your top locations share (demographics, foot traffic, nearby businesses) to inform expansion decisions.
Common Issues and Solutions
Problem: Missing Location Data
Symptom: Some transactions show blank or "Unknown" location fields
Causes:
- Transactions processed before multiple locations were configured
- API transactions without location assignment
- Device configuration issues
Solutions:
- Filter your analysis to date ranges after all locations were properly configured
- Check Square Dashboard → Settings → Locations to ensure all devices are properly assigned
- For API transactions, verify location_id is being passed in payment requests
- Consider excluding or separately analyzing "Unknown" transactions if they represent <5% of total volume
Problem: Inconsistent Date Ranges
Symptom: New locations appear to underperform because they have less history
Solution: Always filter to the date range when ALL locations were operational. Calculate "days in operation" for each location and normalize metrics accordingly:
# Calculate daily average revenue instead of total
location_summary['daily_avg_revenue'] = (
location_summary['total_revenue'] / location_summary['days_in_operation']
)
Problem: Duplicate Transactions
Symptom: Revenue totals don't match Square Dashboard reports
Causes:
- Refunds appearing as separate transactions
- Export configuration issues
- Data merging errors if combining multiple exports
Solutions:
- Remove refund transactions or handle them separately:
df = df[df['transaction_type'] != 'REFUND'] - De-duplicate based on payment_id:
df = df.drop_duplicates(subset='payment_id') - Validate your totals against Square Dashboard before proceeding with analysis
Problem: Device Names Changed Over Time
Symptom: Same physical device appears as multiple entries due to renaming
Solution: Use device_id instead of device_name for consistent tracking, or create a mapping dictionary:
device_mapping = {
'Old Register Name': 'Register 1',
'New Register Name': 'Register 1',
'Temp Device': 'Register 1'
}
df['device_standardized'] = df['device_name'].map(device_mapping).fillna(df['device_name'])
Problem: Seasonal Locations Skew Comparisons
Symptom: Seasonal or pop-up locations don't compare well to permanent stores
Solution: Create separate analyses for different location types, or calculate "per-day-open" metrics rather than absolute totals. Tag locations by type (permanent, seasonal, pop-up) and analyze each segment independently.
Problem: Currency or Timezone Issues
Symptom: Amounts appear incorrect or timestamps don't align with business hours
Solutions:
- Verify Square data is exporting in your expected currency (check currency_code field)
- Convert timestamps to local timezone:
df['created_at'] = df['created_at'].dt.tz_convert('America/New_York') - Ensure you're using gross_sales_money (before fees) vs. net_sales_money (after fees) consistently
Conclusion
Location analysis transforms how you understand and manage a multi-location Square business. By systematically comparing revenue, tracking temporal trends, and analyzing device utilization, you can make confident decisions about where to invest resources, which locations need operational improvements, and how to optimize your entire store network.
The three core analyses covered in this tutorial—identifying top-performing locations, comparing performance over time, and analyzing device activity—provide the foundation for sophisticated multi-location management. As you become more comfortable with these techniques, you can layer on additional analyses like customer segmentation, product performance, and predictive forecasting.
Remember that raw revenue rankings only tell part of the story. The most valuable insights come from understanding why locations perform differently and what operational levers you can pull to improve underperforming stores or replicate the success of your top locations.
Ready to automate these insights? The MCP Analytics Location Analysis Tool handles all these calculations automatically and delivers actionable recommendations in minutes.
Explore more: Square Analytics — all tools, tutorials, and guides →