# Core concepts > https://docs.errora.org/en/getting-started/concepts ## Organization The billing and membership boundary. Every user gets a **personal organization** on signup and can create more. An organization owns: - **projects** - **members** and their roles - a **wallet** (Toman) and its pay-as-you-go usage - **integrations**, **AI configurations**, **notification channels** and **alert rules** - **dashboards** - a **retention policy** (`retention_days`) ## Project One application or service. A project owns its events, issues, logs, replays, monitors, metrics, profiles and feedback. Projects have a **platform** (for the icon and setup snippet) and a **sample rate** — the fraction of arriving events that get stored (`1.0` keeps everything). ## DSN key The credential an SDK uses to send data: ```text https://@/ ``` A project can have several keys (`label`, `public_key`, `is_active`) so you can rotate one without downtime. The public key is what authenticates ingestion — via the `X-Sentry-Auth` header, a `?sentry_key=` query parameter, or the `dsn` field of an envelope header. ## Event One thing that happened: an exception, a message, a transaction, a log record, a replay segment, a check-in, a metric bucket or a feedback submission. SDKs post events as **envelopes** to `/api//envelope/` (or the legacy `/store/` endpoint for plain error events). ## Issue (group) Events are **fingerprinted** — by exception type plus stack trace, Sentry-style — and identical fingerprints collapse into one **issue**. The issue tracks: - `times_seen`, unique users, first seen / last seen - status: `unresolved`, `resolved`, `ignored`, `archived` - assignment and bookmarks - 24h / 30d trend series If a new event arrives for an issue you already resolved, the issue **regresses** back to unresolved and fires the `issue.regressed` alert event. ## Trace and span A **trace** ties together everything that happened during one logical operation, across services. A **transaction** is the root span of one service's work; **spans** are the nested units of work inside it (an HTTP call, a SQL query, an LLM call). Logs, profiles, replays and check-ins carry the `trace_id` too, which is how the UI can jump from a log line to the transaction that produced it. ## Environment and release - **Environment** (`production`, `staging`, …) separates the same code running in different places. Cron monitors keep per-environment state; issues, logs and feedback can be filtered by it. - **Release** (`myapp@1.4.2`) tags every event with the version that produced it, and is the key that [source maps](/en/products/source-maps) are uploaded under. Set both in the SDK: ```python sentry_sdk.init(dsn="…", environment="production", release="myapp@1.4.2") ``` ## Sampling Two independent knobs: - **SDK-side** — `traces_sample_rate`, `profiles_sample_rate`, `replaysSessionSampleRate` decide what the client sends. - **Server-side** — the project's `sample_rate` decides what Errora stores from what arrives. Both reduce cost. SDK-side sampling also reduces the load on your own app. ## Retention Each organization sets `retention_days`. A nightly job deletes events, logs and replays past that age (and issues left empty), falling back to `DATA_RETENTION_DAYS_DEFAULT` (90 days). See [Data retention](/en/account/retention). ## Roles and capabilities Roles are `owner`, `admin`, `member`, `billing`, `viewer`, applied **per organization** and optionally **per project**, resolved through a capability matrix (`org:manage`, `project:manage`, `issue:write`, `ai:trigger`, …). See [Roles & permissions](/en/account/organizations#roles--permissions).