You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Workplace is the primary staff-facing application for booking meeting rooms, desks, parking, lockers and visitors, and for exploring building maps. Settings are configured in Backoffice under the app metadata key on a Zone (typically the org or building zone). Anything you set there is merged over the app's build-time defaults, so you only need to define the settings you want to change. Settings on more specific zones (e.g. a building) override the same settings on broader zones (e.g. the org).
All keys below are relative to the app metadata object unless noted otherwise. For example, events.default_duration means { "events": { "default_duration": ... } }.
Common Settings
These options live at the root of the settings file (alongside app, not inside it) and are shared by all PlaceOS apps.
Setting
Type
Default
Description
debug
boolean
true
Write extra debugging messages to the browser console.
mock
boolean
false
Run the app against mock data instead of the live API. Mainly for development and demos.
composer
object
–
Connection details for the PlaceOS API (domain, route, protocol). Managed by developers at build time — leave as is.
service_worker.auto_reload
boolean
false
Automatically reload the app as soon as a new version is available.
service_worker.interval
number
–
Time between checks for new app versions, in milliseconds (minimum 1 minute).
General & Branding
Setting
Type
Default
Description
name
string
"Workplace"
Name of the application, used in the browser page title.
title
string
"Workplace Application"
Display title for the application.
description
string
"PlaceOS Workplace UI..."
Description of the application.
short_name
string
"WorkMate"
Short name for the application.
logo_light
string | object
"assets/logo-light.svg"
Logo shown in the top bar when using the light theme. Either an image URL or an icon object with a src property.
logo_dark
string | object
"assets/logo-dark.svg"
Logo shown in the top bar when using the dark theme. Either an image URL or an icon object with a src property.
environment_bar
string
–
CSS colour for thin environment identifier bars shown at the top and bottom of the app (useful for marking test/UAT environments). Leave unset to hide the bars.
sentry_dsn
string
–
Connection string for Sentry error reporting.
show_changelog
boolean
true
Whether the version number in the user controls links to the changelog modal.
allow_dark_mode
boolean
true
Allow users to switch the application to the dark theme.
default_route
string
"/landing"
Route users are redirected to when they enter the application.
currency
string
"USD"
Currency code used when displaying prices.
use_24_hour_time
boolean
false
Display times using a 24-hour clock.
use_geolocation
boolean
false
Use the device's location to select the closest building when the app loads.
new_features
boolean
true
Show hints in the UI when new features are added.
week_start
number
–
First day of the week for schedule and calendar views. 0 is Sunday through 6 for Saturday.
idle_timeout
number
5
Minutes of inactivity on the meeting form before the user is prompted to discard their changes.
global_search
boolean
true
Show the global search bar in the top bar.
features
string[]
see below
List of feature flags controlling which sections of the app are available.
locales
object[]
10 languages
Languages available in the language selector.
menu_embeds
object[]
–
Additional menu items that open third-party URLs embedded inside the app.
Default features list — remove entries to hide sections of the app:
These apply to all resource booking flows (desks, parking, lockers). Most can be overridden per resource type under desks.*, parking.* or lockers.*.
Setting
Type
Default
Description
bookings.no_approval
boolean
false
Skip the approval process — new bookings are created already approved.
bookings.all_day_default
boolean
false
Turn the "all day" option on by default for new bookings.
bookings.allow_all_day
boolean
–
Make the "all day" option available in resource booking flows.
bookings.allowed_daily_visitor_count
number
100
Maximum number of visitor invites allowed for a single day.
bookings.multiple_visitors
boolean
true
Allow a single visitor invite to include multiple visitors.
bookings.bookable_hours
object
–
Time window in which bookings can be made, as hours of the day, e.g. { "start": 8, "end": 19 }.
bookings.can_book_for_others
boolean
–
Allow users to make bookings on behalf of other users.
bookings.can_book_for_anyone
boolean
–
Allow users to make bookings on behalf of anyone, including people outside the organisation.
bookings.custom_duration_options
number[]
–
Custom list of duration options, in minutes, offered when selecting a booking duration.
bookings.duration_step
number
30
Step, in minutes, between generated duration options.
bookings.min_duration
number
–
Minimum booking duration, in minutes.
bookings.max_duration
number
–
Maximum booking duration, in minutes.
bookings.has_assets
boolean
–
Make asset requests available in resource booking flows.
bookings.use_building_timezone
boolean
–
Display and book times using the building's timezone rather than the user's device timezone.
bookings.force_current_user_for_booking_rules
boolean
false
Always check booking rules against the signed-in user, even when booking on behalf of someone else.
bookings.assigned_resource_booking
allow | deny | other_only
other_only
Controls booking for users with an assigned desk, parking space, or locker. allow permits all bookings. deny and other_only both block a booking whenever the person it is for has an assigned resource of that type — whether that assignment comes from the resource metadata or from an existing is_assigned booking, and regardless of allowed_daily_*_count. They differ in who may book: other_only lets a user with an assigned resource book on behalf of others, deny does not.
Visitor Invites (visitors.*)
These settings override the matching bookings.* settings for visitor invites.
Setting
Type
Default
Description
visitors.allow_all_day
boolean
–
Make the all-day option available for visitor invites. Falls back to bookings.allow_all_day.
visitors.can_book_for_others
boolean
–
Allow users to invite visitors on behalf of another internal host. Falls back to bookings.can_book_for_others.
visitors.can_book_for_anyone
boolean
–
Allow users to invite visitors on behalf of any host, including an external host. Falls back to bookings.can_book_for_anyone.
Meetings & Events (events.*)
Setting
Type
Default
Description
events.bookable_hours
object
–
Time window in which meetings can be booked, as hours of the day, e.g. { "start": 8, "end": 19 }.
events.all_day_period
object
–
Time window used for "all day" meetings, as hours of the day.
events.multiple_spaces
boolean
false
Allow users to book multiple spaces in a single meeting.
events.desk_start
number
9
Default start time (hour of the day) for desk bookings made from the meeting flow.
events.can_book_for_others
boolean
false
Allow users to create meetings on behalf of another host.
events.has_catering
boolean
true
Show the catering step in the meeting booking flow.
events.has_assets
boolean
true
Make asset requests available in the meeting booking flow.
events.allow_all_day
boolean
true
Make the "all day" option available for meetings.
events.allow_multiday
boolean
–
Allow meetings to span multiple days.
events.allow_externals
boolean
true
Allow external (non-directory) attendees to be added to meetings.
events.allow_recurrence
boolean
false
Allow recurring meetings to be created.
events.allow_daily_allday_recurrence
boolean
false
Allow daily recurrence for all-day meetings.
events.allow_online_meetings
boolean
false
Show the online meeting option on the meeting form.
events.hide_notes
boolean
false
Hide the notes field on the meeting form.
events.hide_attendees
boolean
false
Hide the attendees field on the meeting form.
events.hide_nearby_desks
boolean
false
Hide the "book nearby desks" action on the meeting success view.
events.features_label
string
""
Custom label for the space features field in the meeting flow.
events.features_on_form
boolean
false
Show space features on the meeting form.
events.booking_unavailable
boolean
false
Mark room booking as unavailable. When true, submitting the meeting form opens a modal linking to the alternate booking method instead of creating the event.
events.no_standalone
boolean
–
Require every meeting to include at least one room. When true, submitting without a space shows an error.
events.strict_capacity_check
boolean
–
Strictly limit the attendee count to the total capacity of the selected spaces.
events.use_bookings
boolean
–
Manage room meetings through the PlaceOS bookings API instead of calendar events.
events.use_building_timezone
boolean
–
Display and book meeting times using the building's timezone.
events.force_current_user_for_booking_rules
boolean
false
Always check meeting room booking rules against the signed-in user, even when booking on behalf of someone else.
Desks (desks.*)
Setting
Type
Default
Description
desks.bookable_hours
object
–
Time window in which desks can be booked, as hours of the day, e.g. { "start": 8, "end": 19 }.
desks.allow_all_day
boolean
true
Make the "all day" option available for desk bookings. Overrides bookings.allow_all_day.
desks.allow_time_changes
boolean
true
Allow users to change the time of desk bookings.
desks.allow_groups
boolean
true
Allow group desk bookings.
desks.has_group_booking
boolean
–
Whether users are allowed to make group desk bookings.
desks.allow_recurrence
boolean
true
Allow recurring desk bookings.
desks.auto_allocation
boolean
false
Automatically allocate a desk instead of letting the user pick one.
desks.can_book_lockers
boolean
true
Allow users to book a locker as part of the desk booking flow.
desks.can_book_for_others
boolean
true
Allow users to book desks on behalf of other users. Overrides bookings.can_book_for_others.
desks.can_set_host
boolean
–
Allow the user to set someone else as the host of a desk booking.
desks.default_duration
number
60
Default duration for desk bookings, in minutes.
desks.custom_duration_options
number[]
–
Custom list of duration options, in minutes, for desk bookings. Overrides bookings.custom_duration_options.
desks.duration_step
number
30
Step, in minutes, between duration options for desk bookings. Overrides bookings.duration_step.
desks.min_duration
number
60
Minimum desk booking duration, in minutes. Overrides bookings.min_duration.
desks.max_duration
number
480
Maximum desk booking duration, in minutes. Overrides bookings.max_duration.
desks.has_assets
boolean
–
Make asset requests available in the desk booking flow. Overrides bookings.has_assets.
desks.hide_map
boolean
false
Hide the map when selecting desks.
desks.default_select_as_map
boolean
false
Open the desk selection modal on the map view instead of the list view.
desks.needs_reason
boolean
–
Require users to enter a reason for their desk booking.
desks.hide_reason
boolean
–
Hide the ability to enter a reason for a desk booking.
desks.show_calendar_links
boolean
true
Show "add to calendar" links on the desk booking success view.
desks.use_building_timezone
boolean
–
Display and book desk times using the building's timezone. Overrides bookings.use_building_timezone.
Parking (parking.*)
Setting
Type
Default
Description
parking.allow_all_day
boolean
true
Make the "all day" option available for parking bookings. Overrides bookings.allow_all_day.
parking.allow_recurrence
boolean
true
Make multi-day recurrence options available in parking flows.
parking.available_period
number
7
Number of days into the future that parking can be booked.
parking.bookable_hours
object
–
Time window in which parking can be booked, as hours of the day.
parking.can_book_for_others
boolean
–
Allow users to book parking on behalf of other users. Overrides bookings.can_book_for_others.
parking.can_book_for_anyone
boolean
–
Allow users to book parking for anyone, including external users. Overrides bookings.can_book_for_anyone.
parking.custom_duration_options
number[]
–
Custom list of duration options, in minutes, for parking bookings. Overrides bookings.custom_duration_options.
parking.min_duration
number
30
Minimum parking booking duration, in minutes. Overrides bookings.min_duration.
parking.max_duration
number
480
Maximum parking booking duration, in minutes. Overrides bookings.max_duration.
parking.show_calendar_links
boolean
–
Show "add to calendar" links on the parking booking success view.
parking.use_building_timezone
boolean
–
Display and book parking times using the building's timezone. Overrides bookings.use_building_timezone.
parking.request_submission_notes_html
string
""
Optional HTML content shown in the parking request summary and submission section.
parking.request_shift_options
object[]
–
Shift presets shown in the parking request flow (see example below). The custom shift option is always shown separately.
parking.request_types
object[]
standard, special, after_hours
Request type options shown in the parking request flow (see example below).
parking.request_space_restrictions
object[]
–
Space restriction options shown as a radio set in the parking request flow. If the list is empty, the field is hidden. Each item needs an id and a name.
parking.require_space_restriction
boolean
true
Require users to select a configured space restriction in the parking request flow.
parking.extra_space_restrictions
object[]
–
Additional space restriction options shown as on/off toggles; multiple can be enabled at once. Each item needs an id and a name (label or translation key).
parking.auto_approved_groups
string[]
–
User group names that are auto-approved for parking requests. Users in these groups will not see the approver group selector.
parking.vehicle_types
object[]
car, bike, van, truck, other
Vehicle type options shown in the parking request flow. Each item needs an id and a name.
parking.hidden_buildings
string[]
[]
Building (zone) IDs to hide from the location options in the parking request flow. Buildings without any levels tagged parking are always hidden.
parking.hide_prefer_toggle
boolean
false
Hide the "Prefer booked location first" toggle in the location preference section.
parking.hide_custom_shift
boolean
false
Hide the custom option from the shift selection dropdown.
parking.hide_selected_space
boolean
false
Hide selected parking space names in booking cards and booking detail modals.
parking.hide_availability_counter
boolean
false
Hide the parking availability counter shown next to the selected location or level.
parking.require_plate_number
boolean
false
Make the plate number/registration field mandatory in the parking request flow.
parking.show_status_details
boolean
–
Show availability status details (status text, assigned users, plate numbers) in the explore map parking tooltip.
Shift presets (start_time/end_time are minutes from midnight; groups optionally limits who sees the preset):
Request types (forced_time locks the form to a fixed window and hides the shift picker; book_as can be internals, externals or both — when omitted the host field is hidden):