At a glance
The top-N cities by order count and revenue over the period. The card that turns “we ship to all 50 states” into “62% of revenue comes from 5 metropolitan areas”. Geographic concentration drives shipping-rate optimisation, paid-acquisition geo-targeting, and physical-warehouse decisions. City rankings shift week-to-week, especially for stores below ~1,000 orders/month where individual buying patterns dominate. Read this card in 30D+ windows; weekly views are too noisy for most stores.
| What it counts | COUNT(orders) GROUP BY billing_address.city plus SUM(total_inc_tax) per city. Top 25 cities by default; toggle to top 50 or top 100 for fuller view. |
| VAT / tax treatment | Tax-inclusive revenue per the BC Total Revenue definition. |
| Shipping | Included in revenue; per-city average shipping cost is a useful secondary view. |
| Discounts | Deducted. |
| Refunds | Not deducted (gross). |
| Cancelled orders | Excluded. |
Incomplete orders | Excluded. |
| Currency | Multi-currency without FX; cities aggregate across currency at the order count level, but revenue figures are per-currency. |
| Channels / sources | All channels aggregate. POS orders use the store address (not customer billing) so POS is concentrated to the store’s city; web orders show actual customer geography. |
| City-name normalisation caveat | Customer-entered city names are messy: “New York”, “NY”, “New York City”, “Manhattan” all refer to the same metro but appear as separate rows. The card applies basic normalisation (case-folding, trimming) but does not resolve aliases. For high-accuracy geo-analysis, use the postcode-level breakdown via Ask Viq rather than this city-level view. |
| Sample size warning | Below 100 orders in the period, top-cities rankings are dominated by random variation; one B2B customer in Cleveland can put Cleveland in the top 3. Don’t draw strategic conclusions from the top-cities of a low-volume window; aggregate to 90D or 180D for stability. |
| B2B Edition behaviour | B2B orders use billing_address.city of the company’s primary billing address. A B2B customer placing 50 orders/year shows their company city as a top city even though the company’s customers may be distributed widely. Filter to DTC for end-customer geography. |
| Time window | 30D (rolling 30 days; settings allow 7D, 30D, 90D, 180D). |
| Alert trigger | None; this is a discovery card. |
| Roles | owner, marketing |
Calculation
Worked example
A US apparel brand on BigCommerce, 30-day window 14 Apr 26 to 13 May 26. Total of 5,860 orders, $575,000 revenue.| Rank | City | Orders | Revenue ($) | Avg shipping ($) | % of total revenue |
|---|---|---|---|---|---|
| 1 | New York, NY | 482 | $54,300 | $11.20 | 9.4% |
| 2 | Los Angeles, CA | 384 | $44,100 | $14.80 | 7.7% |
| 3 | Chicago, IL | 218 | $24,800 | $9.40 | 4.3% |
| 4 | Houston, TX | 196 | $22,100 | $11.60 | 3.8% |
| 5 | Brooklyn, NY | 168 | $19,200 | $11.20 | 3.3% |
| 6 | Miami, FL | 142 | $16,400 | $13.20 | 2.9% |
| 7 | Philadelphia, PA | 138 | $15,800 | $9.80 | 2.7% |
| 8 | San Diego, CA | 124 | $14,200 | $14.40 | 2.5% |
| 9 | Atlanta, GA | 118 | $13,500 | $11.20 | 2.3% |
| 10 | San Francisco, CA | 112 | $12,800 | $15.20 | 2.2% |
| Top 10 total | 2,082 | $237,200 | avg $12.24 | 41.3% | |
| Long tail (~2,800 cities) | 3,778 | $337,800 | avg $9.80 | 58.7% |
- Top 10 cities = 41% of revenue. This is moderate concentration; pure DTC commerce typically sits at 35-50% in top 10. Below 30% means very wide distribution (high shipping costs, lots of long-haul); above 55% means heavy concentration (warehouse co-location decisions become valuable).
- New York + Brooklyn = $73,500 (12.7%) of revenue. Brooklyn is split out from NYC in customer entry (different cities to USPS); operationally these are the same metro. Combine them mentally; New York metro is a top-3 priority.
- California cities (LA + SD + SF) = 4-6 to shipping cost versus a CA fulfilment partner. This is the classic “should I add a 3PL on the West Coast?” trigger.
- Average shipping cost varies 15.20 (San Francisco). SF is twice as expensive to ship to versus Chicago at the same order value; this is geography in action. For SF customers, consider a free-ship threshold lift (raise from 75 just for CA addresses); customers don’t notice but margin improves.
- Long tail (58.7% of revenue across ~2,800 cities) is the unstructured majority. Each individual city is small but collectively they’re the bulk. Don’t try to optimise the long tail city-by-city; treat it as “general DTC” and focus the city-specific analysis on top 10-25.
- Combine metros mentally. New York + Brooklyn + Queens + Staten Island = NYC metro; LA + Long Beach + Anaheim = LA metro. Don’t optimise sub-cities separately.
- Audit shipping rates per top city. A flat-rate shipping policy will overcharge cheap zones (Chicago) and undercharge expensive ones (SF). Switch to zone-based rates if not already.
- Geo-target paid acquisition to top-10 cities at premium CPM tiers. Each top city is a known-converting geography; ad spend efficiency is highest there.
- Consider a West Coast 3PL if California cumulative revenue exceeds 15-20% of total. Cuts transit time, reduces lost-package rates, lifts repeat purchase rate.
- Segment customer-base communications geographically. New Yorkers respond differently to “free shipping” promos than Texans (NY tax-free status on apparel, TX 8.25%); messaging variants by region lift conversion.
- Watch for sudden city rises. A new city jumping into the top 10 typically signals viral / influencer activity in that geography; investigate to amplify.
Sibling cards merchants should reference together
| Card | Why pair it with Top Cities |
|---|---|
| BC Customer Countries | Country-level rollup; pair to see country-distribution before drilling to cities. |
| BC Orders by State | State / region-level; intermediate granularity between countries and cities. |
| Total Revenue | Denominator. |
| BC Top Customers | Customer-level; some top cities are just one or two big customers. |
| BC Shipping Methods | Geographic distribution drives method optimisation. |
| BC Shipping % | Wide distribution = higher shipping cost percentage. |
| BC Total Tax | Tax rate varies by city / state / postcode. |
| Customer Segments | Pair to see which customer segments cluster in which cities. |
| Repeat Rate | Per-city repeat rate identifies high-LTV markets. |
| BC Customer Trend | New customers in new cities is the geographic-expansion signal. |
| BC AOV by Country | AOV varies by city / country; affluent cities (SF, NYC) typically have 1.3-1.6x AOV. |
Reconciling against the vendor’s own dashboard
Where to look in BigCommerce’s own dashboard: BC Insights doesn’t natively expose a top-cities report. The closest equivalent is the Sales Reports → Sales by Customer filtered to the period; the customer table includes city per customer. Pivot in spreadsheet for a city-level rollup. Plus and Enterprise tiers can build a custom Insights query for city-level revenue. For Standard tier, the Orders export withbilling_city column is the working data.
Why our number may legitimately differ from the vendor’s:
| Reason | Direction | Why |
|---|---|---|
| City-name normalisation | Either | ”New York” vs “New York City” vs “NYC” all aggregate to one row in our view (case-folded, whitespace-trimmed); BC may show separately. |
| Billing vs shipping city | Either | We use billing_address.city; BC reports may use shipping_address.city. For most orders these match; for gifts they differ. |
| POS orders | Different attribution | POS orders use the store address, not the customer address; our default includes them, distorting the home-store city upward. |
| Time zone | Trivial | UTC vs store time zone. |
| Sample size | Trivial | Below 100 orders the rankings are unstable. |
| Card | Expected relationship | Notes |
|---|---|---|
google_analytics.ga_top_cities | Top-N city list should overlap by ~70-80% | GA4 attributes by IP-derived city; BC by billing-address city. The two diverge for VPN users, mobile users on cellular roaming, and corporate IPs. |