Skip to main content

Workspaces

Workspaces allow you to organize your messaging and analytics into separate environments within a single organization. Each workspace maintains its own configuration, user data, campaigns, and analytics.

Managing Workspaces​

Navigate to Settings to view and manage your workspaces.

Switching Workspaces​

The workspace picker at the top of the sidebar sets which workspace you are working in. The choice is remembered per browser profile, not per tab: every tab you open in that browser starts in the workspace you last selected, and switching in one tab switches the others when they next load. Use separate browser profiles if you need to work in two workspaces side by side.

Creating a Workspace​

  1. Go to Settings
  2. Click Create Workspace
  3. Enter a Name and optional Description
  4. Click Create

Deleting a Workspace​

Admins only - irreversible

Deleting a workspace permanently removes all its data: settings, user profiles, events, campaigns, canvases, templates, API keys, impressions, and analytics. Most data is removed immediately; analytics events are purged asynchronously and may take a little while to fully disappear. This action cannot be undone.

Only users with the admin role can see or use the delete button.

  1. In the workspace list, click the Delete button next to the workspace (only visible to admins).
  2. A confirmation dialog opens showing the workspace name.
  3. Type the workspace name into the input field - the name must match exactly (case-sensitive) before the red Permanently delete button enables.
  4. Click Permanently delete.
  5. You'll see a completion summary showing how many records were deleted and confirming that analytics-event cleanup was scheduled. If the summary reports any failures, contact support - some analytics data may not have been fully purged yet.
Soft delete (archiving) is separate

The old "hide workspace" flow that simply flipped a workspace to inactive still exists via the API for non-destructive archiving. The UI button described above is the destructive hard-delete. There's no undo - if you only want to archive, contact support instead.

What gets deleted​

  • Workspace settings and engagement data - campaigns, canvases, templates, API keys, message engagement records, and the workspace configuration itself are deleted immediately.
  • User profiles - all profiles, devices, aliases, and list subscriptions belonging to the workspace are deleted immediately.
  • Analytics events - deletion is scheduled and completes asynchronously; events can take a few minutes to be fully purged.

Every purge is recorded in the audit log with per-category deletion counts. You can review past purges under Settings → Audit Log by filtering on the workspace_hard_deleted action.

General Settings​

Configure basic workspace-level defaults:

SettingDescription
Workspace NameDisplay name for this workspace
TimezoneThe workspace's local timezone, used to draw time boundaries for scheduling and analytics. Type in the field to search by city, country or UTC offset (for example Israel, Jeru or +3); the stored value is the IANA name, such as Asia/Jerusalem
From EmailFallback default sender address. Email sender identities - and per-campaign / per-variant senders - are managed under Email Configuration.
From NameFallback default sender display name (see Email Configuration for per-sender names).
Timezone & stored data

All data is stored in UTC. The workspace timezone doesn't change how timestamps are saved - it controls how time boundaries are computed at read time: what counts as "today", where day/week/month buckets begin, retention cohort edges, and quiet-hour windows. Changing the timezone re-aligns your reports to a new local day without rewriting any stored data.

Leave it unset and the workspace uses your organization's timezone, and UTC only if that is unset too. So an organization-wide setting is enough unless a particular workspace runs on different hours.

Every date and time the app shows - send times, recipient activity, event and contact history, journey runs, "last updated" labels - is in the workspace timezone, whoever is looking and wherever their browser is. Where a time could be misread, the zone is named beside it, for example "Sent 14 Oct 2026, 09:10 (Asia/Jerusalem)". A scheduled send is shown in the zone it was scheduled in. A new timezone applies as soon as you save it.

Default country for phone numbers​

The country used to read a phone number written without a country code - for example 0501234567 with Israel becomes +972501234567. Numbers that start with + (or the 00 international prefix) always keep their own country.

It is empty by default and is never filled in for you - not from the timezone, not from anything else. Without it, a number with no country code is not converted: it is saved on the contact as an unverified number, shown on the contact page as Invalid - not used for messages, and never used for sending, suppression, matching contacts or segment phone filters.

When you set or change the country, Joryio re-checks this workspace's unverified numbers in the background: each one that is valid in the new country becomes the contact's phone (only when the contact has no phone yet). Large workspaces are processed in batches, so this can take a few minutes.

Before any phone changes, opt-outs saved under the old form of a number are copied to the converted number, so nobody who opted out becomes reachable. Changing the country again, or clearing it, re-checks the numbers an earlier country converted (as long as nobody has edited the phone since): each one is read again with the new country, or goes back to unverified.

Reporting currency​

Settings -> General -> Reporting currency is the one currency the workspace's revenue is reported in. Revenue from all stores in this workspace is converted into this currency at the exchange rate of each order's date (European Central Bank daily rates). It is per workspace, so two stores - or one store in two countries - can each report in their own currency. Changing it recalculates every past order in the background; reports switch over only once all of them are done. See Multi-Currency Reporting for the details.

Content classification​

Joryio labels every template, campaign message and journey message by what it is - tone, offer, call to action, length, personalization, imagery and topic - and joins the labels to results in the Content performance report. This is on by default.

Only the template as you wrote it is read, with placeholders left in place; no rendered message and no recipient data is involved. Labelling runs on Joryio's own AI at Joryio's cost, not against your AI budget.

To switch it off for a workspace, open Settings → General → Content classification and turn off Label my content. From that moment nothing of the workspace is read for the report and no new labels are written; the report keeps showing what was labelled before and says that labelling is off.

Quiet Time​

Quiet time settings prevent messages from being sent during specific times or on specific dates. This helps you respect your users' time and comply with messaging regulations. The page has two tabs: Schedule and Holidays.

Global options​

These apply across every channel:

  • Timezone - evaluate quiet windows in the recipient's local time or your organization time.
  • When a message hits a quiet window - the org-wide default behavior: delay to the next open slot or skip (drop the message). Individual channels can override this (see below).

Per-channel quiet windows​

Each channel owns its own quiet windows: Email, Push, SMS, WhatsApp, Webhook. (In-app is intentionally excluded - in-app messages only appear when the user opens the app, so send-time quiet hours don't apply.) Toggle a channel on, then define its windows in one of two views:

  • Rules view - add one or more windows, each with selected days (Sun–Sat) and a time range (e.g. 22:00–08:00, which wraps past midnight) or All day. Presets: Weeknights, Weekends, Custom. The page flags overlapping rules and days no rule covers.
  • Grid view - a 7×24 grid you drag across to block specific hour cells. Switching from Rules to Grid pre-paints the grid from your rules.

Per-channel behavior - choose what happens to a message that hits this channel's window:

  • Delay - always defer it to the end of the window (even if the global behavior is Drop)
  • Drop - always skip it (even if the global behavior is Delay)
  • Use global - follow the org-wide behavior above

Holidays​

On the Holidays tab, add one-off dates that override every channel's weekly schedule - useful for company closures or public holidays. Add dates manually (with an optional label), or import a country preset (United States, United Kingdom, Germany, Israel, India, Japan). An "Upcoming" panel shows the next blocked dates.

Transactional bypass​

The Allow transactional bypass toggle lets critical messages send during quiet times. A campaign or journey message counts as critical when its audience is set to Everyone, including unsubscribed (the transactional setting) or when Ignore touching rules is turned on for it. Every other message respects the channel rules - turning the toggle off makes critical messages respect them too.

Touching Rules (Frequency Capping)​

Touching rules limit how many messages a user receives within a time window, preventing message fatigue. Each channel - and the cross-channel ceiling - can hold up to four rules, and all of them must pass for a message to be sent (e.g. "10 push/day and 20 push/week").

Rules and tags​

Each rule is a max, a window (day / week / month), and optional tags:

  • A rule with no tags applies to every message on that channel.
  • A tagged rule only counts messages that carry one of its tags (a message inherits its campaign's or journey's tags). So "3 push/day for #promo and 10 push/day overall" is two meaningful caps, not a duplicate.

The page flags redundant rules (two rules with the same window and tag scope) so you can differentiate or remove one.

Cross-channel ceiling​

A total cap across ALL channels combined (also up to four rules). When enabled, both the per-channel rules and the cross-channel ceiling must pass.

Per-channel notes​

ChannelNotes
Email / Push / SMS / WhatsApp / WebhookCapped at send time; counts messages actually sent.
In-AppCapped by impressions (counted when the message is displayed), enforced when the SDK fetches eligible messages.

Caps apply to both campaigns and journeys (a journey skips the send and continues when a user is over the cap).

Additional options​

  • Count Failed Deliveries - include failed delivery attempts in the counts.
  • Apply to Transactional Messages - shown but not yet enforced (there's no transactional-message flag in the pipeline yet).
Campaign / journey overrides

Individual campaigns and journey messages can bypass touching rules with the Ignore touching rules option - use it only for critical or time-sensitive messages (security alerts, receipts, legal notices).

Workspace Isolation​

Each workspace operates independently:

  • Users - User profiles and attributes are scoped to the workspace
  • Campaigns - Email, push, SMS, WhatsApp, and in-app campaigns are workspace-specific
  • Segments - User segments are defined per workspace
  • Analytics - All analytics and dashboards reflect workspace-level data
  • Settings - Provider configurations, touching rules, and quiet time are per-workspace

This isolation allows you to use separate workspaces for different products, brands, or environments (e.g., staging vs. production).