---
title: Environments
description: Separate telemetry data by deployment context while sharing monitor configurations across staging, production, and development.
---

Environments let you monitor the same service across staging, production, and multiple regions using a single monitor configuration. Keep performance data and alerts separate for each deployment while avoiding the complexity of managing duplicate monitors. {% .lead %}

{% two-column %}

## Understanding Environments
**The key concept**: Environments separate telemetry data, not monitors. You create one monitor, then send telemetry from different deployment environments to that same monitor.

| What's Separate | What's Shared |
|-----------------|---------------|
| Telemetry history and metrics | Monitor schedules and assertions |
| Issue tracking and status | Notification lists and integrations |
| Alerts enabled/disabled settings | Team access and permissions |

{% column-break /%}

![Environment selector showing staging and production data for the same monitors](https://cdn.cronitor.io/static/img/docs/environments-selector.png)

{% /two-column %}

## How It Works

{% two-column %}

1. **Create one monitor** with your desired schedule and settings
2. **Send telemetry from different environments** using the `env` parameter
3. **View environment-specific data** using the environment selector in your dashboard
4. **Configure alerts per environment** - enable for production, disable for staging

```bash
MONITOR_URL="https://cronitor.link/p/API_KEY/service-heartbeat"

# Production deployment
curl "${MONITOR_URL}?env=production"

# Staging deployment
curl "${MONITOR_URL}?env=staging"
```

![Environment overview showing shared configuration with separate data](https://cdn.cronitor.io/static/img/docs/environments-overview.png)

{% /two-column %}

## Setting Up Environments

{% two-column %}

Every account starts with a default *production* environment. When you send telemetry without an `env` parameter, it automatically goes there.

**Automatic creation**: New environments are created automatically the first time you send telemetry with a new `env` parameter.

**Manual creation**: You can also create environments in advance:

1. Go to **Settings > Environments**
2. Click **Create Environment**
3. Enter a name (e.g., "staging", "development")
4. Choose whether to enable alerts

{% column-break /%}

![Environment creation form](https://cdn.cronitor.io/static/img/docs/environments-creation-form.png)

{% /two-column %}

## Important Limitations

- **Check Monitors**: Uptime/API checks only work in your default environment. They cannot send telemetry to different environments.

- **Real User Monitoring**: Website analytics support environments, but the setup process is different. See our [RUM Environments documentation](/docs/rum-environments).

- **Configuration Changes**: When you update a monitor's schedule or assertions, the changes apply to all environments since the configuration is shared.

