> For the complete documentation index, see [llms.txt](https://docs.growthfactor.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.growthfactor.ai/study/shapes.md).

# Shapes

## What a Shape Is

A shape is any area drawn on a study's map — a polygon you trace, a circle, a real-world boundary you extract, or a generated trade zone. Shapes are named automatically (`S1`, `S2`, and so on) and you can rename any of them.

Every shape is something you work with directly. Select it, restyle it, comment on it, combine it with other shapes, or run analysis against it.

{% embed url="<https://www.youtube.com/watch?v=lEXXy-Oavus>" %}

***

## Shapes vs. Trade Zones

A trade zone is just a shape that's linked to a pin or to one of your existing stores. That link is what marks the area as that location's catchment, and it's what cannibalization reads from.

An unlinked shape is a plain area — useful for territories, regions, and whitespace, but it won't be treated as anyone's trade zone. Select a shape and check the **Trade zone for** row in the right panel to see whether it's linked.

***

## Drawing a Shape

All three drawing tools live under **Shapes** in the map toolbar.

<figure><img src="/files/ItprL3JHKeFtx8LAAYnV" alt="The Shapes group open in the study map toolbar, showing Draw polygon, Draw circle, and Extract boundary" width="375"><figcaption></figcaption></figure>

### Polygons

Click **Draw polygon** (shortcut `P`) and click once per vertex. The hint under the toolbar reads **"Click on the map to draw a polygon · press \[Enter]/\[Return] to complete it"** — this is vertex-by-vertex tracing, not freehand.

### Circles

Click **Draw circle** (shortcut `C`), then follow the hint: **"Click for center, then click again to set the radius"**.

### Extracting a Real-World Boundary

Click **Extract boundary** (shortcut `X`) to pull an administrative boundary in as a shape. **Extract mode** opens with the instruction **"Click a boundary to save it as a shape in your study. Click again to unsave."** and buttons for each level: **States**, **Counties**, **Places**, **ZIP Codes**, **Census Tracts**, and **Block Groups**. Everything you save in the session is listed under **Extracted**, where you can rename or remove it.

***

## Trade Zones

### Trade Zone Types

Generated trade zones come in three flavors:

| Type                   | Value units | Accepted range                             |
| ---------------------- | ----------- | ------------------------------------------ |
| **Ring Buffer**        | Miles       | 1–30                                       |
| **Walk or Drive Time** | Minutes     | 1–60 driving, 1–30 walking                 |
| **Foot Traffic**       | %           | 50–90, with **Origin** set to Home or Work |

Foot traffic zones describe where that share of visitors actually live or work, so the form spells it out as you type — for example **"Where 70% of visitors live"**.

### Drawing a Trade Zone Around a Pin

Select the pin and click **Draw trade zone** (or right-click the pin and choose **Draw trade zone**). The **Add trade zone** popover offers two paths:

* **Generated** — "Ring buffer, drive-time, or foot-traffic %". Set **Type**, **Value**, and any mode or origin, then click **Draw**.
* **Draw a polygon** — "Click vertices to trace a shape", for a catchment you want to trace by hand.

<figure><img src="/files/09q2U2Fq6KVSoVGVQXmG" alt="The Add trade zone popover offering the Generated and Draw a polygon paths" width="375"><figcaption></figcaption></figure>

The new zone is named after its anchor and method, like `P1·10 min drive`.

### Drawing a Trade Zone Around an Existing Store

Select the store on the map and use the same **Draw trade zone** popover. You can also just ask the agent — it draws zones directly on portfolio stores, no pin required. Because stores are workspace-wide, a zone anchored to one keeps working even as the study changes around it.

### Starting from the Workspace Default

The **Generated** form prefills from your workspace's default trade zone, so most zones are one click. If no default is saved, it falls back to a 1-mile ring. Workspace admins see an **Edit default** link that jumps straight to the Trade Zone setting in [Workspace Settings](/getting-started/workspace-settings.md).

### Linking an Existing Shape as a Trade Zone

Any shape you already drew can become a trade zone. Select it and click **Link to pin or store** in the **Trade zone for** row, or right-click the shape and use the same option. Search **"Search pins and stores"** to find the anchor; nearby stores are listed first. The **×** next to a linked anchor unlinks it.

{% hint style="info" %}
Shapes an analysis created can't be re-anchored. Duplicate the shape and link the copy instead.
{% endhint %}

***

## Combining Shapes

### Selecting Multiple Shapes

Shift-click shapes on the map to add or remove them from a multi-select. Once two or more are selected, a floating toolbar replaces the drawing toolbar and shows **"{n} shapes"** with the combine actions. Shift-clicking empty map keeps the selection intact; a plain click clears it.

<figure><img src="/files/mTokAIvxXY8mCuj28GWQ" alt="Two trade zones selected, with the combine toolbar above them reading 2 shapes" width="375"><figcaption></figcaption></figure>

The combine actions are icon buttons. Hover one to see its name. The right panel lists the same actions with their names and descriptions, plus which shape is the primary one.

### Union

**Union** merges everything selected into one shape — works with two or more. The inputs are replaced by the result, named `Union: S1` after the first shape in the selection.

### Intersect

**Intersect** keeps only the region every selected shape shares. If they don't actually overlap you'll see **"The selected shapes don't overlap."** and nothing changes.

### Difference

**Difference** subtracts the second selected shape from the first. It needs exactly two shapes — with any other count its tooltip reads **"Difference (needs 2)"** and the button is disabled.

### Deleting a Selection

The red trash button removes every selected shape at once — its tooltip names the count, so with three selected it reads **"Delete 3"**. The right panel spells it out as **Delete all (3) shapes**. Like each combine, it's a single undo step — one `⌘Z` puts the originals back.

***

## Building Territories

Territories are built by union. Draw or generate a trade zone for each store in a market, shift-click them all, and hit **Union** — you get one shape representing everything that market currently covers. Rename it something like `Phoenix Metro` and use it as the baseline for planning.

***

## Finding Your Whitespace

Whitespace is the same idea run backwards. Extract the boundary you're planning against (a metro, a county, a set of ZIP codes), select it plus your combined coverage territory, and hit **Difference** — the shape you're left with is the part of the market nobody serves yet. Drop pins inside it and run demographics to see how much demand is sitting there.

***

## Data for an Area

Select a shape and open **Demographics** for an Esri profile of the area it covers: a KPI grid (**Population**, **Median age**, **Median HHI**, and more) plus race and education charts compared against national averages. **Hispanic / Latino** is reported on its own line below the race breakdown. Click **View full demographics** for the full variable table.

Demographics is measured across an area, so it needs a shape. Shapes made up of many disconnected pieces, like a **Places** boundary for a city with scattered limits, can be too fragmented to calculate demographics for — see [Demographics](/data-and-analytics/demographics.md).

***

## Overlap and Cannibalization

Cannibalization is how much a pin's, store's, or deal's trade zone overlaps the trade zones of other pins, stores, and deals in the same study. For the Site Analysis version of this analysis, see [Cannibalization](/data-and-analytics/cannibalization.md).

### What You Need First

Both sides need a trade zone drawn in the study. There's no fall back to the workspace default here — pins, stores, and deals without a zone are skipped silently.

* No zone on the target: **"Add a trade zone to calculate cannibalization."** with an add button.
* Nothing else to compare: **"Nothing to compare against"** — **"Draw a trade zone on another pin or one of your existing stores to calculate cannibalization."**

Select a pin, store, or deal and the analysis runs on its own; uncheck a row to drop it and recompute. When you ask the agent, the target has to be a pin.

### Reading the Results

Results appear in the right panel. If the target has more than one trade zone you pick which to measure under **"Select one of the drawn trade zones"**; with a single zone the panel just says **Based on** that zone.

Below that, **Overall** gives the combined overlap percentage with a level badge, then one row per contributing pin, store, or deal. Uncheck a row to drop it and recompute. **Full breakdown** opens the full matrix of every trade zone against every source.

The panel is the answer — cannibalization doesn't add a new layer to the map. The overlapping trade zones are already drawn there as shapes, so you can read the geography and the numbers side by side.

### Exporting Results

Cannibalization travels with both study export formats. **Generate PDF** gives each pin with overlap its own cannibalization page, and **Download Excel** adds a **Cannibalization** sheet with one matrix per target pin. Pins with no overlap are skipped in both. See [Sharing and Exporting Studies](/study/sharing-and-exporting-studies.md).

***

## Commenting on a Shape

Every shape has a **Comments** tab in the right panel with a count badge. The first comment box reads **"Add a comment to this shape…"**; after that it's **"Reply…"**. Right-click a shape and choose **Add comment** to jump straight there. See [Annotations and Comments](/study/annotations-and-comments.md) for how threads, mentions, and notifications work.

***

## Editing and Removing Shapes

Select a shape to get its style toolbar: rename it inline, change the fill color, switch the stroke style, or click **Edit shape** to reshape it — drag the shape to move it, drag a vertex handle to pull the outline around, then click **Done editing**.

Reshaping is only offered for polygons you drew by hand. Generated trade zones, extracted boundaries, and combine results aren't reshapeable; edit the source shape or redraw instead.

**Delete** removes the selected shape.

{% hint style="warning" %}
A trade zone drawn on a pin is removed when that pin is deleted. Shapes an analysis produced are owned by that analysis — deleting one removes everything else that analysis created.
{% endhint %}

A trade zone anchored to an existing store behaves differently: stores are workspace-wide, so deleting the shape leaves the store untouched and the shape never dangles.

***

## Labels and Map Readability

Each shape's name is drawn inside it. When shapes get small or crowded, labels are hidden rather than stacked on top of each other — zoom in to bring them back.

***

## Asking the Agent

The [GrowthFactor Agent](/study/growthfactor-agent.md) can do most of this for you. Try:

* "Draw a 10 minute drive time around the Springfield store" — anchors a zone to that store.
* "Merge S1 and S2" — unions them into one shape.
* "Trim S1 by S2" — subtracts the second from the first.
* "Show me where S1 and S2 overlap" — keeps just the shared area.
* "Make S1 a trade zone for @pin1" — links an existing shape to a pin or store.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.growthfactor.ai/study/shapes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
