> For the complete documentation index, see [llms.txt](https://flapjax.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://flapjax.gitbook.io/docs/start-here/key-concepts.md).

# Glossary

Plain-language definitions of the terms Flapjax and this documentation use. Grouped by theme, then alphabetical inside each theme.

***

## Data model

**Person.** A contact. It carries standard fields of name, email, mobile, date of birth, language and consents, plus the **custom attributes** you define. Your **external ID** or a Flapjax **UUID** identifies it.

**Record.** A single row in a **stack**. Your **external ID** or a Flapjax **UUID** identifies it.

**Stack.** A custom data table you define, with its own **attributes**. It comes in three **types**: **Items**, **Events** and **Signals**, covered below. Think of a table or an object type.

**Stack type.**

* **Items** hold editable reference data, with full create, update and delete.
* **Events** hold a frozen log. Records get created and never changed or deleted.
* **Signals** hold records that internal automations create. API clients cannot.

**Attribute.** A field on a person or a stack. It carries a **data type**, such as text, integer, decimal, boolean, date, datetime, select, multi-select, country, currency, email, mobile number or a relationship to a person, people or a stack. It also carries flags such as *required* and *unique*. A **relationship attribute** points at a person or another record.

**External ID.** The identifier *you* assign to a person or record, so you address it by your own key. A **UUID** is the identifier Flapjax assigns.

**Key.** The machine name of a stack or attribute, in lowercase letters, numbers and underscores. Flapjax generates it from the display name, and it never changes after creation.

**Reference, or relationship.** A link from one record or person to another, through a relationship attribute. Send a reference to something that does not exist yet and Flapjax **auto-creates** a minimal stub for it. See *Automatic data creation*.

***

## Automations

**Automation.** The umbrella term for a **sequence** or a **workflow**. You build one on a visual canvas from a library of **actions**.

**Sequence.** A person-centric automation. You **enrol** a person, and they flow through steps that act on them. It supports **re-entry** limits.

**Workflow.** A run-centric automation. Each firing is a **run** with no single person attached. Workflows find records and act in bulk, often looping over records and enrolling people into a sequence.

**Action.** A single step in an automation. The categories are Records, Filtering, Communication, People, Delays, Utility, Parsing and Flow Control.

**Trigger.** What starts an automation. **Manual** means enrolled by hand or by another automation. **Rule-Based** means a person, record, label or communication event matching a rule. **Specific Date and Time** runs once. **Recurring Schedule** runs hourly, daily, weekly or monthly.

**Run.** One execution of a workflow, or one traversal of a sequence for a person. A **run ID** identifies it and ties its analytics together.

**Participant.** A person enrolled in a sequence.

**Delay.** An action that pauses a run, either for a duration, until a date, or until an event happens. The last of those is an **awaited event**, and it carries a timeout path.

**Loop.** An action that iterates over a set of records or people, running its body once per item, in batches.

**Variable.** A value inserted into action configuration or message content, written `{{path}}`. An optional **fallback** covers a missing value.

***

## Segmentation & labels

**Label.** A tag on a person. **Manual** labels go on by hand or through an automation. **Smart** labels, also called dynamic, carry a **rule configuration** and add or remove themselves in real time as people's data changes. A smart label **auto-pauses** when its rule points at something deleted, such as a segment, and you can resume it.

**Label category.** A grouping for labels, with a colour and emoji. It can serve as a divider or section header too.

**Segment.** A saved group of people or records, defined by a filter, meaning a **rule group**. Membership evaluates live every time, and no stored member list exists.

**Rule, and rule group.** The building block of filters, smart-label rules and automation triggers. A **rule** is a field, an operator and a value. A **rule group** combines rules with AND and OR. Values can be literal, drawn from context, computed, or system tokens such as "last 30 days".

**Baseline.** An operator concept rather than a built-in feature. Some operators keep per-person or per-entity summary records, computed with automations and referenced in labels. Flapjax supplies the primitives to build those: aggregation actions, records and automations. It ships no fixed "baseline" object. Aggregations compute **on demand**, when a report or action asks, rather than running continuously.

**Signal.** Two meanings. First, a **stack type**, holding records that automations alone write. Second, informally, a derived indicator an operator computes and stores as a signal record. Both are configuration rather than a fixed platform feature.

***

## Messaging & content

**Origin.** The source or brand context attached to incoming events, held as an operator field on records, used to scope and route automations. It is modelled as record data rather than a fixed platform concept.

**Campaign**, and **campaign group**. An organisational tag applied to sendouts, so communications group and report together.

**Message and email template.** Reusable content loaded into communication actions. A template can also be a **snippet**, which inserts rather than replaces.

**Sendout, or communication message.** One outbound message to one recipient. The Communications page tracks its lifecycle: sent, delivered, opened, clicked, or bounced, failed and unsubscribed.

**Unsubscribe page.** A public page a recipient lands on to opt out. It changes the person's consent and can fire a webhook back to you.

**Recommended Channel.** A communication action that picks the best channel per person, from email, SMS and the rest.

***

## Platform & delivery

**Access client.** An API credential, meaning a bearer token, carrying **scopes**. You mint it in Settings and authenticate calls to the public **Listener API** with it. Each one belongs to a **protocol**, either HTTP or AMQP.

**Scope.** A permission on an access client: `read:people`, `write:people` or `write:records`, plus a few that are defined and unused. It governs which API operations the token may perform.

**Listener API.** The public ingestion API for people and records, available over REST or a streaming AMQP connection.

**Event pipeline.** The path a change takes, from ingestion through automations to sends and labels. See [how Flapjax processes your events](/docs/start-here/how-your-data-flows.md).

**Failed event.** An ingestion message the system could not process. It lands in the read-only Failed Events monitor for inspection. See [what happens when an event fails](/docs/troubleshooting/when-an-event-fails.md).

**Automatic data creation.** A write referencing a person or record that does not exist prompts Flapjax to create a minimal stub, so the link survives. Later writes fill it in.

**Real-time sync.** The web app updates live over Pusher as data and configuration change, across tabs and teammates. A few data-heavy views load on demand instead.

**Dashboard and report.** A **report** aggregates data. An **insight** report groups a metric, and a **historical** report shows a metric over time. A **dashboard** arranges reports.

**Workspace, or organization.** Your isolated tenant. Every piece of data belongs to it, and teammates join by invitation with a **role** of admin, member or viewer.
