Skip to main content

🏢 Multi-Workspace Management

Agencies can create separate workspaces for each client, keeping data fully isolated while managing everything from a single account. Each workspace is a complete, self-contained environment with its own social accounts, content, analytics, and team.


Workspace Model

Every workspace in UniPulse is defined by the following:

FieldDescription
nameThe workspace display name (e.g., "Acme Corp")
slugUnique URL-friendly identifier (e.g., acme-corp)
logoUrlWorkspace logo — shown in the sidebar and reports
primaryColorBrand color used throughout the workspace UI
planThe subscription plan attached to this workspace (see Pricing & Plans)
customDomainOptional custom domain (e.g., social.acmecorp.com) — requires White Label
isPersonaltrue for individual workspaces, false for agency/client workspaces
defaultLanguageDefault language for AI-generated content and replies
settingsJSON field for workspace-level configuration overrides

Creating a Workspace

  1. Click the workspace switcher in the top-left corner of the navigation
  2. Click New Workspace
  3. Enter the client's brand name, upload their logo, and set the primary color
  4. Choose a subscription plan (or use your agency plan's workspace allocation)
  5. Invite team members with appropriate Roles

API: POST /workspaces — programmatically create workspaces for automation.


Switching Between Workspaces

Use the workspace switcher dropdown to jump between client workspaces instantly. Your role and permissions may differ per workspace — you might be an Owner on one and an Editor on another.


Workspace Isolation

Each workspace is a fully isolated environment. Nothing is shared between workspaces:

ResourceIsolated Per Workspace
Social accountsEach workspace connects its own Facebook, Instagram, TikTok accounts
Content & postsScheduled posts, drafts, and published content
Analytics dataAll metrics, reports, and dashboards
Brand voice settingsAI tone, style, and personality configuration
Audience dataAudience nodes, interactions, segments, and tags
ConversationsICE threads, messages, bot config, and escalation rules
BillingOptional per-workspace billing and usage tracking
Team membersEach workspace has its own member list and role assignments
Behind the Scenes

Workspace isolation is enforced at the data layer. Every database query is scoped to the current workspace, and cross-workspace data access is architecturally impossible. This is critical for agency clients who need assurance that their data is private.


Team Management

Each workspace maintains its own team via WorkspaceMember records:

FieldDescription
roleOWNER, ADMIN, EDITOR, VIEWER, or CLIENT (see Roles & Permissions)

Invite members with POST /:workspaceId/members or from Settings > Team in the UI. Members receive a WorkspaceInvitation with:

FieldDescription
emailInvitee's email address
roleThe role they'll receive upon accepting
tokenUnique invitation token
invitedByWho sent the invitation
expiresAtInvitation expiration timestamp
acceptedAtWhen the invitation was accepted (null if pending)

Agency Dashboard

The agency dashboard provides a bird's-eye view across all workspaces:

  • Client overview — Key metrics per workspace at a glance
  • Activity feed — Recent actions across all workspaces
  • Usage tracking — Posts scheduled, AI credits used, and plan limits per workspace
  • Quick navigation — Jump into any workspace with one click
  • Aggregate reporting — Roll up metrics across clients for agency-level insights

API Endpoints

MethodEndpointPurpose
POST/workspacesCreate a new workspace
GET/workspacesList all workspaces you have access to
GET/workspaces/:idGet workspace details
PUT/workspaces/:idUpdate workspace settings
DELETE/workspaces/:idDelete a workspace (Owner only)
GET/workspaces/:id/membersList workspace members
POST/workspaces/:id/membersInvite a new member
PUT/workspaces/:id/members/:userIdUpdate a member's role
DELETE/workspaces/:id/members/:userIdRemove a member