Locations
A location is a physical site you service — an office, a retail store, a server room, a warehouse, a customer site. Locations live under clients, group their own assets, and link to every related ticket and project.
The Locations Directory
Open Clients → Locations to see the full directory (/clients/locations/).
The page provides:
Top toolbar
- Page title + breadcrumb (Home → Clients → Locations)
- Add Location button — opens the create modal
- Import button — bulk CSV import
- Export CSV action — download the current filtered set
Left sidebar
- All Locations count
- One row per
location-categoryterm with count - A gear icon to Manage Categories (admin/editor)
- A View Archived toggle button at the bottom
Filters above the table
- Search — matches title, address line 1, address line 2, and location type
- Filter by Client — dropdown of all clients
- Filter by Location Type — text-match against the
location_typefield - Sort by — Title / Location Type / Last Updated, with ASC/DESC toggle
Table columns (with toggle visibility)
- Title
- Client
- Location Type
- Address
- Status
- Last Updated
- Actions
Pagination: 20 per page.
Creating a Location
- Click Add Location in the toolbar
- The Create Location modal opens
- Fill in the required fields (see below)
- Click Create Location
The new location appears in the directory immediately, and you're redirected to its workspace.
Location Fields
Locations have a comprehensive set of fields — most optional, all editable from the workspace.
Identity
- Title (required) — the location name (e.g. "Headquarters", "Warehouse North", "Acme — Salt Lake Office")
- Location Type — free-form text (Office, Warehouse, Server Room, Customer Site)
- Location Status — taxonomy term (default: Active)
- Category — taxonomy term from
location-category
Client Assignment
- Client — pick from your client list (relationship field — supports multiple clients but typically one)
Address
- Address Line 1
- Address Line 2
- City
- State / Province
- Country (US/CA/Other)
- ZIP / Postal Code
- Coordinates (auto-geocoded from the address when geocoding is configured)
Contact
- Primary Contact Type — toggle between an existing portal user and a free-form contact
- Contact User (when type = portal user)
- Contact Name, Mobile Phone, Email Address (when type = free-form)
Operations
- Hours of Operation — repeater with per-day Open/Close times and a Closed flag
Assignment
- Assigned To — primary technician or staff member
- Secondary — backup or secondary assignee
Service
- Service Notes — free-form maintenance instructions visible to assigned techs
Linked Items
- Assets at this Location — relationship to
assetposts (location_assets)
The Single-Location Workspace
Click any location in the directory to open /location/<slug>/. The workspace uses a two-column layout:
Left column (top)
- A Map / Gallery tab pair:
- Map — embedded map of the address (when geocoded)
- Gallery — uploaded photos of the location
- An Activity Log card showing recent changes
Right column (top)
- Quick edit controls — status, type, primary contact, address (admin/editor)
- Inline editing — click any field to edit, blur to save (AJAX)
Bottom section — tabbed details
A horizontal tab row spans the full page below the two columns.
Location Tabs
| Tab | Purpose |
|---|---|
| Details | Full address, hours of operation, contact info |
| Tickets | Every ticket that references this location |
| Files | Documents and images attached to the location |
| Notes | Free-form notes (separate from service notes) |
| Vault | Encrypted credentials for this location |
Tabs that have no content render an empty state ("No tickets for this location") rather than hiding.
Hours of Operation
Each location can declare per-day operating hours via a repeater field:
| Day | Closed flag | Open Time | Close Time |
|---|---|---|---|
| Monday | — | 09:00 | 17:00 |
| Tuesday | — | 09:00 | 17:00 |
| Wednesday | — | 09:00 | 17:00 |
| Thursday | — | 09:00 | 17:00 |
| Friday | — | 09:00 | 17:00 |
| Saturday | — | 10:00 | 14:00 |
| Sunday | ✓ Closed | — | — |
Hours surface in:
- The Details tab on the workspace
- Ticket forms when a user is filing a ticket against this location (so they know if the site is open)
- Optional integrations with scheduling tools
Primary Contact
Locations support two contact modes:
Portal user
Pick an existing WordPress user. Useful when the contact is already a portal user — clicks through to their profile, gets pre-filled email/phone from the user record.
Free-form
Type a name, mobile phone, and email directly. Useful for site managers who don't have portal accounts (security guards, on-site receptionists).
The mode toggle (primary_contact_type) shows/hides the relevant fields.
Related Tickets, Projects & Resources
Locations integrate with three other features:
Tickets
A ticket can reference a location via the location field. The location's Tickets tab queries every ticket where it's referenced — open and closed.
Use cases:
- "Show me all open tickets at the Salt Lake office"
- "Last time we serviced this site, what was the issue?"
Projects
Projects can be tagged with one or more locations. Useful for multi-site rollouts ("Office Refresh — Phase 1: Salt Lake, Denver, Phoenix").
Resources
Locations have a related-resources tab — link any portal resource (a floor plan, an emergency procedure, a vendor contact list) to the location for quick reference.
Bulk Import
For setting up many locations at once, the Import modal (toolbar) accepts CSV uploads.
Recognized columns:
| Column | Notes |
|---|---|
title (required) | Location name |
client_name | Match to existing client by name |
location_type | Free-form |
address_line_1, address_line_2, city, state, zip, country | Address fields |
category | Match to existing category, or create on the fly |
assigned_to | Match to user by email or username |
primary_contact_email | Match to user by email, or create free-form |
Same three-step preview/commit flow as the client import.
Archive & Restore
When a location is no longer in service:
- Open the location workspace
- Click the three-dot menu → Archive Location
- Confirm
Archived locations:
- Hidden from the default directory view
- Their assets remain visible (you can move them to another location, or archive them too)
- Restored from the View Archived toggle in the sidebar
For permanent deletion, use the same menu — admin-only and irreversible.
Archive a location before its assets. Assets at an archived location are still visible in the Assets directory, but they show with an "Orphaned" indicator. To clean up properly, either move the assets to another location first or archive both together.