1. Send the environment with every event
Set it once at init. With Sentry's SDK pointed at Errors: Sentry.init({ dsn, environment: "staging" }). With the RealUptime JavaScript SDK, pass the same name as its environment option. An event with no environment counts as matching no named environment.
2. Scope each alert rule to the environments that matter
In Errors settings, open your project's Alert rules and edit a rule. The Environments field takes a comma-separated list, for example production. A rule with production in that field never fires for a staging event; leave it blank to cover every environment. Up to 20 environments per rule, on every plan.
3. Keep a quieter rule for the noisy environment if you want one
A second rule scoped to staging can use a Threshold breach trigger and a Slack or Google Chat channel instead of paging anyone, so staging errors are still visible without waking a person.
4. What Ignore on an issue does
Marking an issue Ignored applies to that issue in every environment, the same as Resolved. To stop one environment's events from being stored at all, drop them in the SDK: beforeSend(event) { return event.environment === "preview" ? null : event; }. Dropped events never reach Errors and never count toward your quota.
Go deeper
The full reference lives in the docs: Alerting reference. Error codes named above are each explained in the error-code reference.