Locations
Locations are persistent warehouse and fulfillment addresses stored per organization. They serve as a single source of truth for ship-from addresses across rates, pickups, and dispatchers.
Overview
Without locations, users must manually enter addresses every time they calculate rates or schedule pickups. Locations solve this by storing warehouse addresses once and reusing them throughout the platform.
Each location stores:
- Name and type (warehouse, store, office)
- Full address (address1, address2, city, province, zip, country)
- Bridge linkage (optional) — links to a source bridge like ShipStation
- Default flag — one location can be marked as the org default
Managing Locations
Adding Manually
- Navigate to Shipping > Locations
- Click Add Location
- Enter the name, type, and full address
- Optionally mark as the default location
Syncing from Bridges
Bridges that support the grab-warehouses task (e.g., ShipStation) can automatically import warehouse data:
- Click Sync from Bridge on the Locations page
- Select an active bridge from the dropdown
- Click Sync Locations
The sync upserts locations using the bridge ID and external warehouse ID as the unique key, so re-syncing updates existing records rather than creating duplicates.
Editing and Deleting
Click the row actions menu to edit, deactivate, set as default, or delete a location. Synced locations can be edited — local changes will be preserved until the next sync.
Using Locations
Rate Calculator
On the Get Rates page, the Ship From section shows a location dropdown when saved locations exist. Selecting a location auto-fills the address fields. You can still modify the address after selection.
Pickups
The Schedule Pickup dialog shows a location dropdown above the address form. Selecting a location populates the pickup address fields.
Dispatchers
Dispatchers with destination overrides reference warehouse IDs. In a future phase, locations will link dispatcher destinations to their full addresses.
API Reference
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/locations | List all locations for the org |
GET | /api/locations/:id | Get a single location |
POST | /api/locations | Create a location |
PATCH | /api/locations/:id | Update a location |
DELETE | /api/locations/:id | Delete a location |
POST | /api/locations/sync/:bridgeId | Sync locations from a bridge |
Location Fields
| Field | Type | Description |
|---|---|---|
id | UUID | Unique identifier |
name | string | Display name |
type | string | warehouse, store, or office |
address | object | Full address (address1, city, province, zip, country) |
bridge_id | UUID | null | Source bridge (null if manual) |
external_id | string | null | External warehouse ID from bridge |
is_default | boolean | Whether this is the org default |
is_active | boolean | Whether the location is active |
Permissions
locations.read— view locations (granted to all roles)locations.write— create, update, delete locations (organization_manager and above)