Reference
Exhaustive tables for Door & Gate Access: every event state, denial reason, setting, default, limit, and option value in one place. Use this page to look up exactly what a value means; the linked guide pages explain how to use each feature.
Access event states
Shown in the Access Logs:
| State | Meaning |
|---|---|
| Request received | The unlock request arrived and is being evaluated (transient) |
| Pending | The request passed checks and is awaiting dispatch (transient) |
| Unlocked | The unlock was reported successful |
| Confirmed unlocked | The door controller confirmed the relay released |
| Admin Unlocked | An admin triggered the unlock from Performance Hub (admin override); logged when the command is dispatched |
| Denied | The request was rejected — see the denial reason on the event |
| Timed out | The command was sent but the controller didn't confirm in time |
| Failed | The unlock could not be completed due to an error |
| Locked by staff | Staff used Lock now while the auto-unlock schedule was holding the door open (a schedule event, not an unlock attempt) |
| Schedule resumed | The auto-unlock schedule took over again (a schedule event, not an unlock attempt) |
Event lifecycle: received → dispatched → confirmed unlocked / denied / timed out / failed.
Denial reasons
Each denied/failed unlock records a reason. The table maps the reason to what the member sees and how to fix it:
| Reason (as logged) | Member-facing message | Cause | Fix |
|---|---|---|---|
access_disabled | "Your access has been suspended — please contact the facility" | The user's Access enabled switch is off | Re-enable it on the user's panel in Users |
no_matching_policy_or_grant | "You don't have access to this door" | No Access Policy matched Who AND Where AND When and no additive grant path allowed access | Review Access Policies, user attributes, targets/exclusions, schedule, and grants |
no_matching_policy_target | "You don't have access to this door" | No enabled Access Policy targets this door for the request | Add the door or its Access Scope to a policy, or use an all-doors target |
no_matching_policy_audience | "You don't have access to this door" | Policies target the door, but none match the person's type/status or tags | Review the policy's Who section and the Users record |
outside_policy_schedule | "Outside allowed access hours" | Who and Where match, but all matching policy schedules are inactive or expired | Review the policy's When section and facility timezone |
outside_geofence | "Move closer — you're outside the location's geofence." | The reported location is beyond radius + GPS accuracy + buffer from the geofence centre | Member moves closer; or review the geofence radius/pin |
gps_too_imprecise | "Couldn't pin down your location accurately. Try again outdoors." | The phone's GPS accuracy is worse than the Require GPS accuracy better than threshold | Member retries outdoors / away from interference; or raise the threshold |
location_unavailable | "Couldn't read your location. Make sure Location is enabled and set to Precise, then try again." | The phone didn't report a usable location | Member enables Location (Precise) for the app |
geofence_misconfigured | Unlock denied | Geofence is enabled but its centre/pin is missing — the system fails closed | Place the geofence pin in Settings → Geofencing |
device_offline | "Door is offline. Please contact the facility." | The door controller hasn't reported in (no heartbeat within 5 minutes) | Restore power/network to the controller — see Troubleshooting |
user_deleted | "You don't have access…" | The Users record was deleted | Re-create or restore the user |
outside_access_time_window | Door disabled with next availability when known | A future window is the user's only potential allow path and is not active yet | Check the supplied availability, timezone, source freshness, and mapping; Access Policies and grants still apply independently |
Some app versions show the broader "You don't have access to this door" or "Outside allowed access hours" message for policy-specific denials. Access Logs retain the detailed reason for administrators.
Access Policies
| Property | Meaning |
|---|---|
| Policy shape | Unique name, optional description, enabled flag, Who audience, Where targets/exclusions, When schedule |
| Policy match | Who AND Where AND When |
| Multiple policies | OR; any matching enabled policy allows |
| Who | Person type plus optional statuses, OR synced/custom tags; empty statuses = any status |
| Where | All facility doors, Access Scopes, individual doors, or combinations; exclusions win within that policy |
| When | Anytime, or ORed Weekly/One-time windows |
| Other allow paths | Permanent grants and administrator/integration windows stay separate and additive |
| Safety | Deleted/disabled/sync-blocked users, door deletion/block, maintenance, geofence, rate limits, and controller checks still apply |
| Existing configuration | Imported automatically into equivalent named policies with explicit Who, Where, and When |
Policy attribution
Access Logs identify a matching policy by name and can show its audience, target, and schedule. Scheduled matches can also include the active concrete start and end.
Access Time Window reference
| Property | Meaning |
|---|---|
| Authorisation | Policy schedule windows are the policy's When; administrator/integration windows are separate additive allow paths |
| Absolute boundary | Integer Unix-second UTC instants, [from, to) |
| Absolute timezone | Display/audit metadata; does not shift epochs |
| Weekly boundary | Local HH:mm blocks with exclusive ends |
| Weekly timezone | Valid IANA timezone driving wall-clock day/time and DST |
| Weekly bounds | Optional Unix-second active-from/active-until; end exclusive |
| Overnight/overlap | Not accepted; split overnight periods across days and keep blocks non-overlapping |
| User ownership | Administrator and each integration source are isolated; one cannot erase another |
| Integration scope | Stable source scope_key, default default, mapped to PH targets; unknown/unmapped fails closed |
| Source freshness | Configured per integration cadence; stale-source behaviour must be explicit |
| Safety | Never bypasses disabled/deleted/conflicted users, blockAllAccess, maintenance, geofence, rate limits, or controller checks |
Initial limits: 50 windows per policy/grant/source container; 90-day maximum absolute span; 120 characters for IDs/labels/scope keys; eight weekly blocks per day; newly written entries cannot already be expired by more than one hour.
Settings, defaults, and ranges
Door settings
| Setting | Default | Range / options |
|---|---|---|
| Hold time | 10 seconds | 1–30 seconds |
| Maintenance mode | Normal | Normal / Force open / Force closed |
| Door open sound | Off | On / Off |
| Door location label | — | Free text, max 64 characters |
| Icon | Door | 10 options (below) |
| Auto-unlock schedule | Off | Facility staffed hours or Custom schedule, facility timezone |
| Auto-unlock Unlock / Lock timing | At opening / At closing | At opening / At closing, or 5, 10, 15, 30, 45, 60, 90 or 120 minutes before or after |
| Auto-unlock on public holidays | Ignore holidays | Follow the facility's holiday hours / Stay locked all day / Ignore holidays |
| Access authorisation (per door) | Access Policies | Lists matching policies and permits blockAllAccess |
| Geofence (per door) | Inherit from facility | Inherit from facility / Override for this door / Disable geofence for this door |
| Online threshold | — | Controller counts as online with a heartbeat in the last 5 minutes |
Door icons
| Icon | Intended use |
|---|---|
| Door | Standard single door (default) |
| Sliding door | Sliding / automatic door |
| Double door | Double / French door |
| Garage | Garage / roller door |
| Boom gate | Boom gate / barrier arm |
| Pedestrian | Staff / pedestrian walk-in entry |
| Security | Restricted / security door |
| Office | Office / staff-only room |
| Delivery | Loading dock / delivery bay |
| Locker | Locker / storage |
Geofence settings
| Setting | Default | Range |
|---|---|---|
| Geofence enabled | On (for a new facility configuration) | On / Off |
| Radius | 200 m | 50–5000 m (10 m steps; presets 50 / 200 / 500 / 1000 m) |
| Accuracy buffer | 25 m | — |
| Require GPS accuracy better than | 100 m | — |
| Allowance formula | — | radius + reported GPS accuracy + accuracy buffer |
Access grace periods
Under Settings → Access Time Windows:
| Setting | Options |
|---|---|
| Allow early access | Off / 5 / 10 / 15 / 30 minutes |
| Allow access after end | Off / 5 / 10 / 15 / 30 minutes |
App lock settings
| Setting | Default | Options |
|---|---|---|
| Enforce app lock for this facility | Off | On / Off |
| Grace period before re-prompting | 5 minutes | Always prompt / 1 min / 5 min / 15 min / 30 min / 1 hour |
| Multi-facility behaviour | — | Enforced if any linked facility enforces; shortest grace period among enforcing facilities wins |
Support contacts
| Mode | Behaviour |
|---|---|
| Smart (default) | Shown automatically when a door is offline or there is limited information in the UI |
| Always show | Always on the app dashboard |
| Never show | Never shown |
App messages
| Field | Limit / options |
|---|---|
| Notification type | Information / Notice / Urgent |
| Title | 120 characters |
| Body | 2000 characters (soft warning at 500) |
| Link URL | http(s) only, 2000 characters |
| Link label | 80 characters, default "More info" |
| Schedule | Optional Starts at / Ends at |
| Placeholders (automated rules) | {firstName}, {lastName} |
| Automated rule match fields | Membership status / Person type / Tag (tags match synced + custom, case-insensitive) / Door visibility |
| Rule priority | First enabled matching rule wins (list order) |
User fields
| Field | Limit / notes |
|---|---|
| First / last name | 80 characters each |
| Mobile phone / email | At least one required (used for OTP sign-in); phones normalised to international format |
| Tags | 80 characters per tag; synced tags overwritten by sync, custom tags admin-owned |
| Notes | 2000 characters |
| Access enabled | Default on; off = all unlocks denied |
| Grants | Facility-wide, doors list, scopes list, optional operating hours |
| Access Policies | User can be covered by one or more named policies; list/effective access uses Access granted via policy |
| Access Time Windows | Administrator-owned editable windows plus read-only source-owned windows; separate from policy schedules |
Sources, statuses, and other enumerations
| Enumeration | Values |
|---|---|
| User source | Manually added / External Integration / CCTV-Computer Vision / Performance Hub staff |
| User tiles | All users / Has access / No access / Not synced |
| Invitation status | Not invited / Invited / Send failed |
| Invitation recipients | Only users with door access / All eligible synced users |
| Invitation rule fields | Membership status / Person type / Tag / Sync source / Integration; operators is any of / is not any of |
| Access Logs views | Door events / No visit recorded |
| App adoption | Active (has used the app) / Not yet active |
| Require identifier (sync) | Email OR phone (default) / Email required / Phone required / Both required |
| Sync log outcomes | Added / Updated / Skipped / Disabled / Processed / Stale snapshot |
| Window states | Active / Upcoming / Expired / Stale / Unmapped |
| Membership status labels | Active, Current, Expired, On hold, Cancelled, Pending (plus any values from your source system) |
| Access Scope templates | Custom, Main entrances, Staff-only, Restricted area, 24/7 access, Business hours, Vehicle access, Service entries |
| Auto-message templates | No door access, Expired membership, Payment overdue, Account on hold / suspended, Welcome (new member), Trial / prospect, Document / waiver required |
Sync skip reasons
| Reason shown in sync log | Meaning |
|---|---|
| Integration sync is turned off for this facility | The source's master toggle is off |
| This integration is turned off in sync settings | The specific integration is opted out |
| No phone or email on the record (a phone or email is required to log in) | The record fails the Require identifier rule |
| Record is decoupled and managed manually | Track source updates is off for this user |
| No facility on the source record | The source record isn't linked to this facility |
| No matching user record | The change referenced a person with no row here |
Operational limits
| Limit | Value |
|---|---|
| CSV import | 200 users per import |
| Bulk invitations | Sent in batches of 50 |
| Bulk delete preview sample | First 50 users shown |
| Access Logs query | Up to 500 most recent events per window |
| Access event retention | ~13 months, then removed automatically |
| Admin unlock command validity | 30 seconds (the command expires if not delivered) |
| Door controller heartbeat | Every ~30 seconds; offline after 5 minutes silence |
| Sign-in code requests | 5 per hour per phone/email (security limit, cannot be lifted) |
| App sign-out propagation | Revoked immediately; up to 15 minutes for an active session to fully end |
| Saving door settings | Reloads the controller — typically 10–15 seconds |
| No visit recorded retention | ~13 months |
| Access Time Window mappings | 50 per integration |
| Access Time Windows per container | 50 |
| One-time window span | 90 days |
| Weekly blocks | 8 per weekday |
| Window/source ID, label, scope key | 120 characters |
| Access Policies per facility | 100 |
| Total policy windows | 500 |
| Access Policy name/ID | 120 characters |
| Access Policy description | 500 characters |
| Access Policy config | 300 KiB UTF-8 |