In cash-on-delivery (COD), the customer's location decides everything β whether the carrier accepts the parcel, what you pay to ship it, and how fast it arrives. eGrow's Geography settings are the single place where you manage your locations, keep them matched to what your carriers expect, and set your shipping costs. Open them under Settings β Geography at https://v2.egrow.com/settings/geography.
This guide covers every part of Geography: the location hierarchy (Provinces, Cities, Areas), bulk CSV import, City Sources, City Corrections, and Shipping Rates.
The location hierarchy
Geography is organized as a hierarchy, from largest to smallest:
- Country β the top level; every location belongs to a country.
- Province (region/state) β belongs to a country.
- City β belongs to a country and, optionally, a province.
- Area (neighborhood/district) β belongs to a city.
Each level has its own tab in Geography. You don't have to fill in every level β most COD stores work primarily at the City level β but the hierarchy lets you organize larger catalogs cleanly.
Provinces, Cities & Areas
The first three tabs β Provinces, Cities, and Areas β all work the same way: a searchable, paginated table with add, edit, and delete.
- Add β click Add province / Add city / Add area (top right) and fill the form:
- Province: name + country.
- City: name + country + (optional) parent province.
- Area: name + country + parent city.
- Edit β open the row's menu and choose Edit to rename it or change its parent/country.
- Delete β remove a single location from its row menu, or select multiple rows and use the bulk Delete action that appears in the top-right toolbar.
- Search β each tab has its own search box to find a location fast; results are paginated.
Bulk import from CSV
Building a location catalog by hand is slow, so every tab has an Import CSV button. The importer builds the whole hierarchy in one pass:
- Click Import CSV and choose the country the file's locations belong to (required).
- Download the template β it has three columns:
province,city,area. - Fill one row per location. A single row can define all three at once (e.g.
Casablanca-Settat, Casablanca, Maarif) and eGrow creates the province, the city under it, and the area under that β linking the hierarchy automatically. Leave a column blank to skip that level. - Upload the file. eGrow imports it and shows a summary counting how many provinces, cities, and areas were created, plus any errors for rows it couldn't process.
Tip: existing locations aren't duplicated β importing the same city twice just reuses it, so it's safe to re-run an import after adding rows.
City Sources
Open Geography β Sources (https://v2.egrow.com/settings/geography/sources). Every carrier has its own list of cities it delivers to. A City Source lets you pull that list into eGrow: toggle a connected shipping company on, and its covered cities are added to your city list.
This is powerful because it means the cities you can pick on an order are the cities your carriers actually serve β not a generic list. Enable the carriers you ship with, and your geography stays aligned with reality. If you don't see a carrier here, connect it first under Shipping & Delivery.
City Corrections
Even with the right city sources, customers type city names in dozens of ways β "Casa", "casablanca", "CASA BLANCA" β and a carrier only accepts the exact spelling it expects. City Corrections (https://v2.egrow.com/settings/geography/corrections) automatically rewrites those variants to the correct name per carrier before the parcel is created, and flags new/unknown cities into a "to correct" queue for you to map.
Because it's a feature in its own right, it has a dedicated guide β see City Corrections: Fixing Carrier City Names for the full walkthrough (auto-flagging, the correction groups, and the pending-city queue).
Shipping Rates
Open Geography β Shipping Rates (https://v2.egrow.com/settings/geography/shipping-rates). Here you set two numbers wherever shipping applies:
- Cost β what the delivery costs you (what you pay the carrier).
- Price β what you charge the customer for shipping.
The difference between them is your shipping margin, and eGrow uses these numbers in your order totals and analytics. You can set rates at three levels, from general to specific:
- Global default β one cost and price applied everywhere unless something more specific overrides it.
- Per carrier β a cost/price for each connected shipping company. Leave a field blank to inherit the global default. Useful when one carrier is cheaper than another.
- Per city (within a carrier) β click the cities button on a carrier to open its city rates, then add a city with its own cost and price. This is where you charge more for hard-to-reach cities. You can edit or delete each city rate from the list.
Specificity wins: a city rate overrides the carrier rate, which overrides the global default. All amounts use your account currency.
How it all fits together
Put simply: City Sources bring in the cities your carriers serve, Provinces/Cities/Areas let you organize and extend that catalog, City Corrections keep customer-typed names matched to each carrier, and Shipping Rates attach the cost and price to those locations. Together they make sure every order ships to a city the carrier accepts, at the right price.
Best practices
- Start with City Sources. Enable the carriers you actually use so your city list reflects real coverage before anything else.
- Import in bulk with the CSV template instead of adding locations one by one β one file can seed provinces, cities, and areas together.
- Keep City Corrections tidy. Clearing the "to correct" queue regularly is the cheapest way to cut rejected parcels.
- Set a global shipping rate first, then add per-carrier and per-city overrides only where they genuinely differ β inheritance handles the rest.
What's next
With your geography clean and priced, connect carriers and start sending parcels β see Shipping & Delivery β or run deliveries with your own team in Managing Your Own Delivery Team.