> For the complete documentation index, see [llms.txt](https://docs.getantidote.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.getantidote.com/welcome-to-antidote/core-concepts/products-and-targets.md).

# Products & Targets

Understand how products and targets relate.

Products define what you test. Targets define which version you test.

### Products

A **product** is the top-level object for an application or website in Antidote. It stores the name, description, and general base URL for that app or site.

Common examples:

* A marketing site
* A web app
* A checkout flow

### Targets

A **target** is a concrete deployment of a product. In most teams, targets map to commits, branches, preview deployments, or production.

Explorations run against the product's base URL. A target inherits that URL - it records which version you tested, not where.

In the app, you manage targets from the target menu in the top-right navbar, next to the active product. When [Releases](/welcome-to-antidote/viewport-dashboard/releases.md) are enabled, the target menu is hidden.

Each target carries:

* **Version:** A commit SHA or build identifier
* **Metadata:** Context like branch name, PR number, and commit message
* **Environment:** For example staging, canary, or production

[Releases](/welcome-to-antidote/viewport-dashboard/releases.md) **and environments**

When [Releases](/welcome-to-antidote/viewport-dashboard/releases.md) are enabled for your organisation, a product also has environments - a name and URL, such as `staging`. A release is a version you record as deployed to an environment. Runs, tests and schedules are then chosen by environment, and releases take the place of the target menu. See [Releases](/welcome-to-antidote/viewport-dashboard/releases.md).

### Relationship

```
Product: Web App (https://www.example.com)
├── Target: main @ abc123
├── Target: PR #42 @ def456
└── Target: PR #43 @ ghi789
```

CI can override the URL for a single run, which is how per-PR preview deployments are explored.

{% hint style="info" %}
Create one product per application. Use targets for environments and deploy variants.
{% endhint %}

When you use the GitHub Action, Antidote creates and updates targets automatically. When you use the API directly, call `upsertSimulationTarget`.
