Robin gives you nine tables to build custom dashboards from. This article lists every table, what each one is for, what a single row represents, every available field, and the things that most commonly cause a number to come out wrong.
If you read only one line per table, read What one row means. It is the line that determines whether your numbers are right.
Before you start: know what you are counting
Most dashboard errors come from the same place. Someone picks a table, drags in a field, and gets a number that looks plausible but answers a different question than the one they asked.
The most common version of this is counting rows instead of counting things.
Several Robin tables contain a row for every desk or room on every day, whether or not anyone booked it. Count the rows and you get the number of desk-days, not the number of bookings. The result will be large, it will trend smoothly, and it will be wrong. The notes below tell you which tables behave this way and what to count instead.
The nine tables at a glance
| Group | Tables | What it answers |
|---|---|---|
| People | People Roster Workplace Presence | Who works here, and who came in |
| Desks | Desk Inventory Desks and Reservations | What desks exist, and who booked them |
| Meeting rooms | Space Inventory Spaces and Reservations Hourly Space Utilization | What rooms exist, who booked them, and how full they actually were |
| Other bookable resources | Custom Resource Inventory Custom Resources and Reservations | Parking, lockers, equipment, EV chargers |
Notice the pattern in the last three groups. Each has an Inventory table, which tells you what you have, and a Reservations table, which tells you what happened. Inventory tables are usually your denominators. Reservations tables are usually your numerators.
Which table should I use?
| Your question | Use this table |
|---|---|
| How many people work here? How many are in each department? | People Roster |
| How many people came into the office? | Workplace Presence |
| Who is meeting our in-office expectations? | Workplace Presence with People Roster |
| How many desks do we have? | Desk Inventory |
| How many desk bookings were there, and who made them? | Desks and Reservations |
| Do people show up for the desks they book? | Desks and Reservations |
| How many meeting rooms do we have, and what are their capacities? | Space Inventory |
| How many meetings were booked, and by whom? | Spaces and Reservations |
| What percentage of the time are our rooms actually in use? | Hourly Space Utilization |
| What is our busiest hour? Our busiest day of the week? | Hourly Space Utilization |
| Are people booking rooms that are too big for their meetings? | Spaces and Reservations, comparing attendees to capacity |
| How is our parking being used? | Custom Resources and Reservations |
People Roster
What it is for: Your employee list. This is where headcount comes from.
What one row means: One person. Every person in your Robin account has exactly one row.
Fields (16)
Organization ID, User ID, Name, Department, Title, Email, Manager Name, Manager Email, Invitation Accepted, Active, Groups, Roles, Default Building, Creation Time, Disabled Time, Employee Number
Use it for
- Headcount, and headcount broken down by department, manager, or building
- The denominator in any metric that starts "what percentage of employees"
- Adoption tracking.
Invitation Acceptedtells you who has actually logged in - Reporting lines, using
Manager Email
Watch out for
- Former employees are still in this table.
ActiveisFALSEandDisabled Timeis filled in for people who have left. If you count rows without filtering toActive = TRUE, your headcount includes everyone who has ever worked there. Decide how you want to handle this once, then apply it the same way on every component. Default Buildingis where someone is assigned, not where they went. A person assigned to Boston who spent the month in London still appears as a Boston row. If your question is about where people actually were, use Workplace Presence.GroupsandRoleshold multiple values in one field. One person can belong to several groups, and those arrive as a single combined value rather than one row per group. Filtering on them requires a "contains" match rather than "equals".- This is a current snapshot, not history. If someone changed departments last month, this table only knows about the new department. You cannot use it to reconstruct what your organization looked like in the past.
Workplace Presence
What it is for: Who was physically in the office. This is the only Robin table that counts people who came in without booking a desk.
What one row means: One person, on one day, at one building.
Fields (23)
Date, Organization ID, Campus ID, Campus, Building ID, Building, Name, Email, Department, Groups, Title, Manager Name, Manager Email, Start Time, End Time, Creation Time, Confirmed, Confirmation Method, Confirmation Time, Canceled, Cancellation Time, Confirmed Locally, Had Reservation
Use it for
- Daily and weekly office attendance
- In-office policy tracking, such as days in office per person per week
- Understanding how presence is detected.
Confirmation Methodshows badge, Wi-Fi, and other signals - Sizing your deskless population.
Had Reservation = FALSEmeans the person came in without booking a desk
Watch out for
- Canceled rows are still in the table. Filter
Canceled = FALSEor you will count visits that did not happen. ConfirmedandCanceledare two different filters. A row can be unconfirmed, meaning planned but never verified, or canceled, meaning called off. "Actually in the office" normally meansConfirmed = TRUEandCanceled = FALSE. Decide which you mean before you build.- There is no
User IDin this table. To combine it with People Roster you have to match onEmail. That works, but email addresses change, and when they do the match silently drops the row rather than raising an error. - Employees with zero visits do not appear at all. Someone who never came in produces no rows. A chart of days in office by employee built only on this table quietly omits everyone with zero, which makes attendance look better than it is. To include them, start from People Roster and bring presence in alongside it.
- One person at two buildings on one day produces two rows. Counting rows overstates how many people came in. Count distinct people instead.
Desk Inventory
What it is for: The desks you have. This is your desk denominator.
What one row means: One desk, on one day. This is a daily snapshot, so 200 desks over 30 days produces 6,000 rows.
Fields (20)
Organization ID, Organization, Date, Campus, Campus ID, Building, Building ID, Building Address, Building Description, Building Open, Floor, Floor ID, Desk Group, Desk Group ID, Desk, Desk ID, Booking Policy, Desk Disabled, Check-in Enabled, Bookable on Unassigned Days
Use it for
- Desk counts by building, floor, and neighborhood, using
Desk Group - The denominator in desk utilization
- Auditing your setup: which desks are assigned rather than bookable, using
Booking Policy, and which require check-in - Tracking how your desk supply changes over time, since this is a daily snapshot
Watch out for
- Do not count rows. Because this is a daily snapshot, a row count answers "how many desk-days", not "how many desks". For a desk count, either filter to a single date or count distinct
Desk ID. - Disabled desks are included. Desks with
Desk Disabled = TRUEcannot be booked. Leaving them in your denominator makes utilization look artificially low. - Assigned desks are included. A permanently assigned desk is not competing for bookings the way a shared desk is. Combining the two into a single utilization number produces a figure that will not mean much to a facilities team. Split by
Booking Policy.
Desks and Reservations
What it is for: Desk bookings. Who booked what, when, and whether they turned up.
What one row means: Read this carefully. This table contains Desk Inventory with reservation details attached. You get a row for every desk on every day. If that desk had a booking, the reservation fields are filled in. If it did not, the reservation fields are empty but the row is still there.
This is the most common source of wrong numbers in Robin data. A row count is not a booking count.
To count bookings, count Reservation ID, which is empty on unbooked rows and therefore counts only real reservations.
Fields (52)
Where and whatOrganization ID, Organization, Reservation Date, Campus, Campus ID, Building, Building ID, Building Address, Building Description, Building Open, Floor, Floor ID, Desk Group, Desk Group ID, Desk, Desk ID, Booking Policy, Desk Type, Check-in Enabled, Desk Disabled, Bookable on Unassigned Days
The bookingReservation ID, Series ID, Reservation Type, Planned Start Time, Actual Start Time, Actual End Time, Actual Hour Duration, Creation Time, Automatically Booked
Whether they showed upChecked In, Check-in Time, Check-in Source, Check-in Type
Whether they canceledCanceled, Cancellation Time, Cancellation Type, Canceling Client Type, Canceling Client Source
WhoCreator Name, Creator Department, Creator Groups, Creator Email, Assignee Name, Assignee Department, Assignee Groups, Assignee Email, Assignee Title, Assignee Manager Name, Assignee Manager Email
How they bookedBooking Client Type, Booking Client Source
Use it for
- Booking volume and trend over time
- Check-in rate, meaning how often a booked desk was actually claimed
- No-shows and cancellations, including how late people cancel, by comparing
Cancellation TimetoPlanned Start Time - Which teams sit where, using
Assignee Department - Which apps people book from, using
Booking Client Source. This is useful for rollout and training decisions
Watch out for
- The empty-row behavior described above. This will affect your first chart if you skip it.
CreatorandAssigneeare different people. Admins and assistants book on other people's behalf regularly. "Bookings by department" means something different depending on which one you group by. Assignee is usually what people intend.- Canceled bookings are still rows. Filter
Canceled = FALSEfor bookings that actually happened. Planned Start Timeis notActual Start Time. Planned is what was reserved. Actual is when the reservation really began. Duration math on the wrong one gives you the wrong answer.Automatically Booked = TRUEmeans Robin created the booking, not a person. If you are measuring employee behavior, these are not employee behavior.- Recurring desk bookings have a
Series ID, so you can group a repeating booking into a single series. Note that meeting room reservations do not have an equivalent field.
Space Inventory
What it is for: The meeting rooms you have, and how many people each one holds.
What one row means: One room, on one day. This is a daily snapshot, the same as Desk Inventory.
Fields (22)
Date, Organization ID, Organization, Campus, Campus ID, Building, Building ID, Building Address, Building Description, Floor, Floor ID, Space, Space ID, Space Type, Schedule Configuration, Is Bookable, Capacity, AMP Enabled, AMP Minute Threshold, AMP Strike Threshold, AMP Enabled Time, Space Disabled Time
About the AMP fields
AMP stands for abandoned meeting protection, the setting that automatically releases a room when nobody checks in.
AMP EnabledandAMP Enabled Time: whether the setting is on for this room, and when it was turned onAMP Minute Threshold: how long Robin waits before releasing the room. The default is 10 minutesAMP Strike Threshold: how many times a recurring meeting can be a no-show before Robin removes it from the room's calendar entirely
Use it for
- Room counts by building, floor, and room type
- Total seat capacity, and the denominator for any capacity-based metric
- Answering "do we have enough small rooms", by grouping rooms by capacity
- Auditing which rooms have automatic release turned on
Watch out for
Capacityis sometimes empty. Rooms that were never configured with a seat count have a blank value. Any average, sum, or capacity-weighted percentage will silently skip them, and your total seat count will be too low. Check how many of your rooms have a blank capacity before you build anything that depends on it.Space Typeis sometimes "unknown". A chart grouped by room type will include an "unknown" bucket. Leave it visible rather than filtering it out, so the reader knows it exists.- Rooms with
Is Bookable = FALSEare included. A lobby or phone booth that nobody can reserve does not belong in a booking denominator. - Daily snapshot. Count distinct
Space ID, not rows.
Spaces and Reservations
What it is for: Meeting room bookings in full detail. This is the most detailed table Robin provides.
What one row means: The same structure as Desks and Reservations. There is a row for every room on every day, whether or not it was booked. Count Meeting ID, not rows.
Fields (66)
Where and whatOrganization ID, Organization, Campus, Campus ID, Building, Building ID, Building Address, Building Description, Building Open, Floor, Floor ID, Space, Space ID, Space Type, Schedule Configuration, Capacity, Is Bookable, AMP Enabled, AMP Enabled Time, AMP Minute Threshold, AMP Strike Threshold, Space Disabled Time
The meetingMeeting ID, Reservation Date, Reservation Creation Time, Reservation Update Time, All Day Meeting, Title, Meeting Category, Is Recurring, Is Ad Hoc, Location
Who was thereInvited People, Attendees
TimingPlanned Start Time, Actual Start Time, Actual End Time, Actual Minute Duration, Check in Time, Minutes Delayed
What went wrongRoom Declined, Canceled, Cancellation Time, Cancellation Type, Automatically Unbooked At
Who booked itCreator Robin ID, Creator Robin Name, Creator Department, Creator Groups, Creator Robin Email, Created by Email
Who is hostingHost Robin ID, Host Robin Name, Host Department, Host Groups, Host Robin Email, Host Title, Host Manager Name, Host Manager Email, Hosting Calendar Email
HowCheck in Source, Booking Client Type, Booking Client Source, Canceling Client Type, Canceling Client Source
Use it for
- Meeting volume, and meeting volume by team
- No-show rate, meaning meetings that were booked but never checked into
- Punctuality.
Minutes Delayedtells you how late meetings start - Right-sizing your rooms. Comparing
AttendeestoCapacityis how you find four-person meetings happening in twenty-person rooms. This is the analysis that most often justifies a floor plan change - Ad hoc versus planned booking behavior, using
Is Ad Hoc - How much room time automatic release is recovering, using
Automatically Unbooked At
Watch out for
Is Recurringtells you a meeting repeats, but there is no series identifier in this table. You cannot group the instances of a recurring meeting into a single series here the way you can with desk bookings. Questions like "how many recurring meetings do we have" are not answerable from this table today.AttendeesandInvited Peopleare not the same thing. Invited is who was on the invitation. Attendees is who Robin believes was actually there. Using invited counts as attendance inflates every room-sizing conclusion you draw.- Both of those fields hold multiple values. They contain a list within a single field, so counting them means counting list entries rather than rows.
CreatorandHostare different people, and the difference matters more here than with desks, because assistants book on behalf of executives frequently. Host is usually the meaningful one.Titlecontains real meeting titles. Meeting titles are often sensitive. Think carefully before putting this field on a dashboard that other people will see.Room Declined = TRUEmeans the room rejected the invitation. These are not meetings that happened. Filter them out.- For utilization, use Hourly Space Utilization instead. This table tells you about bookings. It does not cleanly tell you what share of the day a room was in use.
Hourly Space Utilization
What it is for: How full your rooms actually were, hour by hour. If you are building a utilization percentage or a heatmap, this is the table you want.
What one row means: One room, in one hour. A 50-room building over a 30-day month produces 50 x 24 x 30, or 36,000 rows.
Fields (21)
Date, Time Local, Organization ID, Organization, Campus ID, Campus, Building ID, Building, Floor ID, Floor, Space ID, Space, Space Type, Space Disabled Time, Capacity, Amp Enabled, Office Open, Minutes Booked, Minutes Checked In, Minutes Recaptured, Minutes Autocanceled
The four minute columns
Each row covers a single hour, so each of these values falls between 0 and 60.
| Field | What it means |
|---|---|
Minutes Booked | Minutes the room was reserved |
Minutes Checked In | Minutes someone confirmed they were actually there |
Minutes Recaptured | Minutes returned to the pool because a meeting ended early or was released |
Minutes Autocanceled | Minutes freed because nobody checked in and Robin released the room |
Use it for
- Utilization percentage:
Minutes Bookeddivided by 60 times the number of room-hours - The gap between booked and actually used. Comparing
Minutes Checked IntoMinutes Bookedshows the difference between what people reserve and what they use. The gap is usually larger than people expect - Peak hour and peak day-of-week heatmaps
- Quantifying what automatic release is recovering, using
Minutes RecapturedandMinutes Autocanceled
Watch out for
Office Openis the field that decides whether your utilization number is credible. Every room has 24 rows per day, including the middle of the night. If you leave the closed hours in, you are dividing by a day that is roughly three times too long, and a room that is 60 percent utilized during business hours will show as about 20 percent. Filter toOffice Open = TRUE, or define your own business-hours window. Whichever you choose, state it in the component description.- Decide your denominator explicitly. Minutes divided by 60 gives you share of time in use. Weighting by
Capacitygives you share of seat-time in use. These are different numbers that tell different stories, and rooms with a blank capacity will drop out of the second one. - Disabled rooms still generate rows.
Space Disabled Timeis populated for them. Filter them out. DateandTime Localare both timestamps.Dateis the day bucket.Time Localis the specific hour in the building's own time zone. For anything involving hour of day, useTime Local, otherwise a report covering multiple regions will smear the peak hour across time zones.- This table spells the field
Amp Enabled, while Space Inventory spells itAMP Enabled. Field names are not always consistent between tables, so select fields from the list rather than typing them.
Custom Resource Inventory and Custom Resources and Reservations
What they are for: Everything bookable that is not a desk or a meeting room. Parking spaces, lockers, EV chargers, equipment, and bike storage.
What one row means: One resource, on one day, with booking details where a booking exists. These tables have the same empty-row behavior as the desk and space tables, so count Reservation ID rather than rows.
Fields (44)
WhereOrganization ID, Organization, Reservation Date, Campus, Campus ID, Building, Building ID, Building Address, Building Description, Building Open, Floor, Floor ID
WhatResource Group, Resource Group ID, Resource Name, Resource ID, Resource Type, Resource Subtype, Resource Note, Is Accessible, Capacity
The bookingReservation ID, Is Assigned, Planned Start Time, Actual Start Time, Actual End Time, Actual Hour Duration, Booking Client Source, Checked In, Check-in Source, Check-in Time
WhoCreator ID, Creator Name, Creator Email, Creator Department, Creator Groups, Assignee ID, Assignee Name, Assignee Email, Assignee Department, Assignee Groups, Assignee Title, Assignee Manager Name, Assignee Manager Email
Use it for
- Parking demand and utilization
- Accessible resource availability and usage, using
Is Accessible - Locker and equipment assignment
- Breaking any of the above down by
Resource TypeandResource Subtype, for example parking narrowed to electric vehicle spaces
Watch out for
Flooris often empty. Parking lots and other outdoor resources are not on a floor, so a chart grouped by floor will drop them.Is Assignedseparates permanent assignments from bookings. An assigned locker is not a booking, the same way an assigned desk is not.- Resource types are whatever your organization named them. Unlike desks and rooms, these values are defined by you, so look at your own data before assuming what values exist.
Combining tables
Most useful dashboards eventually need two tables at once, such as presence against roster, or bookings against inventory. Two rules will save you most of the trouble.
Join on IDs, not names. Building ID, Floor ID, Space ID, Desk ID, Campus ID, and Resource ID are stable. Building, Floor, Space, and Desk are display names that someone will eventually rename, and when they do your join will start dropping rows without any error message.
For people, the key depends on the table. People Roster has User ID. Desk and resource reservations have Assignee Email and Creator Email. Workplace Presence has Email only. Any join involving Workplace Presence has to run on email address.
Field naming differences between tables
The differences below are real, not typos. Always select a field from the field list rather than typing it from memory.
| Concept | How it varies |
|---|---|
| When the record was created | Creation Time in roster, presence, and desk tables. Reservation Creation Time in Spaces and Reservations |
| When someone checked in | Check-in Time in desk and resource tables. Check in Time in Spaces and Reservations |
| Automatic release setting | AMP Enabled in Space Inventory. Amp Enabled in Hourly Space Utilization |
| The date of the record | Date in inventory, presence, and hourly tables. Reservation Date in reservation tables |
Writing descriptions people will understand
Every component has a description field. Use it, and write it for someone who has never seen the underlying data. Say what the number counts, over what period, and what is excluded.
| Instead of | Write |
|---|---|
| Sum of Minutes Booked / 60 where Office Open = TRUE | Share of time meeting rooms were reserved during open office hours. |
| AMP recaptured minutes | Time given back because nobody checked in and the room was released automatically. |
| Distinct assignee count from Desks and Reservations | Number of people who booked at least one desk in this period. |
| Presence rows where Confirmed = TRUE | Employees confirmed in the office, including those who did not book a desk. |