"A link just takes me back to the dashboard for no reason"
This is almost always a disabled module, not a bug. Two modules are off by default for every new company, regardless of your plan, and have to be explicitly turned on: Shift Patterns, and every Payroll sub-feature (positions, overtime, surcharges, deductions, payments, periods, tips, KPI bonus, manual bonus). Everything else — staff, schedule, reports, inventory, tasks, statistics — is on by default.
Right now the app doesn't show an explanation when this happens: clicking into a disabled feature's page silently redirects you back to the dashboard, and an API call returns a plain "Module disabled" error with no in-app banner explaining it. If a menu item or bookmarked link stops working with no visible reason, this is the first thing to check — contact support or your platform admin to confirm which modules are enabled for your company before assuming something is broken.
Consolidated error reference
| Area | Message | What it means |
|---|---|---|
| Worker registration | Email is already registered | That email is already in use |
| Worker registration | Bicycle assignment is required for location-based companies | You must pick a location when registering via Manager/Admin |
| Location manager | This location already has a location manager | One location manager per location — reassign or remove the existing one first |
| Manual shift | At least one worker is required | No worker selected |
| Manual shift | EMPLOYEE_DISMISSED | That worker is dismissed — reactivate them first if this was unintentional |
| Manual shift | EMPLOYEE_UNAVAILABLE_FOR_DATE | The worker marked themselves unavailable that day |
| Shift pattern | CYCLE_LENGTH_MUST_BE_POSITIVE / DAY_INDEX_OUT_OF_RANGE / END_TIME_MUST_BE_AFTER_START_TIME | Basic validation on the pattern's days/cycle |
| Pattern assignment | EMPLOYEE_HAS_OVERLAPPING_ASSIGNMENT | End the existing assignment before starting an overlapping one |
| Pattern assignment | EFFECTIVE_TO_BEFORE_START_DATE | The end date you set is before the start date |
| Shift pattern settings | HORIZON_DAYS_OUT_OF_RANGE | Generation horizon set outside the allowed range |
| Report | REPORT_ALREADY_EXISTS_FOR_BICYCLE_AND_DATE | A report already exists for that location/date |
| Report | ACTIVE_SHIFT_ALREADY_EXISTS | An active shift is still open for that slot |
| Report | DUPLICATE_WORKER_IN_REPORT | The same worker listed twice |
| Report | Field required: <key> |
Required field left blank |
| Report config | Custom field limit reached (20) | Company's custom-field limit hit |
| Report | GARAGE_CAP_OVERRIDE_COMMENT_REQUIRED | A comment is mandatory when overriding capped worked minutes |
| Inventory | Maximum 10 inventories per bicycle | Per-location inventory limit reached |
| Inventory | Inventory name must be unique within bicycle | Duplicate inventory name at the same location |
| Inventory | Inventory must be empty before deletion | Clear it first |
| Inventory | Merge is allowed only when at most one selected inventory has items | Empty one side before merging two active inventories |
| Payroll period | Overlaps with existing period... / Payroll period is already locked | Period date ranges can't overlap; a locked period can't be re-locked |
| Position | An active position with this name already exists | Duplicate active position name |
| Salary access | Access denied to worker salary data | A location manager tried to view a worker outside their own location |
Quick sanity checks before assuming something's broken
- Scheduling/pattern assignment silently rejects a worker → check they're not dismissed and haven't marked themselves unavailable for that date.
- A location manager "can't see" something (a worker's salary, a report, an inventory) → check the worker/report/inventory actually belongs to that manager's own location; location managers are scoped deliberately.
- A feature or menu item seems to have disappeared → see the module visibility note above before assuming it's a bug.