# Concepts

## Account and tenant

- **Tenant**: your company. It owns your apps and your dashboard members. A tenant has a status: `test`, `live` or `suspended`. Only mondochat staff change it. See [Tenants and apps](/guides/tenants-and-apps/).
- **Account**: a person who signs in to the dashboard with an email link. A tenant member has the role owner, admin or moderator.

## App

- **App**: one chat installation with its own users, settings, secrets, origins and webhooks. Apps never share users. Your tenant comes with a first app, and only staff create more.
- **Origin**: the scheme, host and port of a page that may show the chat, for example `https://www.example.com`. An app lists at most 20 (1024 bytes in total), and one entry may be a wildcard such as `https://*.example.com`. The chat refuses to load on any other origin.
- **Settings**: one JSON document per app for everything that can differ between sites: roles, policy, limits, calls, branding, languages, moderation rules and webhook options. Every key has a default. See the [settings overview](/settings/overview/) and the [settings reference](/reference/settings/).

## Credentials

- **Server secret** (`mcs_...`): lives only on your server. It signs client tokens and authenticates server API calls. An app has at most two active secrets, so you can rotate.
- **Client token**: an HS256 JWT your server signs with the server secret for one user. It lives at most 600 seconds. The browser exchanges it once for a session. See [Sessions and tokens](/guides/sessions-and-tokens/).
- **Session token**: the ES256 token the chat uses to call the user API. It lasts 15 minutes and is renewed until 12 hours after sign-in.

## People

- **Member**: a user your server vouches for with a client token. You address a member by your own id, the `sub` claim, which the API calls `external_id`. mondochat stores a display name, avatar, language and role, never an email.
- **Guest**: an anonymous visitor. Guests are off by default and turn on with `guests.enabled`. A guest who later logs in can be merged into the member.
- **Role**: a key from your settings, for example `fan` or `model`. Every user has one.
- **Policy**: one row per ordered pair of roles saying what `from` may do to `to`: start a conversation, message, call, send photos, block, see presence. A missing pair allows nothing.

## Conversations

- **Conversation**: the chat between two users of an app. There is at most one per pair.
- **`seq`**: a counter that orders changes. Each conversation, and each user's inbox, has one. A client keeps the copy of a message or conversation row with the higher `seq`, and uses it as the cursor to catch up after a gap. See [Sync and recovery](/realtime/sync/).

## Calls to your server

- **Webhook**: an event mondochat sends to your server, signed per Standard Webhooks. You answer 2xx. See [Webhooks overview](/webhooks/overview/).
- **Callout**: a request mondochat sends to your server and waits for your answer. Callouts carry the catalog, charges and per-minute call charges. Only apps that sell inside the chat or charge calls per minute use them.

## Related topics

- [Settings reference](/reference/settings/)
- [Event catalog](/reference/webhook-events/)
- [Exchange a token for a session](/api/operations/exchange-session/)