Territory planning for revenue teams

Draw territories on live data. Track every change.

ZoneCraft syncs your CRM, geocodes plain addresses, and lets you carve balanced territories on a real map. Compare what-ifs, route the plan through approval flows you design, and publish back to the system your data lives in, with a preview first.

  • Single-tenant: your own instance and database
  • US & Canada boundaries built in, any region on request
  • No pre-geocoded files required
ZoneCraft RecordsBoundariesTerritories Q4 East realignment draft
Adams County Allegheny County Armstrong County Beaver County Bedford County Berks County Blair County Bradford County Bucks County Butler County Cambria County Cameron County Carbon County Centre County Chester County Clarion County Clearfield County Clinton County Columbia County Crawford County Cumberland County Dauphin County Delaware County Elk County Erie County Fayette County Forest County Franklin County Fulton County Greene County Huntingdon County Indiana County Jefferson County Juniata County Lackawanna County Lancaster County Lawrence County Lebanon County Lehigh County Luzerne County Lycoming County McKean County Mercer County Mifflin County Monroe County Montgomery County Montour County Northampton County Northumberland County Perry County Philadelphia County Pike County Potter County Schuylkill County Snyder County Somerset County Sullivan County Susquehanna County Tioga County Union County Venango County Warren County Washington County Wayne County Westmoreland County Wyoming County York County WESTNORTHWESTCENTRALNORTHERN TIERNORTHEASTSOUTHEAST

The gap

Built for the moment your current territory tool stops being enough.

Most teams outgrow their current tool the same way: the data has to arrive clean, the model is a frozen copy, and nobody can say exactly what changed. ZoneCraft was designed around those five gaps.

In other toolsIn ZoneCraft

Edits leave no trace, or at best a version to roll back to. "What exactly changed, and what did it do to each territory?" has no answer.

Every change is an event, and analyzedActor, time, before and after, written in the same transaction as the change. Diff any two states, read the impact per territory, export it, or restore a snapshot.

Records must arrive pre-geocoded, so the data team owns the map.

Plain addresses are enoughGeocoding runs inside the data pipeline, once, and is cached by address. Rows that already carry coordinates are used as they are.

The planning set is an export. By the time the plan is done, the data is a quarter old.

Sync, not snapshotDelta pulls on a modification-timestamp watermark keep datasets current, from Salesforce or whichever system your data lives in. Record identities stay stable, so assignments survive every refresh.

A handful of scenarios at most. Beyond that, what-ifs mean duplicated projects and copies of copies.

Parallel alignmentsClone an alignment, run rules or the optimizer, lock what must not move, and compare outcomes territory by territory before anything ships.

Publishing is a leap of faith: no preview of what will be written, no per-record log afterwards.

Publish is a reviewed jobField-mapped writes with a destination preview, one run per job, a per-row audit log, and an approval gate when the plan requires one.

Product

Data in, boundaries drawn, plans governed. One workspace, read like a map legend.

Three groups of capabilities, in the order a plan actually uses them.

Data in

  • Sync from where your data lives

    Salesforce connects today: pick objects and pre-filters, pull deltas on a watermark, keep identities stable across syncs. Other CRMs and systems are configured per instance, quickly.

  • Spreadsheets, guided

    A five-step wizard maps columns, declares types, and picks an upload mode: replace, add, override, or fill gaps. It remembers the setup for next month's file.

  • A real pipeline, visually

    Join, filter, aggregate and compute across sources on a node canvas. Outputs become planning-ready datasets.

  • Geocoding built in

    Plain addresses are geocoded at the pipeline output, once, and cached by address. Rows that already carry coordinates are used as they are.

  • Records at scale

    Tens of thousands of rows with server-persisted columns, condition filters, totals, and bulk assign. Locked rows stay put through every automated pass.

Boundaries

  • Standard geographies, built in

    US states, counties and ZIP areas plus Canadian provinces and forward sortation areas ship with every instance. Any other region is added from its official boundary data.

  • Your data as geography

    Turn any ZIP or postal list into real polygons, matched by code, alias, or name. Leading zeros the spreadsheet ate are recovered.

  • Custom boundaries from your parameters

    Generate each territory's boundary from its center with the parameters you set: straight-line radius or road-network drive time, the reach in minutes or miles, and per-territory overrides where the market demands it.

  • Overlap resolution, five ways

    Nearest center, priority order, balance by metric, choose per pair, or shrink to tangency, plus mark-as-shared. Continuity is guaranteed: no orphaned islands.

  • Select like a map, act like a table

    Rectangle, circle, lasso, or click-pick boundaries and their records together, then assign, lock, or export the whole selection.

Balance & govern

  • Detailed change analysis

    Every change is recorded with actor, time and before-and-after state. Diff any two alignments or snapshots, read the impact per territory, export it, or restore.

  • Metrics that roll up honestly

    Sums, weighted averages and distinct counts roll up the hierarchy correctly. Custom fields, manual, joined, or formula-computed, behave like any other column.

  • Rules and optimizer, preview first

    A dry run shows each territory before and after, with metric deltas. Apply only from the preview, and manual assignments always win.

  • Teams and scoped editing

    Plan teams with admins, editors and viewers. Editing can be scoped to selected territories and their subtrees; boundary edits are a separate permission.

  • Approval flows you design

    Build approval templates with the steps you need. Submit a whole alignment or a subset of territories, set due dates, review the exact diff, and lock what is approved. Reversals are on record too.

  • Publish back, reviewed

    Publish templates map territories to standard or custom fields in Salesforce or the system you connected. Each job previews the destination impact, runs once, and keeps a per-row audit log.

How a plan ships

Six steps from a raw account list to territories in your CRM.

  1. 01Connect

    Connect Salesforce or the system your data lives in, or upload a spreadsheet. Pick the objects and filters that matter.

  2. 02Shape

    Join and clean the data in a recipe. Addresses are geocoded at the output, once.

  3. 03Carve

    Assign boundaries or records, run rules, let the optimizer balance the rest, lock what must stay.

  4. 04Compare

    Clone alignments, take snapshots, and read the impact per territory before deciding.

  5. 05Approve

    Submit the whole alignment or a subset through a flow you designed, with due dates and a reviewable diff.

  6. 06Publish

    Preview every write, run the job once, and keep the per-row log next to the plan.

Change analysis

Every change on record, and every change explained.

Territory state is a projection of an append-only event log, so history, diffs, per-territory impact, snapshots and restore are the same mechanism, not features bolted on later.

WhenActorKindSubjectChange
14:02:11youboundaryBerks CountySoutheast Northeast
14:02:11rules enginerecordKeystone Dentalunassigned Southeast
13:41:56m.ortizlockAllegheny Countylocked in West
13:15:02approvalstep 2 of 3Q4 East realignmentapproved · due Sep 12
12:58:40optimizerrecord38 recordsCentral Northern Tier
12:30:07yousnapshotBefore optimizer runcaptured
alignment: Q4 East realignmentfilter: todayexport CSV
  • Searchable, diffable, exportable

    Filter by actor, kind, territory or date. Expand any row to the before-and-after state. Export the lot as CSV for the audit file.

  • Impact, territory by territory

    Compare any two alignments or snapshots and read what moved: records per territory, boundary deltas, metrics before and after. Restore a snapshot when a what-if went the wrong way.

  • Approvals with reversal

    Approved territories lock. Administrators can reverse an approval for the whole alignment or selected territories, and the reversal itself is on record.

Platform

Your instance. Your database. Nobody else's data in it.

ZoneCraft is single-tenant by design: every customer runs a separate stack with its own API and its own spatial database. Isolation is a deployment fact, not a row in a table.

Tenancy
One stack per customerOwn API, own PostgreSQL + PostGIS database, provisioned from a blueprint
Sign-in
Single sign-on with your identity provider, or email and passwordSalesforce SSO ships today; other providers are configured per instance. Roles: admin, planner, contributor, viewer; plan teams on top
Edge
Cloudflare in front of every instanceTLS, WAF and DDoS protection; HTTPS only
Secrets
Connection credentials encrypted at restSalesforce tokens and every other connector secret, under a per-instance key; credentials never leave the instance
Maps
Mapbox maps and geocodingPermanent geocodes cached by address, so refreshes are free
Boundaries
US and Canada built in, any region on requestStates, counties, ZIP areas, provinces and FSAs restored at first boot; other regions loaded from their official boundary data
Heavy work
Background job queueSyncs, geocoding, drive-time shapes and publish runs queue, retry and report progress
Operations
Error tracking and uptime monitoringPer-instance environments; scheduled backups sized per customer

How it compares

The honest matrix. Categories, not names.

A side-by-side view of the capabilities that decide a territory project, across the kinds of tools teams typically use.

CapabilityZoneCraftCRM-native territory moduleDesktop mapping suiteSpreadsheets & slides
Change analysisEvery edit on record with before and after; diffs, per-territory impact, restoreAlignment history with restore; no per-change diff or impact analysisSave-file versions"Final_v7_REAL(2)"
Un-geocoded dataGeocodes plain addresses inside the pipeline, cachedNeeds latitude and longitude fields; the parent mapping product geocodes standard objectsExtra toolingNo map at all
Data from other systemsSpreadsheets, Salesforce, other systems configured per instanceOther systems only through the vendor's analytics connectors, outside the planning toolFiles and databasesAnything you paste
Drive-time territoriesGenerated per territory from radius or drive time, with the parameters you set and overlaps resolvedDrive time only as a distance option when optimizing; no drive-time boundariesSeparate add-on modulesNot offered
What-if planningUnlimited parallel alignments, snapshots, three-way compare with impactUp to three scenarios per alignment, compared on general territory metrics onlyDuplicate projectsCopies of copies
Data prepVisual pipeline inside the productReports or queries; deeper prep in the vendor's analytics recipes, outside the planning toolSeparate ETLBy hand, monthly
ApprovalsFlows you design: templates, the whole alignment or selected territories, due dates, reviewable diff, reversalSequential approval of the whole alignment only; no partial submissionsNot offeredEmail threads
Publish backPublish templates to any destination: field mapping, destination preview, per-row logPublishes into its own CRM only; no preview of the writes and no per-row detailCSV out, re-importCSV out, re-import
Where it runsSingle-tenant, your own stackVendor multi-tenant cloudPer-seat desktop installsWherever the file went
coveredpartial or workaroundnot offeredTypical capabilities by product category, checked against vendor documentation in September 2026; individual products vary.

More capability

Even more on the way.

In build now, sequenced by what early customers ask for first.

  • IN BUILD
    Mixed boundary modes

    Drive-time territories side by side with ZIP-based ones in a single alignment.

  • IN BUILD
    ZIP-to-ZCTA crosswalk

    Point ZIPs without a census polygon fold into their enclosing area automatically.

  • IN BUILD
    Cross-source matching

    Carry assignments across datasets when the same account lives in more than one source.

  • IN BUILD
    Choropleth legends and overlays

    Readable legends for metric shading, and compare overlays for ZIP-level plans.

  • IN BUILD
    Geocoding provider choice

    Pick the geocoder per instance, with a postal-centroid fallback for rows that only need containment.

  • IN BUILD
    Approval notifications

    Due-date and decision notifications by email and chat, on top of the in-app inbox.

Questions

The ones every evaluation asks.

Do our records need to be geocoded first?

No. Map street, city, state and postal fields in the recipe output and geocoding runs there, once, with results cached by normalized address. Rows that already carry latitude and longitude are used as they are and never re-geocoded.

Do we have to use Salesforce?

No. Salesforce is the connector that ships today, spreadsheets need no connector at all, and other CRMs or systems your data lives in are configured per instance. The sync layer is source-agnostic: objects, filters and modification watermarks work the same way whatever the source.

Does it write territories back to our CRM?

Yes. A publish template maps territory names, owners or any attribute to standard or custom fields on the source object. Each publish job shows the destination impact before it runs, runs once, and keeps a per-row log. A plan can require an approved alignment before a job may run.

Can we approve part of a plan, with our own steps?

Yes. Approval templates define the steps and who signs each one. A submission can cover the whole alignment or selected territories, every step carries a due date, reviewers see the exact diff, and approved territories lock. Administrators can reverse an approval, in whole or for selected territories, and the reversal is on record.

Where does our data live?

In your own instance: a dedicated API and a dedicated PostGIS database that no other customer shares. Cloudflare sits in front for TLS and traffic protection. Connection credentials, Salesforce tokens included, are encrypted at rest with a key that belongs to the instance.

Can we start with spreadsheets only?

Yes. Excel and CSV import needs no CRM connection: the wizard maps columns, declares types and picks an upload mode, and remembers everything for the next file. Connect a CRM later and the same plans keep working.

Which geographies are supported?

US states, counties and ZIP areas plus Canadian provinces and forward sortation areas ship with every instance, and any other region is added from its official boundary data. Any ZIP or postal list of your own becomes a boundary set, and territories can be grown from their centers as radius or drive-time shapes with the parameters you set.

How large a dataset can a plan hold?

The workspace has been exercised with more than 50,000 records against dozens of drive-time territories in a single alignment, with filters, totals and bulk edits staying interactive. Larger volumes are sized per instance; tell us your record counts and we will size the stack with you.

How long does it take to get running?

An instance provisions from a blueprint and restores the boundary reference data on its first boot. Connecting Salesforce is a standard authorization and the first sync starts right after; other systems are configured per instance. Most of the elapsed time is deciding which objects and filters to bring in.

Walkthrough

See your own territories in ZoneCraft.

Bring an account list, a spreadsheet is enough, and see a plan built on your data: boundaries, balance, change analysis and the publish preview. Tell us a little about your setup and we will reply to set a time.

Prefer email? Write to hello@zonecraft.app