Overview
Environments classify incidents by the deployment tier they impact — most commonly Production, Staging, and Development, though larger organizations often extend the list to include Sandbox, QA, Preview, or region-specific tiers likeprod-us-east and prod-eu-west.
Environment is often the second field responders reach for after Severity, because it’s the fastest way to answer “does this need to page people right now?” A SEV0 in Development is a bug to triage during business hours; the same SEV0 in Production is an all-hands emergency. Environment is what carries that distinction into every downstream automation.

How Environments Are Used
Environments drive routing, urgency, and reporting throughout Rootly:| Feature | How Environment is used |
|---|---|
| Workflow conditions | The most common paging pattern is “Severity is SEV0 and Environments contains Production” — Environment scopes urgency to real customer-impacting tiers. |
| Slack channel + alias notifications | Each Environment can be linked to Slack channels and user groups. Workflows use these to route Production incidents to #incidents-prod and non-production incidents to a lower-priority channel. |
| Notify emails | Each Environment can be linked to email addresses. Useful for stakeholder groups that only care about Production events (executive comms, customer support). |
| Metrics + reporting | Environment is a top-level filter in every dashboard. MTTR-by-Environment reveals whether your Production incidents resolve faster than Staging ones (they should — otherwise your Production incident response process isn’t working). |
| Status page publication | Not automatic — status page publication is decided by workflow conditions that typically check both Severity and Environment. Most teams auto-publish SEV0/SEV1 in Production only. |
| Retrospective triggers | Different Environments can trigger different retrospective templates. Production incidents get the full customer-impact review; Staging incidents get a lightweight regression tracker. |
Choosing Your Environment List
Most teams start with three environments and add more as their infrastructure grows.Standard Three-Tier
The default for most SaaS teams:- Production — live, customer-facing infrastructure. All customer-visible urgency lives here.
- Staging — pre-production tier used for release verification. Incidents here delay releases but don’t affect customers directly.
- Development — engineering-owned tier used for feature work. Incidents here are usually contained to internal workflows.
Extended Sets
Larger organizations extend the list for real operational reasons — not just to add labels:| Additional Environment | When it’s worth adding |
|---|---|
| Sandbox | You give customers or partners isolated test environments that can have their own incidents. |
| QA | Your QA team owns a distinct pre-release tier separate from Staging. |
| Preview | Branch- or PR-specific ephemeral environments (Vercel, Netlify, Heroku pipeline apps). Rarely worth incidents unless you have production customers on Preview URLs. |
prod-us-east, prod-eu-west, etc. | You operate genuinely regional Production stacks with independent on-call rotations. Adding regions as separate Environments lets workflows route by geography. |
| Internal / Corporate | Employee-facing internal systems (HR platforms, expense tools) that are distinct from customer-facing infrastructure. |
Single-Select vs Multi-Select
Environment can be configured as single-select (one Environment per incident) or multi-select (multiple Environments per incident). Which you choose changes both the picker and the workflow conditions available.- Single-select — cleaner and matches most teams’ actual usage. An outage is either in Production or it isn’t. Workflows filter with
is/is one of. - Multi-select — useful when incidents span multiple deployment tiers simultaneously (e.g., a shared dependency failing across
prod-us-eastandprod-eu-west). Workflows filter withcontains any of/contains all of.
Field Type
Configure Environment as either single-select or multi-select in Configuration → Environments. The setting affects all new incidents; historical incidents keep their existing values.
{{ incident.raw_environments | get: '<attribute>' }} for the one value. Multi-select uses {{ incident.raw_environments[index] | get: '<attribute>' }} where index references a specific Environment in the list. Both are covered in the attribute reference below.Configuring Environment Attributes
Each Environment can be configured with the attributes below. All are available in Liquid syntax for use in workflows, retrospective templates, and status page updates.Production, Prod, Live, prod-us-east, whatever your team calls it.#c4231c). Use a color picker if you’re not sure — color-hex.com is a common choice.Best Practices
- Always require Environment on incident creation. An unspecified Environment is the fastest way to route a Production incident to the wrong Slack channel. Make Environment a required field on your incident-creation forms.
- Use color to reinforce Environment on the incident details view. Red for Production, orange for Staging, blue for Development is the standard convention. Responders read the color before the label — a mis-colored Environment gets miscategorized more often.
- Gate every high-urgency workflow on Environment. Workflows that page on-call, send stakeholder emails, or auto-publish the status page should always include an Environment condition.
Severity is SEV0alone will page the team for a SEV0 in Dev, which nobody wants. - Don’t invent Environments for scope you don’t operate distinctly. Adding “QA” as an Environment only pays off if your QA team has an on-call rotation, distinct SLAs, or a separate notification pattern. Otherwise it’s just a tag that fragments metrics.
- Test workflow conditions with Test Incidents in each Environment. After adding a new Environment or reworking existing ones,
/rootly testin each Environment and confirm the workflows route correctly. Do this before the next real incident hits the new definitions. - Audit rare Environments quarterly. If an Environment sees fewer than 5% of incidents over 90 days, it’s probably not distinct enough — consider merging it with a peer or removing it.
Troubleshooting
An Environment isn't appearing in the picker on the incident form
An Environment isn't appearing in the picker on the incident form
A workflow isn't matching incidents by Environment
A workflow isn't matching incidents by Environment
is on a multi-select Environment field — switch to contains any of (see Workflow Conditions for the operator reference); (2) the Environment slug was regenerated after a rename and the workflow still references the old slug. Update the workflow condition to match the new slug.Production Slack channel isn't receiving incidents when Environment = Production
Production Slack channel isn't receiving incidents when Environment = Production
Metrics show Production and Staging incidents in the same bucket
Metrics show Production and Staging incidents in the same bucket
Responders keep tagging incidents with the wrong Environment
Responders keep tagging incidents with the wrong Environment
Frequently Asked Questions
How many Environments should we have?
How many Environments should we have?
Can we track region-specific Environments (prod-us-east, prod-eu-west)?
Can we track region-specific Environments (prod-us-east, prod-eu-west)?
prod-us-east, prod-eu-west, prod-asia) is a common pattern for teams with independent regional on-call rotations. Workflows can then route incidents to the right regional team based on the Environment field.Can we change Environment on an existing incident?
Can we change Environment on an existing incident?
What happens to incidents if I delete an Environment?
What happens to incidents if I delete an Environment?
Can Environments be team-specific?
Can Environments be team-specific?
Do test incidents count in Environment-based metrics?
Do test incidents count in Environment-based metrics?
/rootly test) are excluded from production metrics regardless of Environment. This is a Kind-level behavior — see Incident Kind for the full exclusion matrix.Can we require Environment on incident creation?
Can we require Environment on incident creation?