vicket
Get started
Concepts / NÂș 02

Organizations & sites

An organization is the top-level tenant. A site is a branded customer-facing surface inside that org. Every other resource (tickets, statuses, priorities, articles, FAQs, workflows) is scoped to one or the other.

Organization

The org owns billing, members, RBAC, and the resource catalog. Create one per company. Agencies running support for multiple clients create one org for the agency, then one site per client.

{
  "id": "b3a1c9d4-...",
  "slug": "acme",
  "name": "Acme Inc.",
  "created_at": "2026-04-12T09:31:00Z"
}

The slug is immutable once created and appears in every dashboard API path: /v1/orgs/{slug}/.... Org-scoped resources include members, teams, roles, statuses, priorities, templates, workflows, and the help center.

Site

A site represents one product, one app, or one client property. Each site has its own publishable key, its own origin allowlist, its own email routing, and its own ticket queue. Two products under the same org get two sites so tickets don't bleed across queues.

{
  "id": "f4e2b8a1-...",
  "org_id": "b3a1c9d4-...",
  "slug": "acme-app",
  "name": "Acme App",
  "origins": ["https://app.acme.com", "https://staging.acme.com"]
}

What's scoped where

ResourceScopeNotes
Members & teamsOrgTeams scope which tickets an agent sees
StatusesOrgShared catalog, attachable to specific sites
PrioritiesOrgShared catalog, computed per ticket from template scoring
TemplatesOrgEnabled per site; drive the public ticket form
TicketsSiteAlways belong to exactly one site
Articles & FAQsOrgVisible on all sites, or scoped to one via site_id
WorkflowsOrgConditions can branch on ticket fields
Site keys (pk_)SiteOne active key per site, rotate from the dashboard

Site scoping is enforced server-side on every read and write. A site key for acme-app can never see or mutate acme-marketing data, even if the request URL is wrong.

Next