Membership
org_members is authorization truth in Karis. Each user may belong to multiple Organizations; membership records determine what campaigns, Mailboxes, and billing data they can access.
A user's default workspace (users.org_id) is the current Organization context only — it does not replace membership checks for cross-workspace access.
Roles and authorization
Role-based authorization gates sensitive actions: connecting Mailboxes, changing Campaign Default Mailboxes, approving sends, managing billing, and inviting members. Row-level security in PostgreSQL enforces tenant isolation per Organization.
API keys and encrypted provider credentials are scoped to the Organization that created them.
Invitations
Send email-bound invitations from Settings. Invitees accept through a dedicated invite link, sign in with the matching email, and receive Organization membership. Invites remain reachable before the invitee has a session — the page prompts sign-in then validates the token.
Workspace switching
Switch active Organizations from the workspace selector when you belong to more than one. Campaign data, Credits, and Mailboxes always reflect the selected Organization. Personal workspaces remain valid memberships during account repair — do not remove them unless intentionally consolidating accounts.
