Skip to main content

Settings

πŸ“Έ Settings Hub

Central settings page showing eight management cards, each with a Manage action: Organization, API Keys, Stripe Payments, Booking Access Retry, Cancellation Policy, Subscriber Scheduler, Email Branding, and Employee Booking. Route: /settings

Screenshot

πŸ“Έ Organization Detail

The "Your Organization" page shows the organization header (logo, name, type tag, Active badge, and Edit Organization button) with cards for Contact Information (Email, Phone, Website, Billing Email) and Location (Address, City, State, Country, Postal Code, Timezone). Route: /settings/organization

Screenshot

Scrolling down the organization page: the Organization Details card shows Slug, Type, Number of Spaces, and Your Role, and the Timestamps card shows Created At and Last Updated.

πŸ“Έ Edit Organization β€” Step 1: Organization Details

Edit organization Name, Slug, Email, Phone, and Website fields. 3-step wizard. Route: /settings/organization/edit

Screenshot

πŸ“Έ Edit Organization β€” Step 2: Location and Timezone

Edit organization Address, City, State/Province, Country, Postal Code, and Timezone. Step 2 of 3.

Screenshot

πŸ“Έ Edit Organization β€” Step 3: Additional Details

Upload or replace Organization Logo (PNG/JPG). Update Organization button to save all changes. Step 3 of 3.

Screenshot

πŸ“Έ API Keys β€” Empty State

API Keys list page showing empty state with No API Keys Found message and Create API Key button. Route: /settings/api-keys

Screenshot

πŸ“Έ API Keys List

API Keys list showing columns: Name, Type (Live/Test badge), Scopes count, Expires, Rate Limits (per-minute and per-day), and Status (Active), with a View action per key and the Create API Key button in the top right. Route: /settings/api-keys

Screenshot

πŸ“Έ API Keys β€” Row Actions

Each key's overflow menu offers Edit API Key and Delete API Key, the latter styled in red as a destructive action.

Screenshot

πŸ“Έ Create API Key

Create API Key form with Key Details (Name, Key Type β€” Live or Test, Description), Permissions & Scopes, and Expiration & Security (Expiration date, Allowed IP Addresses). Permissions & Scopes shows a Select All toggle over the full 51-permission catalog grouped the same way as Roles β€” Bookings, Meeting spaces, and on through every resource β€” each group listing its individual scopes (e.g., Read bookings / Update bookings / Delete bookings) with a live ratio of how many in that group are selected; scopes marked Destructive are called out inline. Route: /settings/api-keys/create

Screenshot

πŸ“Έ Create API Key β€” New Key Modal

Modal after creating an API key showing the full key value with security warning: key is shown only once and must be copied immediately. Includes Copy API Key button.

Screenshot

πŸ“Έ API Key Detail

Detail view of an API key showing Status (Active, Test), Details (Name, Created At, Expires At, Last Used), Permissions and Scopes (13 scopes listed as tags), and Rate Limits (100/min, 10000/day). Route: /settings/api-keys/:id

Screenshot

πŸ“Έ Edit API Key

Edit API Key pre-fills the key's current Name, Key Type, Description, and scope selections. Permissions and Scopes uses the same Select All / per-group checklist as creation, showing how many of that group's scopes are selected (e.g., Bookings 5/5, Meeting spaces 4/4), with every checked scope also echoed as a removable chip in a Selected Scopes list beneath β€” 51 scopes here reflects every permission the organization has. Expiration date and Allowed IP Addresses can also be changed. Cancel discards; Update API key commits the changes.

Screenshot

πŸ“Έ Delete API Key Confirmation

Delete API Key from the overflow menu opens a Caution modal naming the key and warning that the action cannot be undone. Close cancels, and Delete removes the key β€” any integration still using it will immediately lose access.

Screenshot

πŸ“Έ Stripe Payment Configuration

Configure how the organization accepts payments through Stripe. The Payment Status summary shows Stripe Enabled, Currency (USD), Payment Mode (Platform Collection), and Platform Fee (6% global), with Platform account and Live mode badges. Stripe Configuration includes the Enable Stripe Payments toggle, Test Mode toggle, Currency selector, and Payment Mode β€” Platform Collection (Manual): funds collected by ZenSpace, then transferred to the organization β€” with Reset and Save changes actions. Route: /settings/stripe

Screenshot

πŸ“Έ Stripe Payment Configuration β€” Edit Mode

Edit Stripe settings: Enable/disable Stripe Payments toggle, Test Mode toggle, Currency selector, Payment Mode (Platform Collection vs Direct to Account), and Save Configuration button.

Screenshot

πŸ“Έ Booking Access Retry Policy

Controls how often ZenEdge retries when it fails to generate access credentials for a booking, and what happens if retries are exhausted; applies to all meeting spaces that inherit the organization default. Shows a Current Policy Summary (e.g. retry every 2 minutes for up to 10 minutes past booking start, then cancel booking and refund 50%) and a note that changes apply to new bookings β€” existing bookings keep the policy in effect when they were created. Options: Enable retries toggle (when off, a single failure triggers the final-failure action immediately), Retry every (Every 2 minutes β€” Aggressive, Every 5 minutes β€” Balanced default, Every 10 minutes β€” Gentle, or Custom interval), and Keep retrying for N minutes past booking start (clamped to the booking end time). If retries fail, three fallback actions are available: Do nothing (stop retrying; admin resolves manually), Cancel booking (automatic, no refund), or Cancel booking + refund with a refund percentage (0–100, applied against the booking's paid amount). An optional toggle sends a "credentials pending" email (and optional SMS) to the organizer while retrying, with editable subject and body templates supporting placeholders like {{organizer_name}}, {{space_name}}, and {{start_time}}. The Snapshot per booking badge confirms the policy is snapshotted for each booking at creation time. Route: /settings/booking-access-retry-policy

The policy can be applied at two levels. Organization level: Settings β†’ Booking Access Retry sets the default that every meeting space inherits. Meeting-space level: the Policies tab of an individual meeting space carries a Using organization default toggle β€” switching it off lets that space override the organization default with its own retry interval, grace window, and final-failure action.

πŸ“Έ Booking Access Retry Policy β€” Cancel Booking (No Refund)

With Cancel booking selected as the final-failure action, the Current Policy Summary reads: retry every 5 minutes for up to 10 minutes past booking start, and if still failing, cancel booking (no refund).

Screenshot

πŸ“Έ Booking Access Retry Policy β€” Cancel Booking + Refund

Choosing Cancel booking + refund reveals a Refund percentage field (0–100, applied against the booking’s paid amount). The summary then reads: cancel booking and refund 100%.

Screenshot

πŸ“Έ Booking Access Retry Policy β€” Do Nothing

Do nothing stops retrying and leaves the booking in place for an admin to resolve manually; the summary reads: stop retrying (admin resolves manually).

Screenshot

πŸ“Έ Cancellation Policy

Org-wide default cancellation behavior for every meeting space; individual spaces can override it. Shows the current policy summary (e.g. Late cancellation fee β€” cancel anytime β€” within 2h of start, fee is 50% of total) and a note that changes apply to new cancellations immediately, while per-space overrides ignore this default until switched back to inherit. Policy types: No policy (free cancellation, always full refund), Cancel before X hours (full refund before the deadline; after it, cancellation allowed with no refund), Late cancellation fee (allowed at any time; cancellations inside the window incur a fee), and Not allowed (organizer cannot cancel; admins can still force-cancel with the override option). Route: /settings/cancellation-policy

Screenshot

πŸ“Έ Cancellation Policy β€” Cancel Before X Hours

Selecting Cancel before X hours updates the Current Policy Summary to state the deadline in hours (e.g., must cancel at least 24h before start, no refund after). Choosing this type reveals a Window card beneath β€” see the next figure.

Screenshot

πŸ“Έ Cancellation Policy β€” Window & Fee

The Window card sets how many hours before the booking start the deadline kicks in, plus a Treat no-shows as inside the window toggle (an unattended booking is charged the same as a last-minute cancellation). Fee inside window is either a Flat amount or a Percentage of total (0–100, applied against the booking total). The Org-wide default badge confirms the policy applies to all spaces with "Use organization policy" turned on.

Screenshot

πŸ“Έ Cancellation Policy β€” Not Allowed

Selecting Not allowed updates the Current Policy Summary to state that cancellation is strictly prohibited and requires admin override. A warning banner reiterates that bookings created under this policy cannot be cancelled by the organizer, though admins can still force-cancel from the booking detail page using a Bypass policy option.

Screenshot

πŸ“Έ Subscriber Scheduler (Scheduled Jobs)

Recurring report subscriptions: pick a job type, scope, cadence, recipients, and headline format. The list shows Name, Type, Scope, Cadence, Recipients, Format, Status, and Last registered, with Search and a New scheduled job action. A populated job (e.g., a daily Booking Report scoped to Org, delivered as PDF to one recipient at 09:00) shows Active with a "pending registration" note beneath while the schedule's first run is still being set up server-side; an empty state otherwise prompts creating the first job to deliver recurring reports to ops and finance via email. Route: /settings/scheduled-jobs

Screenshot

πŸ“Έ Subscriber Scheduler List β€” Empty State

Before any job exists the table shows a No scheduled reports yet empty state, with New scheduled job and Refresh actions.

Screenshot

πŸ“Έ New Scheduled Job β€” Type & Scope (Organization)

New scheduled job opens a four-step wizard β€” Type & Scope, Schedule, Report config, Delivery. Job type is currently Booking Report, a per-booking report for a date range that always sends CSV + XLSX + PDF as email attachments and download links, with output_format on the row picking the headline format for the subject line. Scope picks the level the report covers: Organization (all groups and spaces in the org), Space group (restricted to a specific group), or Meeting space (restricted to a single space) β€” the backend re-registers the recurrence if scope changes. Route: /settings/scheduled-jobs/create

Screenshot

πŸ“Έ New Scheduled Job β€” Type & Scope (Space Group)

Choosing Space group reveals a Space group search field; the report then covers every meeting space inside that group.

Screenshot

πŸ“Έ New Scheduled Job β€” Type & Scope (Meeting Space)

Choosing Meeting space reveals a search field for a single space; the report is restricted to that one space only.

Screenshot

πŸ“Έ New Scheduled Job β€” Schedule (Daily)

Step 2 sets Cadence, Time of day, and Timezone (inherited from the organization, with Daylight Saving honored automatically), plus Start date and an optional End date β€” Run indefinitely skips the end date and lets the backend auto-extend the recurrence. A Preview panel computes the next five fire times locally based on the current selections. Daily fires once a day at the chosen time.

Screenshot

πŸ“Έ New Scheduled Job β€” Schedule (Weekly)

Weekly adds a Days of week selector (Sun–Sat); a tip suggests picking weekdays (Mon–Fri) for business reports. If no day is selected, the preview reports that no fires match the cadence in the next year.

Screenshot

πŸ“Έ New Scheduled Job β€” Schedule (Monthly)

Monthly adds a Day of month field, accepting 1–28 only β€” day 29, 30, or 31 requires a custom cron expression instead. The preview then lists the next five monthly fire dates, correctly carrying across month boundaries and DST changes (PDT to PST).

Screenshot

πŸ“Έ New Scheduled Job β€” Schedule (Custom Cron)

Custom (cron) replaces the cadence controls with a raw 5-field cron expression (minute hour day-of-month month day-of-week). The local preview is not evaluated for custom cron; it instead shows the cron string alongside the selected timezone.

Screenshot

πŸ“Έ New Scheduled Job β€” Report Config

Step 3 is driven by the selected job type's configuration schema. Period sets the date window the report covers, evaluated at fire time in the schedule timezone β€” options include Previous Day (yesterday only, useful for daily morning recaps). Statuses filters which booking statuses are included (Pending, Confirmed, Checked In, Checked Out, Cancelled, Completed, No Show); leaving Statuses empty includes every status. Include Cancelled controls whether cancelled bookings appear when Statuses is left empty β€” it's ignored once Statuses is non-empty, since the explicit filter wins.

Screenshot

πŸ“Έ New Scheduled Job β€” Report Config (Statuses Selected)

With specific statuses picked (e.g., Confirmed, Checked In, Cancelled, Completed), only bookings in those statuses are included in the report regardless of the Include Cancelled toggle.

Screenshot

πŸ“Έ New Scheduled Job β€” Delivery

Step 4 sets Recipients (type an email and press Enter to add, up to 50), Headline format β€” XLSX, CSV, PDF, or JSON where supported β€” Job name (required, identifies the job in the scheduled-jobs list and run history), and an optional Description noting why the job exists and who relies on it. Active β€” fires on schedule can be toggled off to pause sending without deleting the job. A summary panel recaps Job type, Scope, Cadence, Window, and Delivery before saving; the server validates the final payload.

Screenshot

πŸ“Έ New Scheduled Job β€” Delivery (Recipient Added)

Adding a recipient email shows it as a removable chip beneath the input, with the recipient count updating (e.g., 1/50).

Screenshot

πŸ“Έ New Scheduled Job β€” Delivery (PDF Format)

Selecting a different Headline format (e.g., PDF) updates the summary panel's Delivery line to reflect the new format.

Screenshot

πŸ“Έ Subscriber Scheduler List β€” Populated

Once created, the job appears in the list with its Job name, Job type, Scope, Schedule, Delivery (format badge, recipient count, and recipient email), and an Active toggle with a relative registration time.

Screenshot

πŸ“Έ Subscriber Scheduler β€” Row Actions

Each job's overflow menu offers Run now, Edit, Pause, and Delete, the latter styled in red as a destructive action.

Screenshot

πŸ“Έ Edit Scheduled Job β€” Type & Scope

Edit Scheduled Job reopens the same four-step wizard pre-filled with the job's current values, starting with Job type and Scope. Route: /settings/scheduled-jobs/:id/edit

Screenshot

πŸ“Έ Edit Scheduled Job β€” Schedule

Step 2 shows the job's existing Cadence, Time of day, Timezone, and Start/End date settings, editable in place with the same live preview of upcoming fires.

Screenshot

πŸ“Έ Edit Scheduled Job β€” Report Config

Step 3 shows the job's existing Period, Statuses, and Include Cancelled settings, editable the same way as on creation.

Screenshot

πŸ“Έ Edit Scheduled Job β€” Delivery

Step 4 shows the job's existing Recipients, Headline format, Job name, Description, and Active toggle, editable the same way as on creation, with the same review summary before saving.

Screenshot

πŸ“Έ Scheduled Job Detail

Opening a job from the list shows its full record. A header card repeats the name with an Active/Paused badge, the job type, scope, timezone, and headline format, alongside Run now, Pause/Resume, Edit, and Delete actions. Tiles beneath report Cadence, Window (start date through Indefinite or an end date), Recipients count, and Last registered with its relative time. Upcoming fires lists the next five occurrences computed from cadence and timezone; Delivery repeats the Headline format and the recipient list; Configuration shows the handler-specific options for this job type (e.g., the Statuses filter for a Booking Report); and Audit & scheduler records who created and last updated the job with timestamps, plus the internal Schedule ID and Recurrence ID used for ops debugging. Route: /settings/scheduled-jobs/:id

Screenshot

πŸ“Έ Scheduled Job Detail β€” Run Now Confirmation

Run now opens a Caution modal warning that this generates the report and emails it to every recipient immediately, without affecting the regular schedule. Close cancels; Run now confirms.

Screenshot

πŸ“Έ Subscriber Scheduler β€” Paused Job & Row Actions

Pausing a job (from the detail page or the row's overflow menu) flips its Status toggle off and shows Paused instead of Active on the list; scheduled fires stop until it's resumed. The overflow menu then offers Run now, Edit, Resume, and Delete in place of Pause.

Screenshot

πŸ“Έ Subscriber Scheduler β€” Delete Confirmation

Delete opens a Caution modal naming the job and warning that deleting cancels the recurrence and cannot be recovered. Close cancels; Delete removes the job.

Screenshot

πŸ“Έ Booking Report Email

When a Booking Report job fires, ZenSpace emails every recipient a summary: the organization, date, and timezone the report covers, headline metrics (Bookings, Gross, Discount Given, Charged, Refunded, Net Collected, Cancellation Fees, Currency, and Period), Download buttons for each supported format with the headline format highlighted as primary, direct download URLs for XLSX/CSV/PDF, and the three files attached directly to the email.

Screenshot

πŸ“Έ Booking Report PDF β€” Page 1

The PDF opens with the same headline metrics as the email, followed by a per-booking table: Booking ID, Organizer, Organizer Email, Meeting Space, Group, Start, End, Hours, Status, Payment, Total, Voucher, Cxl Fee, Refunded, Net, Currency, and Created.

Screenshot

πŸ“Έ Booking Report PDF β€” Page 2

The table continues onto further pages as needed, with the same columns repeated and a Page X of Y footer alongside the report's generation timestamp.

Screenshot

πŸ“Έ Email Branding β€” Branding

The Email Branding page controls how booking emails look for every group in the organization (groups can override these values). The Branding card sets the Logo (PNG or JPG, about 200 KB, shown 32 px high in the header), Header colour, Accent strip (thin strip under the header), Buttons and links colour, Host label, and Host name. Each field shows a Set on Organization badge with a Reset link, and the Preview β€” Approximate panel on the right updates as you type using sample booking data. Use Save changes to apply, or Reset all to restore defaults. Route: /settings/email-branding

Email Branding β€” Group Level Override

Screenshot

πŸ“Έ Email Branding β€” Wording, Buttons and Booking Details

Wording sets the Confirmation headline (confirmation email only) and the Space word (e.g. Pod, Room, Desk), which also sets the default row labels. Buttons controls which actions appear at the bottom of the email β€” Cancel booking and Make another booking β€” each set to Default, On, or Off. Booking Details shows or hides, and renames, the four rows in the details table: Space, When, Event, and Location.

πŸ“· Email Branding β€” Notes, Contact & Footer

Notes adds an optional Arrival note and Extra note to the email in plain text (line breaks are kept), each set to Default, On, or Off. Use Insert to add placeholders such as {space_name}, {space_word}, {space_word_lower}, {date}, {start_time}, {end_time}, {timezone}, {organization_name}, and {group_name}. Contact & Footer sets the Support email where replies go and an optional Footer tagline shown at the very bottom of the email. WiFi details, payment amounts, and the calendar invite are set by the system and can’t be customised.

πŸ“· Email Branding β€” Group Level Override

Email Branding can be set at two levels. Settings β†’ Email Branding sets the organization-wide branding, which applies to all groups. To customise emails for one group only, open the group (Groups β†’ select group) and click Email branding in the top-right. Values set on the group override the organization’s branding for that group only; every other group keeps using the organization settings. On the group page, each field shows a From Organization badge when it is inherited and a Set on this Group badge when it has been overridden. Empty fields inherit the organization value, toggles offer Inherit / On / Off, and Reset (or Reset all) returns a field to the organization value. Route: /groups/{group}/email-branding

πŸ“· Employee Booking

Employee Booking lets office employees book rooms for free after verifying with a code sent to their work email, while guests always pay. When employee booking is On, employees can make complimentary bookings and guests make paid bookings at the standard rate. The Company card sets the default for every location and room set to Same as above: the Enable employee booking toggle (Off by default) and Daily limit per employee, the maximum free bookings per employee per day (1–100; leave empty for no limit), applied with Save. Locations & Rooms lists each location and its rooms, with a search field and Collapse all; each row can be set to Same as above, On, or Off, and changes save as soon as an option is picked. Same as above follows the level above (a room follows its location, a location follows the company), and the most specific setting wins: a room beats its location, and a location beats the company. Off on a room means guests only. Each row shows an Employees: Free badge with where the setting comes from (e.g. from Location), and a location shows how many of its rooms are free (e.g. 2/2 free).

Screenshot