This chapter explains how Spacewell calculates various occupancy metrics.
- Summary
- M1 - Presence
- M2 - Headcount
- M3 - Occupancy
- M4 - Utilization
- M5 - Dwell time
- M6 - Capacity
- M7 - Efficiency
Summary
M1 - Presence
Definition: Presence = 1 (“presence”) or 0 (“no presence”) in 1 space, as detected during a timeslot
Presence is detected via all types of occupancy sensors.
This metric is useful when analyzing 1 individual space
Example: presence on 1 specific workplace, hourly
M2 - Headcount
Definition: Headcount = nr of persons in 1 space, detected by a sensor at a given timestamp
Some sensor types can only detect presence (thus headcount = 1), others can detect actual headcount (thus headcount = N)
All timeslots contain Presence and Headcount values, even if there are no headcount sensors installed:
- When a presence sensor is installed:
Presence = 1 (per timeslot)
- Headcount = a decimal value between 0 and 1 (per timeslot)
The value depends on how long a person has occupied a space during the timeslot.
Examples for 1h timeslot:when occupied the whole hour, headcount = 1
- when occupied for 3/4 hour, headcount = 0,75
- when occupied for 1/2 hour, headcount = 0,5
- when occupied for 1/4 hour, headcount = 0,25
- This means that per timeslot, Spacewell stores 3 headcount values:
headcount_avg (average value per timeslot)
- headcount_peak (highest value per timeslot)
- headcount_low (lowest value per timeslot)
- When a headcount sensor is installed:
Presence = 1 (per timeslot) – derived from Headcount value
- Headcount = N (per timeslot) – derived from sensor
Example: headcount in 1 specific meeting room with capacity of 6 seats, hourly
When considering a single space, the headcount metric really defines how many persons are occupying it at a given point in time.
However, when considering multiple spaces, for example a whole floor, “headcount” becomes an “estimated headcount” instead of a real number of people. The reason is that sensors are unaware of each other. Each sensors simply measures what happens to it.
A typical use case is that a person has booked a desk for an entire day, just to be sure that he/she will have a seat to work. During the day, this person will not only sit at the reserved/occupied workplace. There will be times where the person leaves his/her desk, going into meeting/focus rooms for conferencing, or going into social spaces for time off.
Consequently, when a person arrives at a desk at 09:00am, works there for 15 minutes, then goes to the coffee corner for 10 minutes, and finally enters a meeting room at 09:45, the sensors will reveal this information:
Timeslot (9am to 1am) | Space | Avg headcount | Peak headcount |
|---|---|---|---|
09:00 - 10:00 | desk | 0.25 (15 mins) | 1 |
09:00 - 10:00 | coffee corner | 0.17 (10 mins) | 1 |
09:00 - 10:00 | meeting room | 0.25 (15 mins) | 1 |
09:00 - 10:00 | aggregation effect across multiple spaces | 0.67 (sum) | 3 (sum) |
M3 - Occupancy
Definition: Occupancy = nr of occupied spaces / nr of monitored spaces at a given timestamp
By definition, Occupancy is always represented as a percentage and is sometimes called “Occupancy rate”.
The metric “occupancy” makes most sense when considering multiple spaces in a zone, floor or building! It’s not useful for 1 individual space. Nevertheless we store a value per individual space, but it is either 0% or 100% per 15-minute timeslot.
Illustration:
In this example, we monitor 4 individual workplaces that are contained in a room called “High Desks”.
On a given date, e.g. 2025-10-07, we see these values in the 1-hour time slots for each of the 4 workplaces:
Per hour we have 4 values, each representing 1 monitored workplace.
In this example, for the 9th hour of the day:
- Workplace ‘1610000000015935’ was occupied for 0.25 hours
- Workplace ‘1610000000015936’ was not occupied at all
- Workplace ‘1610000000015937’ was occupied for 1 hour
- Workplace ‘1610000000015938’ was occupied for 1 hour
For individual spaces like these 4 workplaces, the tables also have a column “occupancy_rate”.
By definition, occupancy rate = nr of occupied locations / nr of monitored locations.
Per workplace, nr of monitored locations is always 1 of course.
Consequently, occupancy_rate is always equal to utilization_rate when looking at 1 monitored location!
The occupancy rate becomes much more useful when looking at the room “High Desks” that contains these 4 workplaces:
The hourly timeslots show that for the 9th hour of the day:
- Peak occupancy rate was 75%, meaning that during this hour, 3 out of 4 workplaces were occupied simultaneously during the busiest quarter-of-hour (from the 15-minute values)
- Low occupancy rate was 50%, , meaning that during this hour, 2 out of 4 workplaces were occupied simultaneously during the calmest quarter-of-hour (from the 15-minute intervals)
- Average occupancy rate was 56,25% based on the quarter-of-hours
These are the 15-minute values for the same room, 9th hour_of_day on 2025-10-07:
Per 15-minutes, occupancy rate = locations_occupied / locations_occupancy_monitored
Aggregated per hour:
- occupancy_rate = average of the 15-minute values = 56,25%
- occupancy_rate_peak = highest of the 15-minute values = 75%
- occupancy_rate_low = lowest of the 15-minute values = 50%
M4 - Utilization
Definition: Utilization = how many hours an individual space is used on a timeline
Can be expressed as absolute value or rate:
- Utilization time (hours) = hours used (absolute value)
- Utilization rate (%) = hours used / hours available (relative value)
Illustration:
Meeting room “Coral” was used for short periods of time on 2025-10-10:
At 12:00 for just 15 minutes
And from 13:00 to 14:15 (5 consecutive quarter-hours)
In the 15-minute timeslots, utilization time is either 0 or 0,25 hours per quarter-hour and of course 0 or 100% per quarter-hour.
When looking at the same using the 1-hour timeslots:
M5 - Dwell time
Definition: Dwell time = uninterrupted hours of presence for a given space. Is the longest streak of presence detected per space on a given day
- Is always an absolute value (in hours)
- We calculate these 3 values on daily basis – see chapter 4.3
Average dwell time
- Longest dwell time
- Shortest dwell time
Illustration:
In the 15-minute timeslots, we see short periods of presence for meeting room “Coral” on 2025-10-10:
Based on these, dwell times are calculated in the 1-day timeslots:
The longest dwell time on that day is 1,25h (from 13:00 to 14:15), the shortest is 0,25h (either at 12:00 or at 18:30) and the average dwell time is 0,58h. It means that the space was occupied for 0,58 uninterrupted hours on average.
Info
NOTE - The dwell time metric is not yet available in the dashboards, only in the Data Platform.
M6 - Capacity
Definition: Capacity = nr of seats in a space
- For Workplaces / Parking places: capacity = 1 (always)
- For Meeting spaces: capacity = nr of seats
- For Work / Focus spaces capacity = nr of workplaces inside
- For Other spaces capacity = nr of seats
Every space always has a capacity
Capacity is considered to be relatively static. Nevertheless, it can change over time, therefore the value is recorded per timeslot.
Illustration:
M7 - Efficiency
Efficiency values tell us how efficiency a space is being used, during presence.
Spacewell applies two efficiency metrics:
- Efficiency rate
- Efficiency score
Note that efficiency can only be measured via headcount sensors!
Definition: Efficiency rate = average headcount / capacity, during presence
- Determines how “full” an individual space is during presence, or otherwise said, how many seats are occupied during presence
- Is always a rate (%)
- Spacewell only calculates values during presence. In timeslots where presence = 0 the values are NULL
Illustration:
Meeting room “Coral” was used for short periods of time on 2025-10-10 but only by 1 person (headcount_average = 1). During presence, the utilization_rate is 100% but the efficiency_rate is 25% because it’s a meeting room with capacity for 4 persons.
Definition: Efficiency score = utilization_rate x efficiency_rate
- Determines how “full” an individual space is during its entire availability
- Is always a rate (%)
- Because Efficiency is NULL when there is no presence, the calculation is:
- IF Efficiency is NULL then Efficiency Score = Utilization
ELSE Efficiency Score = Utilization x Efficiency
Values are only calculated per day
Illustration:
On 2025-10-10, meeting room “Coral” was used 1,75 hours in total (utilization_time), which is 14,58% of the available 12 business hours (from 8am to 8pm). And because it’s a meeting room with capacity of 4, used by 1 person, the efficiency rate is 25%.
This leads to a utilization score of 14,58% x 25% = 3,65% for this day.
It means that only 3,65% of the full capacity per day (12 business hours x 4 persons) is used: 1,75 hours used out of (12 x 4 = 48 total) = 3,65%.