---
title: "Register a Feature"
description: "Register a Feature that transforms raw data into a signal for models and policies."
---

<div style="padding: 14px 16px; border: 0.5px solid #AFA9EC; border-radius: 12px; background: #EEEDFE; margin-bottom: 1.5rem;">
  <div style="display: flex; align-items: center; gap: 7px; margin-bottom: 8px;">
    <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
      <path d="M9 2L4 9h4l-1 5 5-7H8l1-5z" stroke="#7f77dd" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
    </svg>
    <span style="font-size: 11px; font-weight: 500; letter-spacing: 0.05em; text-transform: uppercase; color: #534AB7;">TL;DR</span>
  </div>
  <div style="font-size: 13px; color: #3C3489; line-height: 1.65;">
    Turn logic on top of Data Elements, Features, or Models (like bucketing <code>fico</code> into a <code>risk_tier</code>) into a named, governed Feature that Models, Policies, and downstream Features can use. Set the output type, pick the inputs, write the logic in Python, and create. This page covers a Feature computed at its own entity level; for values rolled up from a lower entity level, see <a href="/user-guide/how-tos/register-a-feature-aggregate/">Feature Aggregate</a>.
  </div>
</div>

## What is it?

A **Feature** lets you apply custom logic to your data to create new variables tailored to your business needs. Once registered, these curated Features can be reused across [Models](/user-guide/how-tos/register-a-model-definition/), [Policies](/user-guide/how-tos/register-policy-decision-workflow/), and other downstream Features.

A Feature sits one layer above Data Elements in the registry hierarchy: it reads one or more [Data Elements](/user-guide/how-tos/register-a-data-element/) (or other Features), applies your logic, and outputs a new value that Models, Policies, and downstream Features can consume.

<div class="flow-diagram">
  <div class="flow-row">
    <div class="flow-box box-de">Data Elements<small>fico, dti, …</small></div>
    <div class="flow-arrow">→</div>
    <div class="flow-box box-feature">Feature<small>risk_tier</small></div>
    <div class="flow-arrow">→</div>
    <div class="flow-col">
      <div class="flow-box box-model">Models</div>
      <div class="flow-box box-policy">Policies</div>
      <div class="flow-box box-feature">Other Features</div>
    </div>
  </div>
</div>

For example, if `fico` is registered as a numerical [Data Element](/user-guide/how-tos/register-a-data-element/) holding the FICO score for each application, you can register a **risk_tier** Feature that buckets applicants into tiers (A, B, C, and so on).

This page covers a Feature computed at its own entity level. For values that have to be computed by rolling up rows from a lower entity level (like `total_number_of_accounts` for each Customer), register a [Feature Aggregate](/user-guide/how-tos/register-a-feature-aggregate/) instead.

## Benefits of a registered Feature

**1. Experiment and refine custom logic**

Iterate on your transformation logic and use Simulation and Comparison jobs to identify the most effective version for your business.

**2. Built-in governance**

- **Change management** and **version control**: every edit is tracked.
- **Lineage**: see exactly which Data Elements, Features, or Models feed into this Feature, and where it is consumed downstream.
- **Permissible purpose**: tag the Feature so it can only be used in approved contexts (for example, restrict PII-derived features from marketing use).

**3. A standardized, well-tested library**

Build up a curated catalog of business Features that any user can reuse, instead of reimplementing the same logic across notebooks and projects.

## How to Register

Follow these steps to register a Feature.

<details open class="step">
<summary>

#### Open the Create Form

</summary>

On the **Feature Engineering → Feature** page, click **+ New Feature**.

A name prompt opens first. Enter a descriptive name for the Feature (for example, `Auto Loan Credit Tier`) and confirm to land on the full Feature form.

</details>

<details open class="step">
<summary>

#### Fill in Attributes

</summary>

Set the **Type** <span style="color: #E5484D;">\*</span> - the output type of your logic (for example, `String`, `Numerical`, `Boolean`, `Date`, or an `Array` type). The platform validates the return value against this type when you save.

Fill in the **Alias** and **Entity**. See [Common Registration Info](/user-guide/how-tos/common-registration-info/).

Leave **Is Aggregated** unticked.

</details>

<details open class="step">
<summary>

#### Fill in Formula

</summary>

This section has two parts: the **Input** and the **Definition**.

Under **Input**, pick the registered objects this Feature depends on. Inputs can include **Data Elements**, other **Features**, and **Models**. Each chosen input becomes a variable in the editor, referenced by its alias: the `fico` Data Element is available as `fico` in code.

:::tip[Tip: paste a list of inputs at once]
Already have your inputs as a comma-separated list (from a notebook or code snippet)? Paste it straight into the Input box and the platform resolves each name to the matching registered object for you, instead of adding them one at a time.
:::

In the **Definition** editor, write the logic in Python. Each input is resolved for the current entity, one record at a time, so you work with a single value (not a column). Write your logic and `return` a single value that matches the **Type** set in Attributes. You can import standard libraries (`numpy`, `math`, `datetime`, etc.) inside the editor.

For example, read the `fico` input and `return` the matching `risk_tier` label:

```python
if fico is None:
    return 'Non-Scorable'
elif fico >= 750:
    return 'A'
elif fico >= 680:
    return 'B'
elif fico >= 600:
    return 'C'
else:
    return 'D'
```

</details>

<details open class="step">
<summary>

#### Fill in Properties and Create

</summary>

Fill in the [Properties](/user-guide/how-tos/common-registration-info/#properties) (Description, Permissible Purpose, Group, and Keywords), then click **Create** at the bottom right. The Feature is saved as a draft and you land on its details page.

</details>

## What's Next

- Build a [Model](/user-guide/how-tos/register-a-model-definition/) that uses this Feature.
- Use the Feature in a [Policy](/user-guide/how-tos/register-policy-decision-workflow/).
- Send the Feature for [approval](/user-guide/how-tos/approve-an-object/) so it can be used outside your draft workspace.
- Need a value computed across multiple rows? Register a [Feature Aggregate](/user-guide/how-tos/register-a-feature-aggregate/) instead, same flow, different Formula section.
