Insights ยท Data Foundations

DMA vs CBSA vs MSA: which geography to use for ecom analysis

Sam GilยทOct 2026ยท8 min
Key takeaways
1Use DMA for anything you buy or test by market (TV, CTV, radio, geo holdouts), CBSA for anything physical (stores, wholesale, delivery) and division or state for trend reads and tax.
2A DMA and a metro with the same name are different areas. Princeton NJ is in the Philadelphia DMA but its own Trenton-Princeton metro, and Greenwich CT is in the New York DMA but the Bridgeport metro.
3For stores, a 15-minute walk in Manhattan reaches ~70k people and a 15-minute drive in suburban NJ ~200k. The metro column for both says 19.5M, so build drive-time or walk-time areas instead.
4Map web sessions to DMA through IP geolocation and your ZIP master table, not the deprecated metro code field, so site behaviour can be read by market days before orders land.

A DMA is a TV market defined by Nielsen, a CBSA is a commuting area defined by the federal government, and an MSA is just the larger kind of CBSA, so "DMA vs MSA" is really a choice between two maps built for different jobs. Use DMA for anything you buy or test by market and CBSA for anything physical, and for store decisions use neither, because a metro of 19.5M people says nothing about who can reach one store.

The two maps are both built from whole counties, but they do not nest, and the same city name can mean quite different areas on each. Here is the comparison, with the decision each one is for and where it breaks.

Five maps, five jobs
Map, and who defines itHow manyBuilt fromUse it forWhere it breaks
DMADesignated Market AreaNielsen (licensed, proprietary)210, reviewed every yearWhole counties, grouped by which local TV stations get the dominant share of viewingBuying TV, CTV, radio and local media; choosing and holding out geo-test marketsFollows viewing, not shopping. 97 DMAs cross a state line, and the big ones reach well past the metro of the same name.
CBSACore Based Statistical AreaOMB, published by Census (free)925 in the 50 states + DC: 387 metro, 538 micro. Last revised July 2023Whole counties tied to an urban core by commutingAnything physical: wholesale account planning, delivery promises, demand screening per 1k peopleA county is a huge unit next to how far people travel to a store. Not an urban/rural split.
MSAMetropolitan Statistical AreaOMB (a type of CBSA)387 of the 925 CBSAsA CBSA whose urban core has 50k+ people. Micropolitan areas (10k to 50k) are the other 538Same as CBSA. Use MSA when you want metros only and are happy to drop ~14% of the populationPeople say MSA when they mean the whole CBSA list, so small-city orders fall into a blank.
CSACombined Statistical AreaOMB184, incl. Puerto RicoAdjacent CBSAs with meaningful commuting between them (New York + Bridgeport + Poughkeepsie, etc.)Rolling metros up for a regional read; closest OMB unit to a large DMAStill a commuting map. Not every CBSA belongs to a CSA, so the column has gaps.
Trade areaDrive-time or walk-time ringYou, from a routing APIOne per location, usually 10 / 15 / 20 minRoad or footpath travel time from a door, not a radius and not a countyStore openings, closures and cannibalisation; who can actually reach the doorNeeds maintenance and a routing API. Rings overlap, so two sites can be one decision.
DMA and CBSA are both built from whole counties, but they do not nest: the New York DMA spans the New York, Bridgeport, Poughkeepsie and Kingston metros, and Princeton, NJ sits in the Philadelphia DMA but its own Trenton-Princeton metro. Counts: Nielsen; OMB Bulletin 23-01 (July 2023).

Where they disagree

A DMA and a metro that share a name are not the same place, and the gaps sit exactly where a lot of DTC customers live. The New York DMA takes in Fairfield County, CT, so Greenwich is a New York TV household, but on the OMB map it belongs to the Bridgeport-Stamford-Danbury metro. Princeton, NJ goes the other way: it is in the Philadelphia DMA, because Mercer County watches Philadelphia stations, but it is its own Trenton-Princeton metro and about an hour's drive from either city. Vancouver, WA is in Washington on a state view and in Portland on both of the others.

Those are not edge cases. 97 of the 210 DMAs cross a state line, and because DMAs follow viewing rather than commuting, the big ones reach further out than the metro of the same name (New York's DMA holds ~6.5% of the US population, its metro ~5.8%). So if a media test is measured by DMA and the results are read against orders cut by metro, the two will disagree on the fringes, and the fringes are where a holdout test is usually decided. Pick one, and put both on the ZIP master table so you can see when a row would move.

The map you cut by should be the map the decision is made on: TV is bought by DMA, stores are reached by travel time, and neither is a state.

For stores, the metro is the wrong unit too

A CBSA tells you a county is economically tied to a core; it does not tell you whether anyone can get to your store. Both maps are county-based, and a county is a huge unit next to the distance people will actually travel to buy something. The same 15 minutes covers very different numbers of people depending on where the store is:

The same 15 minutes
Manhattan15-min walk, ~0.75 mi
~73k
Brooklyn15-min walk, ~0.75 mi
~38k
Bergen County, NJ15-min drive, ~5.5 mi
~214k
Morris County, NJ15-min drive, ~7.5 mi
~108k
Metro column, all fourNew York-Newark-Jersey City
drawn to scale, this bar would be ~90 cards wide
19.5M
Rough arithmetic, not measured trade areas: 3 mph on foot, ~22-30 mph suburban driving, and the reachable area taken as ~55% of the crow-flies circle to allow for the street network, times 2020 Census density for each county. The point is the order of magnitude: the metro is ~90x to ~500x bigger than anything a single door serves.

That is why retail and wholesale teams end up with custom maps: a drive-time or walk-time area (an isochrone) around each existing or candidate location, usually 10, 15 and 20 minutes by car in the suburbs and 10 to 15 minutes on foot in dense cities, built with a routing API such as Mapbox, Google or OpenRouteService rather than a radius. The useful outputs are population and median income inside each ring, your existing orders per 1k people inside it (which is the demand signal for a new store), and the overlap between rings, since two candidate sites that share 60% of their 15-minute area are one decision, not two. The metro column still earns its place for wholesale account planning and delivery promises, where the question really is "which commuting region", but it is the wrong unit for "where do we open".

Made-up example of how the two reads diverge: a brand's orders per 1k people are highest in the New York metro, so a store "in New York" looks obvious. Cut the same orders by 15-minute walk rings and the density is in two or three neighbourhoods in Brooklyn and lower Manhattan, with the rest of the 19.5M-person metro at or below the national average. The metro read says open in New York. The ring read says which block, and roughly how many of your existing customers are already within a walk of it.

Getting web behaviour onto the DMA map

Orders arrive with a shipping ZIP, so they join to DMA directly; sessions do not, and that is the part most teams skip. The fix is IP geolocation on your own first-party event stream: a database such as MaxMind's GeoIP2 City returns a postal code and a lat/long with an accuracy radius for each session, and you join that postal code to the same ZIP master table your orders use, so sessions and orders land on one DMA column. Two practical notes. GeoIP2 still returns a metro_code field, but MaxMind marks it deprecated and no longer maintained, so derive DMA from the postal code instead. And IP location is imprecise at ZIP level (MaxMind's own framing is 67% confidence within the accuracy radius, and mobile carrier traffic often resolves to a hub city), which matters much less at DMA level because DMAs are large. Calibrate it anyway: on orders you have both the IP-derived DMA and the shipping-ZIP DMA, so measure the match rate and use it as the confidence you put on session reads.

Once sessions sit on the DMA column, two things get easier. Geo holdout tests and TV or CTV flights can be read on leading indicators days before orders settle, so sessions, new-visitor share, add-to-cart rate and branded search by DMA against the holdout markets, which is usually enough to tell a dead flight from a slow one, or a scale-up that bought new people from one that bought the same people twice, weeks before the order read settles. And for ongoing buying, DMA-level site behaviour becomes a second view next to platform-reported results, which is useful precisely because the platform cannot see it. Neither replaces the incrementality read on orders; they give you more confidence, earlier, in the same decision.

What the two reads look like

The definitions only matter because of the two decisions on the other side of them: whether to scale spend in a market, and where the next store goes. Here is what each read looks like once orders and sessions sit on one geography table (illustrative numbers). On the media side, a brand doubles CTV spend in two DMAs against two holdouts. The order lift comes back positive but wide, which on its own is a coin flip on scaling. The site behaviour by DMA settles it: sessions rose ~40% but new-visitor share and add-to-cart rate fell in both test markets, so the extra spend mostly bought the same people more often. That is the saturation signature, and it is the reason to read the lift at the low end of its range and hold, with more confidence than the order number alone could give.

On the store side, start with the stores you already have: how buyers reach each one by walk, transit and drive time, which is the question "are people commuting to visit us" turned into a number. The city stores and the suburban store show opposite patterns, so each candidate site is scored on the ring that matches its type, on people and existing online customers inside it, and on how much of that ring an existing store already covers. That ranking is one input next to rent and footfall, but it is the one that tells you a site with strong demand is also sitting on top of a store you already have.

Two reads from one table
Media read, by DMA
Doubling CTV spend in 2 markets: did it buy new demand?
DMASpendSessionsNew vis.ATC rateOrders
Dallas-Ft. Worth2x+41%-9 pts-1.8 pts+6%
Denver2x+37%-7 pts-1.5 pts+4%
Atlanta1x0000
Minneapolis1x0000
Order lift on the test markets: ~+5%, 80% range -3% to +13%. Sessions rose ~40% but new-visitor share and add-to-cart rate fell in both markets, so the extra visits were mostly the same people, more often. That is what saturation looks like, and it says to read the lift at the low end of the range. Call: hold spend at 1x.
Sessions, new-visitor share and add-to-cart rate from IP-geolocated site traffic vs the holdout DMAs; order lift from shipping ZIP.
Store read, by travel time
How buyers reach the 4 existing stores, and which site is next
15-min walk15-30 min transit30+ min (driving)
Williamsburg
West Village
Georgetown
Lincoln Park
In the city stores ~40-45% of buyers live within a 15-minute walk and ~1 in 4 travel in from 30+ minutes away; the suburban store is the reverse. So city candidates are scored on the 15-minute walk ring, suburban ones on a 20-minute drive.
CandidatePeopleBuyersOverlapRead
Fort Greene~95k~5604%Best
Hoboken~70k~3803%Strong
Park Slope~88k~49038%Overlaps
Bethesda~24k~900%Weakest
Buyers = existing online customers inside the ring. Overlap = share of the ring already inside an existing storeโ€™s ring. One input to the site decision, next to rent, footfall and the lease.
Illustrative numbers, not a clientโ€™s. The left read uses DMA because that is the unit you can double spend in and hold out; the right read uses travel time because that is how people reach a store. Both come off the same ZIP master table, one joined to sessions and orders, the other to store transactions and candidate addresses.

The store read is the one most brands have never seen for their own business, because it needs the shipping ZIPs, the store transaction ZIPs and a routing API in one place. Once it exists, the same table answers the follow-ups: which neighbourhoods over-index online but have no store, and whether the people driving 30 minutes to a store are the same households buying online in between.

What to do about it

  1. Put DMA, CBSA, CSA and state on one ZIP master table (how to build it) and key every geo report off it, so the same order is never a New York order in one report and a Bridgeport order in another.

  2. Match the map to the decision. DMA for media buying and geo tests, CBSA for wholesale, delivery and demand screening, division or state for trend reads and tax. Say which one a chart uses in its title.

  3. For store decisions, build drive-time or walk-time rings per location and report population, income and existing orders per 1k people inside each. Treat overlapping rings as one decision.

  4. Geolocate sessions to postal code and join them to the master table so site behaviour reads by DMA. Measure the IP-to-shipping match rate on orders and quote it with any session-based read.

  5. Refresh on the publishers' calendars. Nielsen reviews DMA county assignments annually, and OMB revised the CBSA list in July 2023, so pin the vintage you use and re-check joins when either moves.

If you'd rather have this built and maintained inside your own warehouse, including the session-to-DMA join, it is usually a 1-2 week piece of work for us. Happy to walk through how we'd approach it for your setup.

Common questions

Is an MSA the same as a CBSA?

An MSA is one of the two kinds of CBSA. Core Based Statistical Areas are either Metropolitan (at least one urban area of 50,000 people or more, 387 of them) or Micropolitan (an urban area of 10,000 to 49,999, 538 of them). So every MSA is a CBSA, but ~60% of CBSAs are micropolitan areas, not metros.

Can a DMA span more than one metro?

Yes, routinely. The New York DMA covers the New York-Newark-Jersey City metro plus Bridgeport-Stamford-Danbury, Kiryas Joel-Poughkeepsie-Newburgh and Kingston, among others. The reverse also happens: the Philadelphia DMA includes Mercer County, which is the Trenton-Princeton metro. Keep both as columns rather than assuming one rolls up into the other.

Which should I use for geo incrementality tests?

DMA, in almost every case, because that is the unit TV, CTV and most paid platforms let you target and exclude, and a test has to be run on a map you can actually hold out. Read the results on orders by shipping ZIP rolled up to the same DMA list, and use IP-geolocated sessions as the early indicator, not the verdict.

Is a 10-mile radius good enough for a store trade area?

Usually not. Ten miles is 10 minutes on a suburban highway and 45 minutes across Manhattan or Los Angeles at rush hour, so a radius treats those as the same market. Drive-time and walk-time rings from a routing API cost little to build and follow how people actually reach a store.

We build and maintain governed geography dimensions inside your own warehouse, so orders, sessions and media spend all cut by the same DMA, metro and trade area.

See how it works โ†’
Technical notes

Counts are Nielsen (210 DMAs, reviewed annually) and OMB Bulletin 23-01 (387 metropolitan and 538 micropolitan statistical areas in the 50 states and DC, 184 combined statistical areas including Puerto Rico). The 15-minute figures are rough arithmetic from 2020 Census county densities, with the reachable area taken as ~55% of the crow-flies circle; they are illustrative, not measured trade areas.

SG
Sam Gil
Principal, Growth & Analytics ยท Meridian Growth
About the team โ†’

Keep reading

Data FoundationsOct 2026 ยท 8 min
DMA vs CBSA vs MSA: which geography to use for ecom analysis
Read โ†’
Measurement & AttributionOct 2026 ยท 6 min
Why media affiliates look like your best channel, and the 30-minute test that cut one brand's commission by ~$500k
Read โ†’
Data FoundationsOct 2026 ยท 8 min
How to map ZIP codes to DMA, metro area and region: the one table to join to your orders
Read โ†’
Measurement & AttributionSep 2026 ยท 7 min
Why your year-over-year sales look terrible the week before a holiday
Read โ†’
ExperimentationSep 2026 ยท 6 min
How long to run an ecom A/B test
Read โ†’
ExperimentationSep 2025 ยท 6 min
Why Most Startup Experiments Fail (and What to Do Instead)
Read โ†’
Retention & LifecycleSep 2025 ยท 5 min
Retention in Marketplaces: Why Liquidity Beats Variety Alone
Read โ†’
Acquisition & CreativeSep 2025 ยท 5 min
Why First-Party Pixels Beat GA4 for User Journeys
Read โ†’
Data FoundationsSep 2025 ยท 5 min
Why creative tagging fails, and what a working ontology looks like
Read โ†’

Get in touch.

Tell us what you are trying to figure out. If we can help, we will say how. If we are not the right fit, we will say that too, and point you somewhere better.

01
Free work first
We start by doing a real piece of work on your data, free, so the first thing you judge is output, not a pitch.
02
First build, fixed scope
A trusted core metric layer in weeks, not quarters, at a fixed price. Small enough to be safe, real enough to matter.
03
Scale when it earns it
Month to month from there, from a few thousand a month. You own every model, dashboard and definition.