> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trevosdk.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Core concepts

> The vocabulary, in one page.

Everything in Trevo is built from a handful of ideas. This page is the whole vocabulary; the
[Concepts](/concepts/experiments-and-variants) section goes deeper on each.

## Experiment

One question you're testing, with a key you reference in code:

```ts theme={null}
trevo.getVariant('checkout-cta');
```

## Control and variant

The two (or more) versions being compared. **Control** is your current behaviour — the
baseline. A **variant** is a proposed change. Both ship in the same build and run at the same
time; different users get different ones.

Nobody sees both. There's no side-by-side comparison — each user gets one version and is
unaware the other exists.

## Traffic split

What share of users lands in each arm, summing to 100. A 50/50 split is the default and the
usual choice, since equal groups reach a conclusion fastest.

## Identity and assignment

Which variant you get is a hash of your **identity** plus the experiment key. Same identity,
same key, same variant — every time, on every device, with no network call.

Identity is your `userId` once you've called `identify()`, and an anonymous id stored in the
browser before that. Anonymous ids are per browser, so one person on a laptop and a phone is
two participants until they sign in.

Because identity determines assignment, **calling `identify()` can change someone's
variant** — see [Variant mismatch](/troubleshooting/variant-mismatch).

## Exposure

"This user saw this variant." Fires automatically inside `getVariant()`.

Exposure is the **denominator** of your results. If you call `getVariant()` somewhere the
user never actually sees the thing, you inflate the denominator and dilute your measured
effect.

```ts theme={null}
// read the assignment without recording an exposure
trevo.getVariant('checkout-cta', { trackExposure: false });
```

## Conversion

"The thing I care about happened." The **numerator**. It only exists where you write it:

```ts theme={null}
trevo.track('purchase_completed', { value: 49.99 });
```

Trevo has no autocapture. No clicks, no pageviews, nothing implicit.

## Conversion rate, and lift

```
conversion rate = conversions ÷ exposures     (per arm)
```

**Lift** is how much better the variant did:

* **Absolute** — subtract the rates. 18% → 26% is +8 percentage points.
* **Relative** — the percentage change. The same move is +44%.

Both are true. Relative is the bigger number and the one usually quoted; absolute tells you
how many extra people actually got through.

## Decision metric and guardrail

The **decision metric** is the conversion event that determines the winner.

A **guardrail** is a second event that catches collateral damage — the case where a variant
wins the click but breaks what comes after. Winning the first step while destroying the
second is not a win, and the guardrail is what makes that visible.

## Statistical significance, and mSPRT

A gap between two rates might be real, or it might be noise. **Significance** is the
judgement that it's too large to be chance.

Trevo uses **mSPRT**, a sequential test, which means results stay valid no matter how often
you look. Classical tests require committing to a sample size upfront; checking early
inflates false positives. Sequential testing removes that trap.

## Funnel

An ordered series of events, so you can see which step loses people. Experiments answer "did
this change help?"; funnels answer "where are we losing them?"

## Feature flag

The `if (variant === …)` switch itself. In Trevo the flag is temporary by design — when an
experiment concludes, a cleanup PR promotes the winner and deletes the branch along with the
`getVariant()` call.

## Putting it together

> 1,000 users reached the location gate. 500 saw control, 500 saw the variant — that's
> **exposure**. 90 and 130 respectively got through — that's **conversion**. So 18% versus
> 26%: a +8 point **absolute lift**, +44% **relative**. **mSPRT** says that gap is larger
> than noise, and the **guardrail** confirms the recovered users behaved normally
> afterwards. Ship the variant.
