# Score and variable conditions

You'll find how to compare flow scores, saved variables, and input answers, including what happens when a value is zero, missing, or expired.

Available on the Grow, Scale, and Pro plans.

You can send visitors down different flow paths based on their score, a value you've saved, or an answer they've given. **Scoring & Data** gives you comparisons for all three.

## What it checks

**Scoring & Data** compares a flow's lead score, a saved variable, or an input-question answer. The category appears when you're working in a flow. It isn't available in widget targeting or a standalone condition editor without a flow.

All three use the same six comparison labels, but they handle missing values differently and keep their data for different lengths of time.

## When to use it

Use **Lead Score** for points accumulated in a flow, **Variable** for a value saved by your flow, or **Input Question** to compare a saved input answer.

If you need to check whether someone answered at all, use **has answered** under [Segments / Questions](https://rightmessage.com/help/conditions-answers). That source also has comparisons for **between**, text containment, email domains, address parts, country, and date. Its negative comparisons don't match absent answers.

## Options

### Fields and operators

| If you'd like to compare… | Trigger            | Source field                                           | Comparison field |
| ------------------------- | ------------------ | ------------------------------------------------------ | ---------------- |
| Points from a flow        | **Lead Score**     | Select a lead score available in the current flow      | Value to compare |
| A saved value             | **Variable**       | Enter the variable name                                | Value to compare |
| A saved input answer      | **Input Question** | Select an input question available in the current flow | Value to compare |

The operators are **Equals**, **Does not equal**, **Greater than**, **Less than**, **Greater than or equal to**, and **Less than or equal to**. A new condition starts with **Equals** and a blank comparison value. These triggers don't offer **Is set** or **Is not set** in the picker.

Equality comparisons can compare numeric-looking values numerically. Ordering comparisons need usable numeric values. You can compare a text variable such as `last_offer_shown` with **Equals**, but **Greater than** doesn't put text in alphabetical order.

These conditions use the [shared comparison rules](https://rightmessage.com/help/condition-builder-reference#text-operators). Comma-separated comparison values are alternatives for equality, not a numeric range. To define a range, use separate lower and upper conditions in an [All group](https://rightmessage.com/help/condition-builder-reference#groups-and-combinations).

### Lead Score

**Lead Score** compares accumulated score adjustments while RightMessage runs on the current page. The score picker lists scores available in the current flow.

This isn't your connected CRM's lead score unless you've explicitly copied that value or added code to supply it.

### Variable

**Variable** looks up the exact name of a stored variable. It doesn't read a JavaScript global, browser cookie, or arbitrary local-storage key. For those sources, use [Browser Data](https://rightmessage.com/help/conditions-browser-data).

The name must match the one your flow uses when it [sets the variable](https://rightmessage.com/help/using-variables-in-flows), such as `last_offer_shown` or `fit_score`. The name field starts blank. Its example placeholder isn't a saved variable.

### Input Question

**Input Question** compares the saved input value for your selected question. It uses the same six shared comparisons, rather than that question type's dedicated operator list.

It reads the latest saved answer, which can persist across page loads and flows in the same browser. It isn't limited to answers entered during the current flow, and the condition adds no separate expiration.

## Examples

[WorkForge](https://workforge.rightmessage.com) could offer a sales call when a flow score is **Greater than or equal to** `10`.

The screenshot below uses **Variable** with `fit_score`, **Greater than or equal to**, and `10`. That checks a stored variable, not a **Lead Score**, even though the name contains `score`.

![Scoring & Data Variable condition for fit\_score greater than or equal to 10](https://rightmessage.com/help/screens/audience-score-rule.light.webp)

## Things to know

### Zero and missing scores

A missing or zero-valued **Lead Score** is rejected before the comparison runs:

- **Equals** with `0` doesn't match a score of zero.
- **Does not equal** with `10` doesn't match a missing or zero score.
- A negative nonzero score can still be compared.

This is a limitation of **Lead Score**, not the mathematical meaning of the operators. Don't use **Equals** with `0` as a fallback for visitors who haven't accumulated points.

### Score lifetime and shared names

Score adjustments last for the current page runtime. They aren't independently saved as a lifetime contact score. A fresh runtime starts a fresh collection of adjustments, although a flow can use saved answers or variables when it runs again.

The picker lists the current flow's scores, but running flows share score names. A stored variable with the same name can override the value a **Lead Score** condition reads. Use distinct names when the score and variable need to stay independent.

### Missing and expired variables

Stored zero and false values can be compared. A missing or expired variable doesn't match any operator offered by this editor, including **Does not equal**. A negative rule doesn't establish that the variable exists.

Variables can expire after a duration in minutes, hours, days, or weeks. Once a variable has expired, looking it up removes it and treats it as missing. This condition imposes no automatic time limit on a variable saved without an expiry. Clearing browser storage or removing the variable still removes its value.

Variable conditions don't have their own timeframe selector. A variable's lifetime depends on how it was saved, not when you created the condition.

### Missing input answers

Zero is a usable input value and can pass **Equals** with `0`. Missing, null, or empty-string input values don't match positive comparisons. Unlike **Variable** and **Lead Score**, **Does not equal** does match a missing or empty input value here.

That means **Input Question** with **Does not equal** and `10` can match someone who never answered. It isn't an answer-presence check.

### Data that's still loading

A score or variable decision can stay unresolved while a startup flow still has a relevant value to write. Input comparisons can wait for answers to initialize, including contact-profile loading for synced inputs.

Once the data is ready, the zero and missing-value rules above apply. Unresolved doesn't mean zero, an empty answer, or a failed comparison. The [condition builder reference](https://rightmessage.com/help/condition-builder-reference) explains how All, Any, and negation combine unresolved decisions.
