Contents
- 1.How GroundZones works
- 2.Quick start
- 3.Create a project and pick the airport
- 4.A tour of the map page
- 5.Upload your hotel file
- 6.Zoning by hand on the map
- 7.Checking pins
- 8.Origin and distances
- 9.Zone rules and automatic assignmentOptional
- 10.The two ZIP code tools
- 11.The table, search, Controls and Map Info
- 12.Undo, history and snapshots
- 13.Export the zoned file
- 14.Working with colleagues, and long-running work
- 15.Shortcuts and troubleshooting
Chapter 1
How GroundZones works
Projects, markets, hotels and zones, and the two ways to zone a file.
GroundZones takes a hotel association file (the list of hotels you serve around one airport), puts every hotel on a map, and lets you give each one a pricing zone. When you are done you export the same file, in the same columns, with the zone filled in.
| Word | What it means here |
|---|---|
| Project | One hotel file for one airport. It keeps the hotels, the zones, the map view and up to 50 earlier versions. |
| Market | The airport a project belongs to. You pick it from a list when you create the project, and every distance in the project is measured from its terminal. |
| Hotel | One row of your file. Most buttons and counters on the map page call it a "property"; the two words mean the same thing. |
| Zone | A name and a colour, such as "Zone 3" in green. Every hotel has one zone or is unassigned. |
| Zone rule | A zone plus optional conditions (cities, a maximum distance, ZIP codes, a drawn area) that GroundZones can use to assign hotels for you. |
| Origin | The point distances are measured from. It is the terminal of the project's airport unless you set a temporary one. |
By hand · the usual way
With rules first · optional
There are two ways to give hotels their zones, and you can mix them freely.
- By hand, on the map. Select hotels by dragging a box around them, or click them one at a time, and pick a zone. This is how most files are zoned, and it is all you need. You see the geography, so you can follow a river, a highway or a neighbourhood line that no formula knows about.
- With zone rules, then by hand. Describe your zones once (by distance, by city, by ZIP code or by an area you draw) and let GroundZones assign every hotel in one go. Then fix the edges by hand. Rules are optional: they save time on large files and on schemes that really are "0 to 5 miles, 5 to 10 miles", and they are never required.
Chapter 2
Quick start
From a hotel file to a zoned export, by hand or with a first pass of rules.
Both routes start and end the same way. The difference is only in step 4.
Zoning by hand
- On the dashboard, choose New Project, name it, and pick the airport from the list. Attach your hotel file if you have it ready.
- In the Map Columns window, check that each dropdown points at the right column of your file, then choose Import Properties. Hotels without coordinates are placed on the map from their address.
- Open Zone Rules in the left panel and choose + Add Rule once for each zone you need. Click a name to rename it (for example "Zone 1") and click the colour dot to change its colour. Leave the other cells empty.
- On the map, hold Space and drag a box around a group of hotels. In the panel that appears at the top, open the zone dropdown and pick the zone. Repeat for each area. Use Ctrl + drag to add to a selection and Shift + drag to take hotels out of it.
- Click any single hotel to open its popup and change its zone there, for the ones a box cannot catch cleanly.
- Open the Table tab on the right edge and tick Check pins to list hotels whose location could not be confirmed. Fix or confirm each one.
- Choose Export in the left panel (or XLSX / CSV in the table). You get your original columns back, in their original order, with the zone filled in.
A first pass with rules, then by hand
- Create the project and import the file as above.
- Open Zone Rules, add one rule per zone, and fill in what defines each zone: a maximum distance in Dist, city names in City, ZIP codes in ZIPs, or a drawn area.
- Under Assignment Mode, choose the mode that matches what you filled in. Distance Only is the simplest: it turns the distances into bands such as 0 to 7 miles and 7 to 15 miles.
- Choose Apply Zoning Rules. Every hotel that matches a rule gets its zone, and the map is recoloured.
- Tidy up by hand: box-select the hotels that landed in the wrong zone and move them, exactly as in the manual route.
- Check pins, then export.
Chapter 3
Create a project and pick the airport
One project per hotel file. The airport you pick becomes one of your markets.
- Open the Dashboard (the logo in the top bar always takes you there) and choose New Project, or the dashed Create New Project tile.
- Type a Project Name, for example "Denver Airport Hotels". A Description is optional.
- Under Market, type a city, an airport name or a code in the box that reads "Search by city, airport name or code", and pick the airport from the list. Typing a code without picking a row does nothing: the airport is always chosen from the list, never typed, so a project can never point at the wrong place.
- Read the notice under the airport (see below) and tick its checkbox if it has one.
- Optionally choose Select property file (CSV, Excel) to attach your hotel file now.
- Choose Create Project.
If you attached a file, you are taken straight to the map and the Map Columns window opens by itself. If you did not, you stay on the dashboard: click the new project tile to open its map.
Markets are permanent
Your plan is counted in airports, called markets. The first time any project uses an airport, that airport becomes one of your markets, and the notice under the picker tells you exactly what will happen before you create anything:
- "{CODE} is already one of your markets - no change to your plan." You already hold this airport. A project there costs nothing extra, and a market holds up to five at a time.
- "{CODE} already has 5 projects, and a market holds up to 5. Delete one you no longer need to make room." The market is full, on any plan. Deleting a project frees its place; the same applies to Duplicate project and to moving a project to another airport. If your own work in an airport needs more, the notice gives the address to write to.
- "This makes {CODE} market 2 of 5. Markets are permanent." The airport is new and your plan has room. Tick "I understand {CODE} becomes a permanent market on my account." to continue. On a new account the notice also says "Opening your first airport starts your 14-day free trial."
- "{CODE} is a new market. Adding it changes your plan:" You subscribe already and the airport takes you past the number you pay for. The notice shows the new number of markets, the plan and what is charged today. Add market and continue bills your card at once.
- "{CODE} would be market 2, and your trial covers 1." Choose a plan first, with Choose a plan.
- A team member who is not an admin sees a note asking the workspace owner or an admin to add the market, because adding one is permanent and billed to the owner.
Copy a project
To start from an existing project, for next season's file or to try a different set of zones, hover its tile on the dashboard and choose the copy icon (Duplicate project). A new project named "{name} (copy)" appears with every hotel, every zone rule, the origin and the map settings of the original. The two are independent from then on: editing the copy never changes the original. Rename the copy with the pencil icon.
The copy uses the same airport, so it costs nothing extra. Snapshots and job history stay with the original. If you can see only some of the workspace's projects, the copy is placed outside any folder and you can edit it.
Chapter 4
A tour of the map page
What each part of the screen is for, and where to find it.

| Part | Where | What it is for |
|---|---|---|
| Top bar | Top | The project switcher, Undo, Redo, History and Snapshots, the ZIP check (an amber ZIP issues badge when hotels are flagged), a ? that opens this manual, and Jobs, Team and Profile. |
| Zone Management panel | Left | Five sections that open and close: File Management, Set Origin Point, Zone Rules, ZIP Code Conflicts and Zone Statistics. |
| Map | Centre | One coloured dot per hotel, a red dot for the origin, and any areas you have drawn. |
| Search | Top left of the map | A magnifying glass that opens into "Search this area...". It finds places, addresses and the postcodes your hotels carry, and moves the map there. |
| Controls | Top right of the map | Which layers are shown and which draws on top, which zones are shown, and the size of the dots. |
| Table | Right edge | A tab that slides out every hotel as a spreadsheet you can sort, filter, edit and export. |
| Selection panel | Top of the map | Appears when hotels are selected. Changes their zone, measures their distance, or deletes them, all at once. |
| Map Info | Bottom right of the map | Counts, the selection's distance range, the airport and the origin. |
- A small ? beside a panel's title opens the part of this manual that explains it, in a new tab, so the map keeps your selection and undo history.
The top bar
The bar across the top of every page. It holds the project switcher, Undo, Redo, History and Snapshots, the ZIP check (an amber ZIP issues badge when hotels are flagged), a ? that opens this manual, and Jobs, Team and Profile.
- On a narrow window the top bar folds itself: labels shrink to icons first, then the links move into a menu button. Every icon keeps its tooltip.
Inside the map
The map fills the centre of the page: one coloured dot per hotel, a red dot for the origin, and any areas you have drawn. Four things float on top of it — Search at the top left, Controls at the top right, Map Info at the bottom right, and the selection panel, which appears at the top only while hotels are selected.
- Controls and Map Info can be dragged by their header and folded with the arrow in it. They go back to their corner when the table is opened or closed.
- The table is the tab on the right edge. It slides out every hotel as a spreadsheet you can sort, filter, edit and export.
The left panel
The Zone Management panel down the left side, in five sections that open and close: File Management, Set Origin Point, Zone Rules, ZIP Code Conflicts and Zone Statistics.
- Drag the right edge of the left panel to make it wider or narrower, and use the small arrow on that edge to fold it away. On a phone it opens from the layers button at the top left of the map.
- The sections of the left panel remember whether they were open, per browser. The first time, File Management and Set Origin Point are open and the other three are closed.
Chapter 5
Upload your hotel file
Column mapping, what happens to your columns, and adding a new list to a project later.
Open File Management in the left panel and choose Upload. Pick a .csv, .xlsx or .xls file of up to 50 MB. The first row must hold the column headers, and in an Excel file only the first sheet is read. Nothing is sent yet: the Map Columns window opens first.
Map your columns
The window shows the file name with its number of rows and columns, a preview of the first five rows, and nine dropdowns under Column Mapping: Property Name, External ID, Address, City, State, ZIP Code, Country, Latitude and Longitude. Each one lists every header in your file, plus -- Not mapped --.
GroundZones fills the dropdowns in by reading your headers ("Hotel Name", "Postal Code", "Lat"...). It guesses; you confirm.
- You need at least one of Address, City or ZIP Code, or both Latitude and Longitude. Latitude and longitude only count as a pair.
- Map External ID whenever your file has a hotel ID. It is how GroundZones recognises a hotel it already has when you upload the next list.
- Columns you do not map are not lost. They are kept with each hotel, shown in the table, and written back into the export in their original position.
Sort into zones from a column (optional)
If the file already carries zones, choose that column under Sort into zones by column. Each different value becomes a zone with its own colour, every hotel starts in the zone the file gave it, and the zone is written back into that same column when you export. A hotel whose cell is empty starts unassigned, and an empty cell makes no zone. Leave the dropdown on -- Don't create zones -- to start with every hotel unassigned.
The zones created this way also get their cities, their ZIP codes and a maximum distance filled in from the hotels they contain, so they are ready to be used as rules later if you want. The Airport Code shown beside the option is the project's market and cannot be changed here.
Import options
When the project already has hotels, Property Import Mode asks what to do with them:
- Add new properties only (the default) keeps everything you have. A row whose External ID is already in the project is skipped, so uploading the same file twice is safe, and hotels you have zoned keep their zones. Nothing in the file reaches a hotel that is already here — a corrected address in it is ignored.
- Update existing properties, add the new ones is for a newer list of the same hotels. A row whose External ID is already in the project refreshes that hotel from the file — name, address, city, ZIP code, coordinates — and leaves the zone it is in alone. Rows that are new arrive unassigned, ready to zone. Hotels missing from the file are left where they are.
- Replace all properties deletes this project's hotels first and imports the file in their place, zones included: every hotel is zoned again from scratch. While it runs, the map is view-only for everyone in the project.
When you are creating zones from a column and the project already has zone rules, Existing Zone Rules offers Replace with new zone rules (your current rules are cleared, and a backup file is offered for download afterwards) or Keep existing zone rules (your rules stay as they are, and a zone in the file that has no rule yet gets one).
Automatically geocode properties missing coordinates is ticked by default. Leave it on unless every row already has a latitude and longitude.
What the import does
Choose Import Properties. The window shows a progress bar (and a map joke or two) while the work runs on the server:
- The rows are read. A row with no address, city, ZIP code or coordinates at all is left out.
- Hotels without coordinates are placed from their address. Each answer is checked against the address that was asked for: a different street number, or a city and ZIP code that both disagree, flags the pin for review instead of passing it off as exact. An address the map does not have at all is placed in the middle of its town or postcode area, flagged the same way. A match on another continent than the airport is never used.
- If you are creating zones from a column, the driving distance from the airport terminal to each hotel is measured, and a hotel no road reaches is flagged for review.
- If you are creating zones from a column, the zones are created.
- Coordinates that are already in the file are trusted as they are and are never moved by the import.
- In Update existing properties mode, a column the file leaves blank never blanks what the project holds, and extra columns merge one by one, so a column the newer file drops keeps its value. An updated hotel whose address changed without coordinates beside it is placed again from the new address, and its measured distance is dropped, because it described the old building; if the map finds nothing for the new address, the hotel keeps the pin it had. New hotels arrive unassigned: to zone just those with your rules, apply them with Only hotels with no zone yet ticked.
- Without a zone column, distances are not measured during the import. They are measured when you ask for them (see Origin and distances) or when a rule needs them.
- State and country are tidied into two-letter codes ("Colorado" becomes "CO"; a blank country becomes "US"). Everything else is kept as you wrote it, including a ZIP code that a spreadsheet stripped of its leading zero.
The Upload Complete screen shows four counts: Properties Created, Geocoded, Zone Rules Created and Distances Calculated, with Properties Updated beside them after an update import. It also lists rows skipped because they already existed, hotels still missing coordinates, and up to ten row errors in the form "Row 12: ...", where the header is row 1. Choose Done to return to the map.
Chapter 6
Zoning by hand on the map
The main way to work: make your zones, select hotels, give them a zone.
Zoning by hand takes three things: a list of zones, a way to select hotels, and a way to give the selection a zone. None of it needs a rule, a distance or an assignment mode.
1. Make your zones
- Open Zone Rules in the left panel.
- Choose + Add Rule. A zone called "Zone 1" appears with a colour of its own. Choose it again for "Zone 2", and so on. Each new zone gets the colour that stands out most from the zones you already have, and never one that could be taken for the unassigned colour.
- Click a zone's name to rename it, and press Enter. Name zones exactly as your rate sheet does.
- Click the round colour dot to pick a different colour: drag in the picker, or click one of the swatches below it. A swatch drawn small looks like another zone's colour (hover it to see which), and the picker says "Looks like Zone 3 on the map" when the colour you chose does.
That is all a zone needs. The City, Dist and ZIPs cells can stay empty ("Any", "No limit", "None"): they only matter if you later use rules. If you created zones from a column during the upload, they are already here.
- Click the Color heading to give every zone a fresh colour at once. Each click is a different arrangement, every one chosen so that zones whose hotels sit side by side on the map get the most different colours. It is a single Undo step, but it is easy to do by accident.
- Renaming a zone renames it on every hotel in the project that has it.
- Deleting a zone with the x at the end of its row removes it from the list only. Hotels keep the zone name, without its colour, until you give them another zone.
- The Unassigned row at the bottom shows how many hotels have no zone yet. Click its dot to choose the colour unassigned hotels are drawn in.
2. Select hotels
Select
Space + drag
Add
Ctrl + drag
Remove
Shift + drag
| Space + drag | Draw a box and select the hotels inside it, replacing the current selection. The cursor becomes a crosshair and the box is purple. |
|---|---|
| Ctrl + drag (Cmd on a Mac) | Add the hotels in the box to the selection. The box is green. |
| Shift + drag | Take the hotels in the box out of the selection. The box is red. |
| Click a hotel | Select just that hotel and open its popup. |
| Ctrl + click (Cmd on a Mac) | Add one hotel to the selection. |
| Shift + click | Take one hotel out of the selection. |
| Click empty map | Clear the selection. |
- A whole zone at once. Under Controls, in Zone Visibility, the pointer icon at the end of a zone's row selects every hotel in that zone; the same icon on the Unassigned row selects every hotel without a zone. This is the quickest way to work through what is left.
- From the table. Click rows or their checkboxes; Shift + click selects a range; the checkbox in the header selects every row currently listed. The table and the map share one selection.
- A selected dot is drawn slightly larger. Map Info shows "Selected: 12" with a Clear link, and the range of driving distances in the selection.
- A box only catches hotels you can see: hotels in a zone you have hidden under Controls are left out. Selecting a zone with its pointer icon does include them.
- Move the pointer over the map before pressing Space, so the map is what hears the key. A plain drag always pans the map.
3. Give the selection a zone
As soon as two or more hotels are selected (or one, if you used Ctrl + click or a box), a purple panel appears at the top of the map reading "12 properties selected", with the selection's distance range under it. You can drag it by its header.
- Open the dropdown at the left of the panel. It shows the zone the selected hotels share, "N/A" if none of them has a zone, or "Mixed".
- Pick a zone, or Unassigned to clear the zone.
- The hotels change colour at once and the panel confirms: Rezoned 12 properties to "Zone 3".
- The whole change is one step in the history: Ctrl+Z puts every hotel back.
- If a colleague changed some of those hotels after your map loaded them, theirs are left as they are and the panel says how many: "... 2 changed by someone else".
- Only zones in the Zone Rules list are offered. Add a zone there first if you need a new one.
- When the zoning is done, Fill from Hotels above the rule table writes each zone's cities and ZIP codes into its rule (see The rule table).

One hotel at a time
Click a hotel to open its popup. The coloured Zone button at the bottom shows its zone: click it, pick another from the list, and it is saved. The rest of the popup is editable the same way: click a value, type, and press Enter (or click away) to save, Esc to cancel.
| In the popup | What you can do |
|---|---|
| Name, Address, City, State, ZIP | Click to edit. Saving a change to the address, city, state or ZIP looks the address up again and moves the pin to the new location. |
| Coords | Click to type or paste the position as one pair, latitude first: "41.936, -87.850". Press Enter, or click away, to save; the pin moves once, when both numbers are there. If you copy the two numbers separately, paste the latitude and then the longitude and the comma is added for you. With only one number in the box nothing is saved and the box stays open; Esc puts the old position back. This is how you move a pin; dots cannot be dragged. |
| Distance | The driving distance from the origin, when it has been measured. |
| Zone | Click to change the zone. |
| Geocode | Looks the address up and, if the result differs, shows the old and new coordinates with Update and Keep. |
| Reverse | Looks up the address at the pin and offers it with Update and Keep. |
| Distance | Measures the driving distance from the origin now. |
| Delete Property | Deletes the hotel. |
Zoning in the table
Open the Table tab on the right edge. Click the Zone cell of a row: a box opens with Unassigned, your zones (the list narrows as you type) and, when what you typed matches none of them, Create: .... Use the arrow keys and Enter, or click an option. Esc cancels. Clicking elsewhere closes the list without saving.
The table is the best place to zone by a column rather than by location: filter with the search box, tick the header checkbox to select everything listed, and pick the zone in the selection panel over the map.
The other buttons in the selection panel
| Button | What it does to the selected hotels |
|---|---|
| Geocode | Places the hotels that have no pin yet, from their street address. Hotels that already have a pin are left out, so this never moves an existing pin; to move one, use Geocode in its popup. Hotels with no street address are left out too. If nothing is left to place, the panel says why and nothing runs. When it finishes it says how many were placed and what it left out. A hotel it could place only approximately gets its pin but is flagged for Check pins. When the map does not have the street at all, that pin is in the middle of the hotel's town or postcode area. A hotel whose town cannot be found either stays off the map. |
| Reverse | Replaces the street, city, state and ZIP of each hotel with the address found at its pin, without asking hotel by hotel. It is for rows that came with coordinates and no street. A hotel with a city or ZIP but no street counts as having no street, and its city and ZIP are replaced too, so the whole address comes from one place. Where the map finds only a street name with no house number, a hotel that already has a street keeps its address: on the same street nothing changes, and on a different street the hotel is flagged for Check pins instead, because the pin or the address is wrong. If any of the selected hotels already have a street it stops first and offers only the ones without: Reverse the N with no street, or, when every hotel already has a street, nothing to fill in. Ticking Also replace the N that already have a street explains what would be lost and turns the button into Reverse all N, replacing N addresses; the box is clear again every time the panel opens. Hotels with no pin are left out. A selection where no hotel has a street runs at once. |
| Distance | Measures the driving distance from the origin to each hotel, replacing any earlier figure. Needs an origin. |
| Pins are correct (N) | Shown only when some of the selected hotels have a pin flagged for Check pins; N is how many. It clears the flag on those hotels, after asking once, and touches nothing else: no pin moves and the other selected hotels are left alone. With one flagged hotel in the selection it reads Pin is correct and does not ask. |
| Delete | Deletes the hotels, after asking once. |
Zone changes, confirmed pins and deletes happen in one go. Geocode always runs on the server, and so do Reverse and Distance on ten or more hotels: a progress bar appears in the panel with Pause, Resume and Cancel, and the selection is locked until it finishes. Cancel puts every hotel back as it was before the run.
Every one of these, once finished, is a single step in the history: Ctrl+Z puts the addresses, pins or distances back as they were.
Chapter 7
Checking pins
The amber ring, what each reason means, and how to settle it.
A wrong pin gives a wrong distance and sits in the wrong place for a box selection, so GroundZones does not take a geocoder's word for it. Every location it finds is compared with the address it was asked for, and a pin it could not confirm is marked with an amber ring.
Where a pin comes from depends on your file. Coordinates in your file are used as they are, and the address beside them is never looked up. A hotel without coordinates is placed from its address, using OpenStreetMap. Most addresses are found exactly. When the map does not have the street or the street number, the pin goes on the closest match it found, which can be a neighbouring building or, for a street the map lacks altogether, a similar-sounding street in the same town. When nothing matches at all, the pin goes in the middle of the hotel's town or postcode area, so the hotel is on the map where you can see it and move it. A match on another continent than the project's airport is never used: the hotel gets its town instead, or no pin at all. Those are the pins to check, and the fix is yours to make: the map cannot know where a street it has never heard of is. A file that carries latitude and longitude avoids all of this.
- Open the Table and tick Check pins (N). It appears only when there is something to check, and it lists exactly those hotels, under a note on where pins come from. Their Pin column reads Check; hover it for the reason.
- Double-click a row to fly the map to the hotel, then click its dot.
- Read the amber Check this pin box in the popup: it gives the reason and, when there is one, the address the map matched ("Matched: ...").
- If the dot is on the right building, choose Pin is correct. If not, correct the address (the pin moves when you save it), or type the right coordinates under Coords: look the hotel up on any map, copy its latitude and longitude, and type them in.
To confirm several pins at once, select the hotels, on the map or in the table, and choose Pins are correct (N) in the selection panel, or right-click one of the selected rows in the table and choose it there. N counts the selected hotels that are flagged; the rest of the selection is not touched. It asks once before it clears the flags, because the flags are your list of what is left to look at.
To see where those hotels are, open Controls and switch on Only pins to check (N), at the bottom of Map Layers. Every other dot is hidden, and each pin you confirm leaves the map, so what is still drawn is what is left to do; after the last one every hotel is back. It lasts for this visit only: the map always opens with every hotel.
| The popup says | What happened |
|---|---|
| "This address was not found on the map, so the pin is on the closest match. It may be a different building or a different street." | The map does not have this street number, or does not have the street at all, and answered with the nearest thing it found. "Matched: ..." says what that was. |
| "Only the town or postcode of this address was found, so the pin is in the middle of that area, not at the building." | The map does not have this street, or the row has no street. The pin is in the middle of the town or of the ZIP or postcode area, which can be miles from the hotel. "Matched: ..." names the area. |
| "Checking this address again placed it somewhere other than this pin, so the pin may be in the wrong spot." | The address checks out, but the stored pin is far from it. |
| "This pin was placed before addresses were checked, so it has never been confirmed." | An older project, from before pins were checked against addresses. |
| "No driving route reaches this pin from the airport, so the coordinates may be wrong." | The pin is in water, on an island with no road link, or on another continent. |
- Pin is correct clears the flag and nothing else. Ctrl+Z brings the flag back.
- Pins are correct (N) does the same for a group, as one step: Ctrl+Z brings all of those flags back, until you reload the page. A hotel a colleague changed after your map loaded it keeps its flag, and you are told how many.
- Typing new coordinates does not clear the flag by itself; confirm the pin afterwards.
- Coordinates that came in your file are trusted and are not flagged for their address. They are flagged only when no road reaches them.
Chapter 8
Origin and distances
Where distances are measured from, when they are measured, and how to refresh them.
Every distance in GroundZones is a driving distance, by road, from the origin to the hotel. The origin is the red dot on the map; click it for the airport's name, code and coordinates. In a project it is the airport's terminal, the point a vehicle actually leaves from, not the middle of the airfield.
Distances are shown in the hotel popup, in the table's Dist (mi) or Dist (km) column, in the selection panel and Map Info (as a range for the selection), and in Zone Statistics. They are not part of the exported file.
When distances are measured
- During an upload, only when you create zones from a column.
- When you ask: select hotels and choose Distance in the selection panel, or Distance in one hotel's popup. This always measures afresh.
- When rules run: every hotel is measured from the origin the run uses, so a moved pin or a new market is always taken into account. Routes already worked out are remembered, so an unchanged hotel costs nothing to measure again.
- When the market changes: every hotel is measured again from the new airport, by itself (see below).
Changing the market
Open Set Origin Point. The box reads "Market DEN" with a Change link. Choose it, pick another airport from the list, read the notice (a new airport becomes a permanent market, exactly as when creating a project), and choose Set market. The origin moves to the new terminal, the map centres on it, and every hotel is measured again from there: a banner at the top of the map shows the progress, with pause and cancel, and the map reloads when it is done.
Measuring from somewhere else, for now
To measure from a convention centre or a cruise terminal, choose the x on the origin chip ("Remove origin") and then click the map where the new origin should be. Distance, Apply Zoning Rules and the Cities Distance List all use it.
Chapter 9Optional
Zone rules and automatic assignment
Describe your zones once and let GroundZones do the first pass. Never required.
A zone rule is a zone with conditions attached: a maximum distance, a list of cities, a list of ZIP codes, or an area drawn on the map. Apply Zoning Rules reads the conditions and assigns every hotel that meets them. It is a first pass, not a verdict: what it gets wrong you move by hand, exactly as in the previous chapter.
Use rules when the file is large, when your scheme really is a set of distance bands or a list of cities, or when the same scheme will be applied to a new list every season. Skip them when the map tells you more than a formula would.
The rule table
| Column | What goes in it |
|---|---|
| Color | The zone's colour. Click the dot to change it. Clicking the heading recolours every zone, keeping zones that meet on the map the most different. |
| Zone | The name. Click to rename. |
| City | One or more city names, separated by semicolons: "Denver; Aurora". Empty reads "Any". |
| Dist | The zone's maximum driving distance from the origin, in the project's unit (miles or kilometres, see Origin and distances). Empty reads "No limit". There is no minimum: where one is needed it is the previous zone's maximum. |
| ZIPs | ZIP codes separated by commas: "80202, 80203". Write five-digit ZIP codes in full, including a leading zero ("07114"). |
| x | Deletes the rule. Hotels keep their zone. |
- Click the Zone, City or Dist heading to sort the list; it opens sorted by Zone. Click # to see the table's own order instead, and drag a rule by the handle on the left of its row to move it. Dropping a rule switches the list to that order. The order matters only when overlapping rules have the same distance (see When two rules claim a hotel).
- Download saves the rules as a file named for the project's airport, such as DEN_zone_rules.xlsx (with no rules yet, it saves a small CSV template to fill in). Upload replaces all the rules with the ones in a CSV or Excel file that has a zone name column and, optionally, city, maximum distance, ZIP codes and colour. It asks first, and drawn areas are not part of a rules file, so they are lost with the rules they belonged to.
- Fill from Hotels brings the table up to date with the map after you have zoned by hand, with no need to export the file and upload it again. Each zone's rule gets the cities and ZIP codes of the hotels now in that zone, replacing what its City and ZIPs cells hold, and a zone that has hotels and no rule gets one. A rule whose Dist is empty gets the distance of its zone's farthest hotel; a distance that is already there is kept, and so are colours and drawn areas. It asks first and says how many rules change. A cell is left alone when no hotel in the zone has that column filled in, and hotels with no zone are not read. One Ctrl+Z reverses it.
- Fill from Hotels reads distances, it does not measure them. Where a zone's hotels have none yet, the question says "No distance for Zone 1: its hotels have no distance yet. Select the hotels, choose Distance, then fill again." Do that, and the second fill adds the distance.
- What Fill from Hotels cannot do, it names in the question: a zone with more than one rule is left as it is, and the City cell holds 500 characters, so a zone with more cities than fit gets the first of them in alphabetical order. Outside the US the ZIPs cell gets the postcode area: the first three characters of a Canadian postal code or an Eircode, and any other postcode as it is written.
- Clear All deletes every rule after asking. Hotels keep their zones, and a snapshot named "Before deleting all zone rules" is saved first.
- If a colleague edits the same rule at the same time, you see "Someone else changed this zone rule. Showing their version." and your edit is dropped.
The four assignment modes
Under the table, Assignment Mode decides which of a rule's cells are read. The mode is chosen each time you apply; it is not saved with the project, and the page opens on City and Distance.
| Mode | Reads | A hotel matches a rule when |
|---|---|---|
| Distance Only | Dist | its driving distance falls in the rule's band |
| City and Distance | City, Dist | its city is in the rule's list (by name or by boundary) and its distance fits |
| ZIP Code Boundaries | ZIPs, Dist | its pin lies inside one of the rule's ZIP code areas, and its distance fits |
| Custom Polygon | the drawn area, optionally Dist | its pin lies inside the rule's area |
Distance Only
Zone 1
0 to 7 mi
Zone 2
7 to 15 mi
Zone 3
15 to 25 mi
Beyond 25 mi
keeps its zone
Rule table: Zone 1 · Dist 7 | Zone 2 · Dist 15 | Zone 3 · Dist 25
The rules are sorted by Dist and turned into bands that do not overlap: with zones at 7, 15 and 25 miles you get 0 to 7, 7 to 15 and 15 to 25. City, ZIPs and drawn areas are ignored.
- A rule with no Dist is left out of the run.
- A hotel exactly on a boundary goes to the nearer zone.
- A hotel beyond the largest distance matches nothing and keeps its zone. Give your outermost zone a generous maximum if it should catch everything else.
- Needs an origin.
City and Distance
Two choices appear when this mode is selected. The first is how a city is recognised:
- Match by city name (text comparison) compares the hotel's City column with the rule's list. The match ignores upper and lower case but is otherwise exact: "St. Louis" is not "Saint Louis". A hotel with no city never matches a rule that names cities; a rule with no city accepts any.
- Match by city boundaries ignores the City column and asks whether the hotel's pin lies inside the city's boundary from OpenStreetMap. It catches hotels whose City column names a suburb or is misspelt.
The second is City only (ignore distance limits). Ticked, the distance is not checked and no origin is needed: the city alone decides, and a rule with no city matches nothing.
With distance on, each rule's Dist is its own upper limit: a hotel matches when its city is in the rule's list and it is within that distance. "Zone 1, Denver, 7 mi" and "Zone 2, Aurora, 15 mi" take Denver hotels up to 7 miles and Aurora hotels up to 15. Two rules on the same city, say 7 and 15 miles, split that city at 7, because where two rules both claim a hotel the tighter one wins. A rule with no city matches any city, but only within its distance; a rule with no Dist matches its cities at any distance.
- By boundary, a city is matched by its name alone, so a name shared by towns in two states matches both. A city GroundZones has no boundary for matches nothing, without a message: turn on City Boundaries under Controls and look at the area first to see what is there.
ZIP Code Boundaries
A hotel matches a rule when its pin lies inside the area of one of the rule's ZIP codes, and (unless ZIP only (ignore distance limits) is ticked) it is within the rule's Dist. A rule with no ZIP codes is skipped; a rule with no distance matches on the area alone.
Custom Polygon: areas you draw
Selecting Custom Polygon lists your zones as chips under "Click to toggle visibility/editing:". A zone can have one area or several.
- Click the chip of a zone that has no area yet. Drawing tools appear at the top left of the map, under the zoom buttons.
- Choose the polygon tool and click around the area, finishing on the first point; or choose the rectangle tool and drag. The shape is saved to the zone as soon as it is closed, in the zone's colour. Lines that cross themselves are refused.
- Draw another shape to add a second area to the same zone (the chip shows "x2").
- Click anywhere else on the map, or choose another mode, to finish; the area stays shown. Clicking the chip again also finishes, and hides the area; click the chip once more to show it again and edit it: drag the handles with the edit tool and choose Save. A hidden area still counts when rules are applied.
- Choose Apply Zoning Rules. Hotels inside an area get its zone; hotels outside every area keep what they had.
- On a chip, a tick means the area is shown and a crossed eye means it is hidden. Showing an area also opens it for editing.
- To remove a zone's areas, use the bin button beside its chip, or the delete tool on the map. Both save at once. To take back one city or ZIP area out of several, click it on the map and choose Remove from Zone (see "Turning a city or ZIP boundary into an area" below).
- Drawing, reshaping and removing an area are each one step in the history, so Ctrl+Z takes them back. If a shape cannot be saved, a message says so.
- Also enforce max distance from origin makes a hotel match only when it is inside the area and within the rule's Dist by driving distance. With it ticked, a rule with no distance matches nothing.

Generate Sectors
In Custom Polygon mode, Generate Sectors draws the areas for you: for each rule that has both a City and a Dist, a 40° wedge from the origin toward that city, reaching out to the rule's distance. A rule with several cities gets a wedge for each, joined together. It needs an origin.
- If some rules already have areas you are asked whether to overwrite them. OK replaces them; Cancel keeps them and still fills in the rules that have none.
- A summary lists what was generated and what was skipped: rules with no distance, rules with no city, existing areas that were kept, and cities that could not be found.
- The wedge's reach is measured in a straight line. Tick Also enforce max distance from origin to hold hotels to the driving distance as well.
- Nothing is assigned until you choose Apply Zoning Rules, and generating is not a step in the history.
- A city is looked up by its name alone. If a wedge points the wrong way, a town of the same name elsewhere was found: redraw that area by hand.
Turning a city or ZIP boundary into an area
Turn on City Boundaries under Controls, zoom in until the dashed blue outlines appear, and click a city. Below its details, choose a zone under Select zone... and then Add to Zone: the city's outline is added to that zone's area. Tick Clip to driving distance and enter Max distance (miles) to keep only the part of the city within that drive of the origin; the button becomes Add Clipped to Zone.
A ZIP code area works the same way. Turn on ZIP Code Boundaries (Postcode Boundaries in Australia, Canada, Denmark and Ireland), zoom in until the red outlines appear, click an area and use the same Select zone..., Clip to driving distance and Add to Zone. Adding several ZIP codes to one zone builds its area piece by piece. Click anywhere on the map to close its details, another city or ZIP area included: that click only closes them, and the next one opens the area you clicked.
The side panel then opens at Zone Rules with Custom Polygon chosen, and that zone is marked in its list. That is where the area is managed: click the zone to hide or show it, or the bin beside it to delete the whole area. A zone whose area was hidden is shown again when something is added to it, so the new piece is always on the map. As with any area, hotels are not assigned until you apply the rules in Custom Polygon mode.
To take one city or ZIP area back out of a zone, click it on the map again. Under "This spot is already in:" its details list every zone whose area covers the spot you clicked, and Remove from Zone takes that city or ZIP area out of the zone, every part of it, and leaves the rest of the zone's area as it was. Where the spot is in a clipped part of a city, or in a shape drawn by hand, only that one piece is removed. Pointing at the button shows the piece in bold on the map. It is one step in the history, so Ctrl+Z puts it back. Removing a piece changes the rule, not the hotels: the ones already assigned keep their zone.
When two rules claim a hotel
Areas, ZIP code lists and city boundaries can overlap: two wedges cross near the airport, or two zones both list Chicago. The hotel then goes to the tightest zone, the one with the smallest Dist. A rule with no distance counts as the loosest and only picks up what no other rule claimed.
- A rule's name and the size of its area play no part.
- Where overlapping rules have the same distance, or none at all (common with drawn areas), the rule higher in the table wins. Click # to see that order, and drag a rule up or down to change it.
- Distance Only has no overlaps to settle, because bands never overlap.
Applying the rules
Choose Apply Zoning Rules. If the mode needs an origin and there is none, you are told: "Please set an origin point on the map for distance-based assignment". The run happens on the server, and a progress bar appears under the button with Pause, Resume and Cancel. A paused run carries on with the same mode and options when resumed.
- Cancel stops the run and puts every hotel's zone back as it was ("Canceling will roll back all changes"). This works from the page that started the run. If you leave and come back, the run is shown in a banner at the top of the map instead, and cancelling there keeps what was already changed.
- Only hotels with no zone yet, just above the button, limits the run to unassigned hotels. Every hotel that already has a zone is left alone, including ones zoned by hand, and nothing is measured for it. Use it after merging a newer hotel file, to zone the new hotels without undoing the edges you fixed. A hotel a colleague zones while the run is going is left alone too.
- When it finishes, the map is recoloured, Zone Statistics are refreshed, and the history gains one step such as "Applied zone rules (Distance Only) - 412 properties rezoned".
- Every hotel a distance matters to is measured from the run's origin during the run, and the new figure is stored. A hotel no road reaches from the origin matches no distance rule.
- If a colleague is already applying rules in the project, yours is refused with "Already running" and their name.
Chapter 10
The two ZIP code tools
ZIP Code Conflicts changes zones. ZIP issues questions the ZIP code, or the pin.
Left panel
ZIP Code Conflicts
One ZIP code, two zones. The fix changes zones, for the whole project at once.
Top bar badge
ZIP issues
The ZIP code or the pin is wrong. You correct the ZIP code, one hotel at a time.
| ZIP Code Conflicts | ZIP issues | |
|---|---|---|
| Where | A section of the left panel | An amber badge in the top bar |
| The question | Do hotels that share a ZIP code sit in different zones? | Does this hotel's ZIP code agree with where its pin is? |
| What it changes | Zones | One hotel's ZIP code, when you say so |
| How much at once | Every conflict in the project | One hotel at a time |
ZIP Code Conflicts: one ZIP code, one zone
Many rate sheets are published by ZIP code, so a ZIP code split between two zones is a problem. Open ZIP Code Conflicts in the left panel and choose Check ZIP Code Conflicts. You get either "No ZIP code conflicts found" or a count, "3 conflicts found", which also appears in Map Info, with a list of the ZIP codes: each with its city, the zones its hotels are in and how many are in each, and a Select button.
To settle one by hand, choose Select: its hotels are selected on the map, and you give them a zone in the selection panel as usual. This is the careful way, and the one to use when your zones follow streets or drawn areas rather than ZIP codes.
To settle them all at once, pick a Resolution Strategy and choose Fix 3 Conflicts:
- Majority - assign to most common zone: each ZIP code goes to the zone most of its hotels are already in.
- Nearest - closest to origin: each ZIP code goes to whichever of its zones has the smallest Dist in the rule table.
- Furthest - farthest from origin: the zone with the largest Dist.
- Only zoned hotels count. A ZIP code with nine hotels in Zone 2 and one unassigned is not a conflict, and the fix never zones an unassigned hotel.
- Hotels are grouped by ZIP code and city. A ZIP code is read as five digits, so "7114" (a ZIP a spreadsheet stripped of its zero), "07114" and "07114-1234" are the same ZIP; the city is compared without regard to capitals.
ZIP issues: a wrong ZIP code, or a wrong pin
When a hotel's pin lies well outside the area of its own ZIP code, one of the two is wrong, and the file alone cannot say which. GroundZones counts these hotels in an amber badge in the top bar, "12 ZIP issues". When nothing is flagged the badge is a plain ZIP check button instead. Click either to open ZIP codes.
- Choose Check 12 addresses. It looks up exactly the hotels listed under Not checked yet, with the ZIP code deliberately left out of the question so the answer cannot simply echo it. Progress shows in place of the button ("Checking 4 / 12").
- When it finishes, the list is sorted into three groups.
- Work through The ZIP looks wrong: the row shows the ZIP code on file, the one the address resolved to, and the address that was matched. Choose Use 80203 to accept it, or Dismiss to leave the row as it is and take it off the list.
- For The ZIP is right; the pin is somewhere else, there is nothing to change in the ZIP code. Find the hotel on the map and correct its pin (see Checking pins).
| Group | What it means |
|---|---|
| The ZIP looks wrong | The address was found at building level, and it is in a different ZIP code from the one on file. |
| Not checked yet | The pin is outside its ZIP code's area, and the address has not been confirmed either way. On its own this test is right about half the time, which is why there is no "fix all" button. |
| The ZIP is right; the pin is somewhere else | The address confirms the ZIP code on file, and the stored pin is a long way from the address. |
- If a check cannot start, or a row cannot be changed, the reason is shown at the top of the window.
- Nothing here ever moves a pin, and a ZIP code is only changed when you choose Use. Ctrl+Z reverses a Use. Dismiss cannot be reversed from the list; the row returns by itself if the hotel's ZIP code or pin later changes.
- A ZIP code that lost its leading zero in a spreadsheet is understood: the row shows "7114 -> 07114" and is compared as 07114. Your file is not rewritten.
- Not listed at all: Canadian and other non-US postal codes, ZIP codes that have no mapped area (PO boxes, single buildings), pins within 500 metres of their ZIP code's area, and hotels whose address confirmed both the ZIP code and the pin.
- In a project whose airport is outside the US there is no badge and no ZIP check: both are built on US ZIP codes, and an Italian or Australian postcode is not one, even when it has the same digits. In Australia and Canada the layer is there as Postcode Boundaries; in other countries there is no postcode layer.
- Check whole project, beside it, looks up every hotel's address in the project, including hotels that are not on the list, and skips the ones already answered. It is the only way to catch a wrong ZIP code whose pin happens to sit inside the right area.
- Large projects may need a check run more than once. Addresses the first lookup cannot settle go to a slower second service with a limit per run. The ones it did not reach stay under Not checked yet, and choosing Check N addresses again carries on with them.
Chapter 11
The table, search, Controls and Map Info
Everything else on the map page, control by control.
The hotel table
The Table tab on the right edge of the map slides out a spreadsheet of every hotel, including those with no pin. The number on the tab is the number of hotels, or the number selected when there is a selection. Drag the table's left edge to resize it.
Your own columns come first, in your order and under your headers, including the ones GroundZones does not use. After them come the built-in columns your file did not have, typically Zone, Lat, Lng, Dist (mi), Status and Pin.
| To | Do this |
|---|---|
| Find hotels | Type in Search properties.... It looks in the name, address, city, ZIP code and External ID. |
| Show one zone | Use the dropdown beside it: All Zones, Unassigned, or a zone. |
| Show only what is selected | Tick Selected. The list is the selection as it was when you ticked it, and it stays until you untick it: a hotel you deselect stays listed, without its highlight, and clicking on the map does not empty the list. While it is ticked only the checkboxes change the selection, so a stray click on a row does nothing, and the header checkbox selects the whole list again. Update appears when the selection is no longer the list, and lists what is selected now. |
| Show unconfirmed pins | Tick Check pins (N). |
| Sort | Click a column heading; click again to reverse. "Zone 2" sorts before "Zone 10", and empty cells always go last. |
| Widen a column | Drag the right edge of its heading. |
| Select rows | Click a row or its checkbox. Shift + click selects a range. The header checkbox selects everything currently listed. Clicking the text of a cell on a row that is already selected opens the cell and leaves the row selected; untick its checkbox to deselect it. |
| Go to a hotel | Double-click its row. The map flies there. |
| Act on a row | Right-click it. Show on map flies to the hotel, Copy copies the text of the cell you clicked (on Lat or Lng, both coordinates, as "latitude, longitude"), Change zone lists Unassigned and your zones, Pin is correct (only on a hotel flagged for Check pins) clears that flag, and Delete asks once and then deletes the hotel. Ctrl+Z undoes a zone change, a confirmed pin or a delete. Right-click a row that is part of a selection of two or more and the menu is for all of them (Set City for N hotels, Pins are correct (N), Delete N hotels); any other row is acted on alone and the selection stays as it is. A cell you are typing in keeps the browser's own menu, and someone who can only view gets Show on map and Copy. |
| Edit a cell | Click its text, type, and press Enter or click away. Esc cancels. Status saves as soon as you pick a value, and Zone needs Enter or a click on an option. Pasting both coordinates, such as 41.936, -87.850, into Lat or Lng fills both cells at once. |
| Change a column for many hotels | Select them, right-click one of the selected rows in the column to change, and choose Set City for N hotels (named after that column's heading; on a column it cannot set, Set a column for N hotels). Another column can be picked under Column. Type the New value (for Status, choose it) and press Enter or the button; left empty, the button reads Clear City for N hotels and empties the cell. It sets Address, City, State, ZIP, Status and your own extra columns, but not the name, the External ID (it is how a newer file finds its hotels), the coordinates or the zone (use Change zone). Hotels that already have the value are left alone, a hotel a colleague changed since you opened the map keeps their version and is reported, and Ctrl+Z puts every old value back in one step. No pin moves. |
| Export | XLSX or CSV at the top right of the table. |
- Selecting exactly one row opens that hotel's popup on the map. Selecting hotels on the map scrolls the table to the first of them.
- Every edit is a step in the history. If a colleague changed the same hotel first, you see "Changed by someone else" and their version is shown.
- Dist (mi) (or Dist (km)) and Pin cannot be edited. Your own extra columns can.
Search this area
The magnifying glass at the top left of the map opens "Search this area...". Type two or more characters to find a street address, a town, a ZIP code, an airport or a landmark. Up to five results appear, nearest to what you are looking at first, each with its distance from the centre of the map. Click one (or use the arrow keys and Enter) and the map flies there.
A postcode typed into the search is also looked for in your hotel file. Each postcode your hotels carry that starts with what you typed is listed first, marked "your hotels", with how many hotels carry it, such as "8 hotels on this map". Click it and the map shows all of them. This finds a postcode even where the map's place search does not know it, as in much of the Caribbean and Canada.
Controls
| Section | What it does |
|---|---|
| Map Layers | Three layers, each with a tick box to show or hide it and two arrows to move it up or down the list. Hotel Markers is the hotel dots; unticking it hides every dot at once, for reading the boundaries underneath, and box selection picks up nothing until it is ticked again. ZIP Code Boundaries draws ZIP code areas in red once you are zoomed in to about city level; in Australia, Canada, Denmark and Ireland it is Postcode Boundaries, which draws Australian and Danish postcodes and the first three characters of Canadian and Irish ones. City Boundaries draws city outlines in dashed blue a little further out. A note at the bottom of the map says when a layer is loading, when you need to zoom in, when there are no boundaries for the area, and when only the first part of a crowded view is drawn. Click an area for its name and size; a city can also be added to a zone's area. The first layer in the list is drawn in front: keep Hotel Markers at the top while you are selecting, or clicks land on a boundary instead of a hotel. At the bottom, below Distances in, are two switches. Group nearby hotels draws hotels that crowd each other as one bubble showing how many there are, inside a ring coloured by their zones, each zone taking its share of the ring; hover for the count per zone, and click a bubble to zoom in on its hotels. Zoomed in to street level every hotel is its own dot again. A bubble with an amber outline holds a pin to check, and a blue arc around one shows how many of its hotels are selected: box selection picks up hotels inside bubbles exactly as it does dots. It is remembered in this browser, not saved with the project, so a colleague's map is unchanged. The Only pins to check (N) switch appears while any pin is unconfirmed: on, it leaves only those hotels' dots, and box selection then picks up only those. It is not saved with the project. |
| Zone Visibility | One button per zone, plus Unassigned. Click to hide or show that zone's dots; Show All and Hide All at the bottom. The pointer icon at the end of a row selects every hotel in that zone, hidden or not; on Unassigned, every hotel without a zone. Hiding is for looking only, here and under Map Layers: hidden hotels are still in the table, the statistics and the export. |
| Marker Size | A slider from Small to Large for the hotel dots. |
- These choices, and the map's position and zoom, are saved with the project within a couple of seconds, shared with your colleagues, and included in snapshots.
- Boundaries need a closer zoom than you might expect. If nothing appears after ticking ZIP Code Boundaries, zoom in.
- City outlines are drawn where GroundZones holds boundary data from OpenStreetMap. Not every town has one.
- The map itself follows the light or dark theme chosen in the top bar.
Map Info
| Line | Meaning |
|---|---|
| "Properties: 412" | Every hotel in the project, including those with no pin and those in hidden zones. |
| "Selected: 12" and Clear | The size of the selection, and a link to clear it. |
| "27.3-32.6 mi from origin" | The shortest and longest driving distance in the selection, from the figures on screen. " - 3 without a distance" is added when some have none. |
| "Airport: DEN" | The project's market. |
| "Origin: 39.8494, -104.6738" | Where distances are measured from. |
| "3 conflicts detected" | The result of the last Check ZIP Code Conflicts. |
The distance range is the quickest way to sanity-check a zone: select it with its pointer icon under Zone Visibility and read off how near and how far its hotels are.
Zone Statistics
The last section of the left panel. Three tiles give Total, Assigned and Unassigned hotels, and a Coverage bar shows the share that has a zone. Below, one card per zone shows its number of hotels, the Avg, Min and Max driving distance of those hotels, and how many different ZIPs they cover. A dash means no distance has been measured in that zone yet.
- Zones are listed from the hotels, not from the rule table: a zone whose rule you deleted still appears, with a grey dot, for as long as hotels carry its name.
- The figures refresh after uploads, selection panel actions, rule runs and undo. After a single edit in a popup or a table cell they can lag until the next refresh.
- Clear All Properties, at the bottom, deletes every hotel in the project after asking. Undo does not bring them back, but a snapshot named "Before clearing all hotels" is saved first. Your zones and rules stay.
Cities Distance List
In File Management, Cities Distance List builds a spreadsheet of every city in your file with its distance from the origin: the raw material for deciding which cities belong in which zone, and what each zone's maximum distance should be. It needs hotels and an origin.
- Calculation Method: Property-based uses the distances of your own hotels in each city; City boundary-based uses the city's centre or outline from OpenStreetMap.
- Distance Type: Average Distance or Max Distance (the furthest hotel, or the furthest edge of the city).
- Add coordinates to file adds a latitude and longitude for each city.
Choose Download. The list is built on the server and downloads by itself as an Excel file with the columns City, the distance in the project's unit (miles or kilometres), and Property Count, nearest city first.
Chapter 12
Undo, history and snapshots
Undo is for the last few minutes. Snapshots are for yesterday.
GroundZones gives you two safety nets. Undo steps back through what you did in this browser tab. Snapshots are complete saved copies of the project, kept on the server, that survive closing the browser.
Undo and redo
| Ctrl+Z (Cmd+Z) | Undo the last step. |
|---|---|
| Ctrl+Y or Ctrl+Shift+Z (Cmd on a Mac) | Redo. |
The same two actions are the Undo and Redo buttons in the top bar, beside a caption of the last step ("Last: Rezoned 12 properties to Zone 3"). The shortcuts are ignored while you are typing in a box.
A step is whatever you did in one go, however many hotels it touched: a zone change on 500 hotels is one step, and so is a rule run, a conflict fix, a delete, an import, a Geocode, Reverse or Distance run, an edit in a popup or a table cell, Pin is correct or Pins are correct on a group, Use in the ZIP list, drawing an area, Generate Sectors, and any change to a zone rule.
- History opens the list of steps, newest first. Click a step to go back to the moment just after it; everything newer is undone, and shown faded. Current State at the top returns to the newest step. Clear History empties the list without changing the map.
- A deleted hotel comes back complete, with every column of your file.
- An import can be undone but not redone: upload the file again instead.
- Undoing a rule run puts back the zones it changed and the distances it measured.
- Undoing a Geocode takes away the pin and everything the pin check said about it. Undoing Reverse or an address edit brings back the ZIP check's answer for the old address.
- A Geocode run, or a Reverse or Distance run on ten or more hotels, that changed nothing adds no step, and says "Nothing changed".
- Undoing thousands of hotels shows a progress bar in the top bar with Cancel. What has already been put back stays put back, and pressing Undo again finishes the job.
- If a colleague has changed some of those hotels since, theirs are left alone and you are told: "Some changes not undone".
Not in the history: map position, hidden zones and the other Controls choices; changing the market, and the distances measured again after it; and Dismiss in the ZIP list.
Snapshots
Choose Snapshots in the top bar. A snapshot holds every hotel with all its columns, every zone and rule with its drawn areas, the market and origin, and the map view with its Controls choices.
- Save one yourself before anything sweeping: type a name such as "before bulk rezone" (optional) and choose Save snapshot.
- Saved for you: when you leave the project after changing something, and a few minutes after you stop making changes even if you never leave, so a crashed browser loses little. They are listed as Auto.
- Saved before destructive actions: before a restore, before Clear All Properties ("Before clearing all hotels") and before all rules are deleted or replaced ("Before deleting all zone rules").
- Find the snapshot in the list. Each shows its name, when it was saved, and how many hotels and rules it holds.
- Choose Restore, then Yes, restore. The project as it is now is saved as a new snapshot first, so a restore can itself be reversed.
- The page reloads with the restored project.
- If hotels or rules have changed since you opened the project, possibly by a colleague, you are asked before they are replaced.
- A restore waits for running work: it is refused while an upload or another job is running in the project.
- Not restored: the project's name, description and folder. The ZIP issues check starts afresh after a restore.
- A restore clears the Undo history of the tab.
Chapter 13
Export the zoned file
Your columns, your order, your headers, with the zone filled in.
There are three export buttons and they produce the same file: Export under File Management in the left panel (Excel), and XLSX and CSV at the top right of the table. The file is named after the airport and the date, for example DEN_properties_2026-09-18.xlsx.
| In the file | Detail |
|---|---|
| Rows | Every hotel in the project, zoned or not, with or without a pin. |
| Columns | Exactly the columns of the file you uploaded, in the same order, under the same headers, including the columns GroundZones never used. |
| Values | The current ones. An address you corrected, a ZIP code you accepted and an extra column you edited all come out as they are now. |
| The zone | If you created zones from a column during upload, the zone is written back into that column. Otherwise a last column, Assigned Zone, is added. |
| Unassigned hotels | Their zone reads "N/A". |
- Distances are not exported, and neither are the pin status or the notes of the address check. They are working figures for zoning.
- Coordinates are exported only if your file had latitude and longitude columns. A file uploaded with addresses alone comes back with addresses alone.
- State and country come out as two-letter codes. Other values come out as stored; a number or a date in one of your extra columns may be formatted differently from the original.
- Rows are not guaranteed to be in the order you uploaded them. Sort on your ID column if the order matters.
- If a project was built from two files with different layouts, the export follows the layout of the first. Keep to one layout per project.
- Anyone who can open the project can export it, including view-only colleagues, and exports still work after a trial has ended.

Other downloads
- Zone rules: Download above the rule table saves a file named for the project's airport (DEN_zone_rules.xlsx) with the zone name, city, maximum distance, ZIP codes and colour. Drawn areas are not included.
- Cities Distance List: see The table, search, Controls and Map Info.
- Rules backup: when an upload replaces your zone rules, the Upload Complete screen offers Download Backup. It is only offered there.
- Row errors: when a job reports failed rows, the Jobs page offers them as a CSV.
Chapter 14
Working with colleagues, and long-running work
View-only access, two people in one project, and jobs that outlast the page.
View-only access
Every plan includes up to five users, the owner included; if you need more, email support@groundzones.com and say how many. A colleague can be given view-only access to the workspace or to a single project. They see the map, can select hotels, open popups, sort and filter the table, use Controls and export the file. Everything that changes the project is hidden: upload, rules, the selection panel, Undo and Snapshots. The left panel says so at the top: "You have view-only access."
Two people in one project
Nothing is pushed live between browsers: you see a colleague's changes when your map next reloads its data, which happens after your own actions and when you reload the page. What GroundZones does guarantee is that nobody's work is overwritten silently.
| You see | What happened |
|---|---|
| "Changed by someone else - Someone else changed this hotel. Showing their version." | A colleague saved that hotel after your map loaded it. Your edit was dropped and theirs is on screen. Make yours again if it still applies. |
| "Some hotels left as they were" | In a group action, the hotels a colleague had changed were skipped. The rest went through. |
| "Already running" | A colleague is running the same kind of job on some of the same hotels. Try again when it finishes. |
| "Project busy" | An upload that replaces every hotel is running. Editing resumes when it ends. |
| A question before a restore or a replacing upload | Hotels or rules changed after you opened the project. Continue only if you mean to replace those changes. |
Work that runs on the server
Imports, rule runs, the ZIP check, the cities list, every Geocode run and large Reverse and Distance runs happen on the server. You can keep the page open and watch the progress bar, or leave: the work carries on either way.
- When you open a map where work is still running, yours or a colleague's, a banner at the top of the map names it ("Applying zone rules is running (started by ...)") with its progress, and the map reloads when it finishes.
- On your own jobs the banner has pause, resume and cancel buttons. Cancelling from the banner keeps what the job has already changed; only a cancel from the page that started the job rolls it back.
- While an upload in Replace all properties mode runs, an amber strip says the map is view-only until it finishes, for everyone. Whoever started it can pause, resume or cancel it from the banner.
- The Jobs page in the top bar lists finished and running jobs with their results, and has Pause, Resume and Cancel for any job still running in your workspace. Cancelling there keeps what the job has already changed.
- A workspace runs two jobs at a time. A third waits its turn, marked WAITING on the Jobs page and "waiting for other jobs" under its progress bar, and starts on its own when one of the two finishes. You can pause or cancel it while it waits.
During and after the free trial
The 14-day trial starts when you open your first airport, not when you sign up, and includes every feature described here. In its last three days a banner counts the days down. If it ends without a plan, your work is kept and becomes read-only: you can open every project, look around and export. The map hides its editing controls and says why, and editing returns the moment you choose a plan.
Chapter 15
Shortcuts and troubleshooting
Every key and mouse gesture on one page, and answers to "why did that happen?".
Keyboard and mouse
| Space + drag | Select the hotels in a box (replaces the selection). |
|---|---|
| Ctrl + drag | Add the hotels in a box to the selection. |
| Shift + drag | Remove the hotels in a box from the selection. |
| Click a hotel | Select it and open its popup. |
| Ctrl + click | Add a hotel to the selection. |
| Shift + click | Remove a hotel from the selection. |
| Click empty map | Clear the selection. |
| Drag | Move the map. The mouse wheel and the + and - buttons zoom. |
| Ctrl+Z | Undo. |
| Ctrl+Y or Ctrl+Shift+Z | Redo. |
| Enter / Esc | Save or cancel the value you are editing, in a popup, a table cell or the rule table. |
| Shift + click a table row | Select the range of rows from the last one clicked. |
| Double-click a table row | Fly the map to that hotel. |
| Arrow keys, Enter, Esc | Move through and pick from the search results, the airport list and the table's zone list. |
On a Mac, Cmd works wherever Ctrl is listed.
Why did that happen?
| What you see | Why, and what to do |
|---|---|
| Some hotels have no dot on the map | They have no coordinates. Find them in the Table (sort by Lat; empty cells go last), select them and choose Geocode, or fix their addresses first. |
| Holding Space and dragging just moves the map | The map did not hear the key. Move the pointer over the map, press Space, then drag. If a text box has the cursor, click the map first. |
| Clicking a hotel opens a ZIP code or city popup instead | A boundary layer is drawn above the hotels. Under Controls, Map Layers, move Hotel Markers to the top with its up arrow. |
| A hotel is grey although it has a zone | Its zone name has no entry in Zone Rules, usually because the name was typed in the table or the rule was deleted. Add a zone with exactly that name. |
| I ticked ZIP Code Boundaries and nothing appeared | Read the note at the bottom of the map. "Zoom in to see ZIP boundaries": ZIP code areas are drawn from about city level, city outlines from a little further out. "Loading": a crowded area can take a few seconds. "No city boundaries in this area": GroundZones has none stored there yet. |
| The same hotels appeared twice after a second upload | The file has no External ID mapped, so nothing could be recognised as already there. Undo the import, then upload with Replace all properties, or map an ID column. |
| Every hotel lost its zone after uploading a newer list | The import ran in Replace all properties mode, which deletes the zoned hotels and imports the file in their place. Undo the import, then upload again with Update existing properties, add the new ones: hotels already here keep their zones and only the new ones arrive unassigned. |
| Rules left some hotels untouched | A hotel that matches no rule keeps its zone. Check that the outermost zone reaches far enough, that every rule has a Dist where the mode uses one, and that city names are spelt as in the file. |
| Rules put a hotel in an unexpected zone | Where rules overlap, the smallest Dist wins, and at equal distances the rule higher in the table (click # to see that order). In Distance Only, each zone is a band starting where the previous one ends. In ZIP Code Boundaries, the pin decides, not the ZIP column. |
| A hotel's distance reads "--" | Its pin was moved, it has never been measured, or a clicked origin is in use and it has not been measured from there. Choose Distance in its popup; the next rule run measures it too. |
| The export is missing coordinates or distances | Coordinates are exported only into latitude and longitude columns your file already had. Distances are never exported. |
| Undo is greyed out after a reload | History lives in the browser tab. Use Snapshots to go further back. |
| The top bar shows ZIP check instead of ZIP issues | No hotel is flagged. Open it to run Check whole project anyway. |
| The editing controls have disappeared from the map | The left panel says why: view-only access, a free trial that has ended, or an upload replacing every hotel. Exports still work. |
Frequently asked questions
Do I have to use zone rules?
No. Most files are zoned by hand: add your zones, select hotels on the map with a box, and pick their zone. Rules are an optional first pass for large files and for schemes that are genuinely distance bands, city lists or ZIP code lists.
Can I use rules first and then fix things by hand?
Yes, and that is the recommended order. Rules overwrite the zone of any hotel they match, including hotels zoned by hand, so apply them first and tidy up afterwards.
What does the exported file look like?
It has exactly the columns of the file you uploaded, in the same order and under the same headers, with current values. The zone goes into the zone column you mapped at upload, or into a new last column called Assigned Zone. Distances are not exported.
Does the export respect my filters or selection?
No. Every export button exports the whole project, zoned and unassigned hotels alike.
What happens when I upload a newer hotel list into the same project?
Choose "Update existing properties, add the new ones". Hotels the project already has are refreshed from the file and keep the zones you put them in; only the hotels the file adds arrive unassigned, so you zone those and nothing else. "Add new properties only" also keeps your zones but ignores the file entirely for hotels already here, so a corrected address never lands. Either way hotels are recognised by External ID, so map an ID column if your file has one.
Are distances driving distances or straight lines?
Driving distances by road from the airport terminal, in miles or kilometres: a project starts in its country's unit and can be switched under Controls. Every rule run measures afresh, a changed airport re-measures the whole project, and a moved pin loses its old distance until it is measured again.
How far back can I undo?
Undo keeps the last 50 steps of the current browser tab and is lost on reload. Snapshots are complete copies of the project kept on the server, up to 50 per project, saved automatically when you leave and whenever you ask.
What is the difference between ZIP Code Conflicts and ZIP issues?
ZIP Code Conflicts finds ZIP codes whose hotels are in more than one zone and can move them all into one zone. ZIP issues finds hotels whose ZIP code and pin disagree and lets you correct the ZIP code one hotel at a time.
Try it on your own hotel file.
Your first 14 days are free, with no card. The trial starts when you open your first airport.
Questions this manual does not answer: support@groundzones.com. GroundZones is independent and not affiliated with or endorsed by Expedia Group.


