WorkestraDocs
ModulesField Service

Field Service Settings

Workspace-level Field Service configuration for intake, numbering, service skills, and dispatch scoring.

Field Service settings live at /fsm/settings. Workspace members can read the current configuration, and workspace admins can save changes.

The settings are stored in the fsm_workspace_settings table. The dispatch scorer reads the scoring and service-skill settings every time it ranks technicians.

The settings page is operational, but it is not the full FSM administration suite yet. Dispatch scoring, service-type skill requirements, and unique custom intake aliases are wired into runtime. Deeper SLA, notification, webhook, and finance-automation settings are still separate work.

Current settings page

SectionSettingRuntime effect
Intake and numberingIntake email aliasSaved as a workspace custom alias. Signed inbound email sent to that exact alias creates an FSM request before the support-ticket fallback runs.
Intake and numberingRequest prefixSaved as the workspace default request prefix.
Intake and numberingEstimate prefixSaved as the workspace default estimate prefix.
Intake and numberingWork order prefixSaved as the workspace default work-order prefix.
Intake and numberingAppointment prefixSaved as the workspace default appointment prefix.
Dispatch scoringSkill weightUsed by dispatchOptimalTech when scoring technician skill match.
Dispatch scoringProximity weightUsed by dispatchOptimalTech when scoring service-area or coordinate proximity.
Dispatch scoringWorkload weightUsed by dispatchOptimalTech when scoring current open appointment load.
Dispatch scoringTruck weightUsed by dispatchOptimalTech when scoring truck inventory availability.
Dispatch scoringMax travel kmControls the coordinate-distance decay for proximity scoring.
Dispatch scoringUnknown distance scoreBaseline proximity score when either the appointment or technician has no coordinates and no same-service-area match.
Dispatch scoringWorkload capacityNumber of active jobs treated as a full workload for scoring and warnings.
Service type skill mapJSON map of service_type to skill IDsUsed by dispatchOptimalTech to decide which technician skills are required for each work order service type.

Default dispatch policy

New workspaces start with these defaults:

FactorDefault
Skill weight0.4
Proximity weight0.3
Workload weight0.2
Truck weight0.1
Max travel distance100 km
Unknown-distance score0.3
Workload capacity10 active appointments

The four weights are normalized by the scorer, so the score remains in the 0-1 range as long as at least one weight is above zero.

Service-type skill map

The skill map is a JSON object. Keys are the work order service_type values your team uses, and values are arrays of workspace skill IDs.

{
  "hvac": ["skill-refrigerant", "skill-electrical"],
  "plumbing": ["skill-water-heater"]
}

When a work order has a service type with no configured skill map, dispatch gives the skill factor a neutral soft-pass score. That keeps recommendations available while you are still building the taxonomy, but the ranked suggestions will be less precise.

Access control

The settings table uses workspace-scoped row-level security:

ActorAccess
Workspace memberRead settings
Workspace admin or ownerCreate and update settings
Service roleFull access for server-side runtime

In the UI, non-admin users can see the settings but cannot save changes.

Intake alias routing

Custom aliases are normalized to lowercase when saved. Workestra enforces uniqueness for custom aliases while allowing multiple workspaces to keep the default service@workestra.app value.

The signed inbound email webhook routes an email to FSM when the To address exactly matches a saved custom alias. The default service@workestra.app value is not claimed globally because it is shared by default and cannot identify one workspace by itself.

What is still separate

These areas are not controlled by /fsm/settings yet:

  • Service contract SLA defaults. SLA fields still live on service contract rows.
  • Webhook subscriptions and delivery policy.
  • Notification templates for estimates, reports, SLA breaches, Slack, or Teams.
  • Finance auto-invoicing on work-order completion.
  • Dispatch calendar, map, GPS, route planning, and drag-and-drop reassignment.
  • Full LLM constraint solving. The current dispatch engine is deterministic and greedy.
  • Dispatch - how settings affect technician ranking
  • Email Intake - current service@... intake behavior
  • Service Areas - how same-area matching affects proximity
  • Technicians - technician skills, home base, and truck inventory