# Signals in Uniform

> Learn about signals and other classifying criteria to define a visitor in Uniform.

Source: https://docs.uniform.app/docs/guides/classification/signals

A **signal** is a set of criteria that define a visitor sending you a signal that they should be classified in a specific way.
When a signal's criteria are matched, the visitor receives a visitor score in the signal's dimension.
Signal criteria focus on observable visitor behavior, such as:

- Having a specific query string in the current URL (`https://mysite.com?utm_campaign=my-campaign`)
- Having a specific cookie value (`my_cookie=123`)
- Performing an event that's tracked by an analytics platform such as Google Analytics
- Visiting a specific page/route (`/about`)
  A signal can consist of multiple criteria that are combined using logical operators, for example:
- The visitor is **from Canada** and **is a newsletter subscriber**
- The visitor is **from Canada** and (**the province is Quebec** or **the province is Manitoba**)
  The score from a signal has a **duration**, which defines how long the score lasts once given. The duration can be:
- _permanent_: the score persists as long as possible (depending on browser restrictions)
- _session_: the score persists until the visitor is idle for a period of time defined when your site loads the Uniform Context script
- _transient_: the score is given only when the criteria are true, and is removed as soon as they're not
  When a signal is activated, the amount of score given is controlled by two settings: _strength_ and _cap_.
  The strength is the amount of score that's given each time the criteria are true.
  For example with a signal such as 'the current page is `/about`' with a strength of 50, each time the visitor visits `/about`, they gain 50 points in the signal dimension.
  Cap sets an upper bound on how much score you can get for a given signal. If our `/about` signal had a cap of 125, then the visitor would get 50, then 100, then 125 points and stop growing.
  Together strength and cap provide powerful tools to gather visitor behavior without letting any particular signal overshadow other important signals.

## Criteria types

Uniform supports the following criteria types:

| Type | Description | Example |
| --- | --- | --- |
| Cookie | Data stored on visitor's computers while browsing your site | When a visitor's browser has a cookie set on your site called `SEGMENT` value `leads` |
| Current page | Matches against the current page or route a visitor is on. Combines well with Page View Count = 1 to capture landing pages. Value checked doesn't include domain or query string data. | When the current page is the `products/widgets` page. |
| Event | Events sent to integrated analytics in the browser. The signal duration determines how the tracker determines if the event was triggered:<br>- Current session: The check considers events triggered in the current session.<br>- Permanent: The check considers events triggered in any session.<br>- Transient: This criteria type doesn't make sense for a signal with a transient duration. | When a Google Analytics event is triggered with name `signup_form`. |
| Group | A logical grouping, which can contain child criteria in an AND/OR relationship. | Current page is /foo `AND` (event = bar `OR` query = campaign). The `()` is a grouping of criteria. |
| Page view count | Matches on the number of pages a visitor has visited. The signal duration determines how the tracker determines the page view count: |  |
| Current session: The check considers page views from current session. | Permanent: The check considers the total number of page views across all sessions. | Transient: This criteria type doesn't make sense for a signal with a transient duration.<br>Combines well with Current Page and a match on count = 1 to create a Landing Page signal. |
| When a visitor has visited more than 3 pages during their current visit. |  |  |
| Query string | Parameters added to the visitor's current URL by developers or marketing tools. | When a page is visited that contains `utm_campaign=ppcquery` string value in the URL, such as `https://yoursite.com/campaign?utm_campaign=ppc` |
| Quirks | Match against values provided by integrations such as GeoIP or custom values set by developers. | When the visitor `country` quirk equals `Canada` |

## Add signal

1. In Uniform, open your project.
2. Navigate to **Optimization > Signals**.

   ![](https://docs.uniform.app/images/guides/classification/signals/no-signals.png)
3. Click **Add signal** (in the top right of the page, or in the message in the center when you don’t have any signals yet).
4. Enter the following values:

   | Field | Description |
   | --- | --- |
   | Name | Name that describes the signal. |
   | Public ID | Value that uniquely identifies the signal. |
   | Signal score | The Uniform tracker increases the signal score by this value when the signal is triggered. |
   | Max score | The Uniform tracker won't increase the signal score above this value, even if the signal is triggered. |
   | Duration<br>- Current session: Score is reset when a new session begins.<br>- Permanent: Score persists across sessions.<br>- Transient: Score is reset before scores are updated. |  |
5. In the section **SIGNAL CRITERIA BUILDER**, select a criteria.

   > **Note:**
   >
   > For more information about the available criteria, see the
   > [criteria types](#criteria-types) under capabilities.

   ![](https://docs.uniform.app/images/guides/classification/signals/criteria-options.png)
6. Configure the signal criteria.

   > **Note:**
   >
   > For details about the configuration options for each signal, see the
   > [criteria types](https://docs.uniform.app/docs/learn/products/context#criteria-types) reference.
7. You can add additional criteria to your signal if required.
8. Click **Save and close**.

   ![](https://docs.uniform.app/images/guides/classification/signals/signal-added.png)

## Delete signal

1. In Uniform, open your project.
2. Navigate to **Optimization > Signals**.
3. Find the row that represents the signal you want to delete.
4. Click the red trash can icon.

> **Note:**
>
> If the deleted signal was used to personalize any composition, when
> you open the composition you will see an "invalid" message. When
> you select the component with the personalization you will see  
> an error message about "criteria dimension doesn't exist."
>
> You must either select another dimension or delete the
> personalization criteria before you are able to save
> any changes to the composition.
>
> ![](https://docs.uniform.app/images/guides/classification/signals/missing-signal.png)
