Locations are managed from the Locations resource in the app panel.
The resource is company-tenant scoped. All created and updated locations are forced onto the currently selected company tenant.
The main Locations resource is effectively managed by CompanyAdmin users:
viewAny and view policy checksCompanyAdmin can create locationsCompanyAdmin can update locationsCompanyAdmin can delete, restore, or force delete locationsThe create form currently includes these sections:
Checkout to Draft is always enforced as enabled in the current implementation.
Location updates are supported, but the current edit form is narrower than the create form.
In the current build, the buyer experience, tax, shipping, and billing sections are shown during creation, but not on the standard edit screen.
Each location has a Location Users relation manager.
The attach action uses the user's existing role value. There is no separate location-only role field in the relation manager UI.
According to LocationPolicy, the Location Users relation manager is writable for:
CompanyAdmin on any location in the current companyOrdererAdmin only when they are already attached to that same locationOther roles can still reach the location record if they have access, but the relation manager is read-only for them.
Each location also has a Budgets relation manager.
This is where yearly and optional monthly budgets are created and maintained for that location.
For details, see Location Budget Management.
Taken together, the current location-related policies describe this split:
CompanyAdmin: full location management and full location-user managementOrdererAdmin: can manage users only for locations they are attached toBudgetAdmin: does not manage location records themselvesOrderer and Requester: no location-management write accessThe current location workflows are not local-only forms.
The create page uses a dedicated action to create the location and keep Shopify-related data aligned.
The edit page uses a dedicated action to update the location and related Shopify state.
The force-delete action triggers a Shopify delete action before removing the local record.
Because of that, if a location operation fails, it is often tied to Shopify-side validation or sync behavior rather than the Filament form alone.