# AI data handling Source: https://docs.incident.io/admin/ai-usage How incident.io uses AI and handles AI data incident.io uses AI to help take away some of the overhead of incident response — whether that's digesting huge amounts of information, communicating clearly to stakeholders, or distilling previous incidents into powerful learnings. Think of it like a helpful colleague chipping in or taking tasks off your hands when it can. Our AI features are powered by OpenAI, Anthropic, and Google Vertex. We send data on-demand to their APIs when required by a feature — this includes (but is not limited to) incident updates, summaries, and custom fields. This data is not stored by them and is not used for any reason other than to provide these services. This means it is explicitly *not* used for training purposes. Audio is handled by two further providers. [Scribe](/ai/scribe) joins your incident calls through Recall.ai, and ElevenLabs transcribes the call audio. We store the resulting transcript, not the audio. ElevenLabs also transcribes voicemail left on your [call routes](/on-call/live-call-routing#send-calls-to-voicemail). Voicemail works differently: we store the recording as well as the transcript, so you can listen back to it. OpenAI, Anthropic, Google Vertex, Recall.ai, and ElevenLabs are all listed as our data sub-processors, so all customers automatically consent during sign up. However, if you'd like for us to stop sending data to OpenAI, Anthropic, or Google Vertex, and therefore disable all AI features, contact us at [help@incident.io](mailto:help@incident.io). You can also opt out of ElevenLabs on its own, which limits transcription to what your meeting provider's captions give us. If your organization has opted out of any subprocessor, [Settings → AI governance](https://app.incident.io/~/settings/ai-governance) shows which ones and what that means for the AI features you can use. If your incident channels may contain sensitive data like credit card numbers or Social Security numbers, you can enable automatic redaction to strip this before it reaches AI providers. See [Managing sensitive data](/admin/managing-sensitive-data#ai-data-redaction) for details. For more on how we store and handle data, see our [Trust Center](https://incident.io/security). # Announcements Source: https://docs.incident.io/admin/announcements Control what your incident announcement posts look like with templates, and where they get posted with rules Announcements keep everyone informed by sharing incidents in a Slack or Microsoft Teams channel. You don't need to set anything up to get started. Every account comes with a default template and a default rule, so incidents are announced automatically from day one. This page is about customizing that behaviour, which comes in two parts: * **Templates** control what your announcement posts look like: the fields, actions, and emojis that appear in the post. * **Rules** control which incidents get announced, and where. To customize either, go to [Settings → Announcements](https://app.incident.io/~/settings/announcements). The Announcements settings page, showing the Templates and Rules
sections ## Templates A template controls what an announcement post looks like. Every account starts with a single template, which is marked as your **Default**. This is the template used whenever a rule (or workflow) doesn't specify one. Click a template to edit it. You can add or remove fields and actions, reorder them, and configure which emojis appear next to each field, with a live preview of the post as you go. The Edit announcement template drawer, showing the fields and actions and a live preview of the
post To add a field or action, click **Add** and pick from the list. Adding a field to a template by picking from the Add menu ### Using more than one template You're not limited to a single template. Click **Add template** to create additional templates. This is useful when you want variations for specific purposes, such as a stripped-back post for a particular audience, or a template paired with a specific [announcement rule](#rules) so different incidents are announced differently. You can also choose a template in the **Post an incident announcement** step of a [workflow](/workflows). Leaving it blank falls back to your default template. ## Rules Rules control which incidents get announced, and where. By default, we announce every new incident and its updates in a single channel. In Slack, that's your `#incidents` channel. Click a rule to edit it. You can change which channel it posts to, add conditions so it only fires for specific incidents (for example, announcing critical incidents in `#customer-support` too), and pick which template it uses. The Edit announcement rule drawer, showing the rule's settings, conditions, and a live preview of the
post Click **Add rule** to create a new rule, for instance to call out specific incident types or severities in a separate channel. Don't delete whichever channel you're using for default announcements. On Slack, if you already had an `#incidents` channel when you installed our app, we'll have created a channel called `#incident-io-incidents` instead, which you can rename to whatever you'd like. For more on redirecting announcements to a different channel, see [Announcement channels](/incidents/change-announcements). ## Team ownership You can give one or more teams ownership of a template or a rule: * **Templates**: set the **Template owner** field when you create or edit a template. Your default template can't be team-owned, and choosing which template is the organization default stays an account-level action. * **Rules**: set the **Announcement rule owner** field in the rule's create or edit drawer. Ownership assigns the template or rule to a team. If your organization uses [team roles](/admin/team-roles), that ownership also controls who can manage it: only members of an owning team with the **Manage announcements** permission, or anyone who holds it account-wide, can make changes, and reassigning ownership always needs that permission granted account-wide. See [Team resources](/catalog/team-resources) for what ownership means more generally. Each team can see the templates and rules they own on their own **Settings → Announcements** page. The Announcements tab of a team's settings, listing the template and rule owned by that
team ## FAQs Not much. Templates and rules are configured in the same place and work the same way on both platforms. The main difference is the default announcement channel: on Slack it's your `#incidents` channel, whereas on Microsoft Teams it's the General channel of your Incidents team. See [Announcement channels](/incidents/change-announcements) for more. The announcement builder does not currently support free-form text or @mentioning Slack user groups directly in the announcement post. If you need to notify a specific team when an incident is announced, consider these alternatives: * **Announce to the team's Slack channel**: Use a [rule](#rules) to post directly to the relevant team's channel. * **Invite the user group via a workflow**: Set up a [workflow](/workflows) to automatically invite the Slack user group to the incident channel. * **Auto-subscribe to certain incidents**: Encourage folks to [auto-subscribe](/incidents/subscribing) to incidents belonging to their team. # API keys Source: https://docs.incident.io/admin/api-keys Control API access with account-level and team-scoped permissions. Create and manage API keys from [**Settings → API keys**](https://app.incident.io/~/settings/api-keys). ## Creating an API key We'll only show the API key token once at creation time, so store it somewhere safe. API keys can have account-level permissions, team-scoped permissions, or a combination of both. This means teams can manage their own config via the API without risking changes to other teams' resources. When you create a new API key, you choose which permissions it has. You can only grant permissions that you yourself have. If you only have team-level permissions, you'll only be able to create keys with team-scoped permissions. ### Account-level permissions Account-level permissions apply across your entire organization. These are the same permissions available when creating [custom roles](/admin/user-permissions#custom-roles), such as creating incidents, managing workflows, or reading catalog data. ### Team-scoped permissions Team-scoped permissions restrict what a key can do to resources owned by specific teams. ## Permissions reference Each permission bundles a set of underlying API scopes, so you grant capabilities without assembling scopes by hand. In the create dialog, hover the scopes badge on a permission to see exactly what it includes. These are the same permissions used to build [custom roles](/admin/user-permissions#custom-roles), so a key can never do more than a user with the equivalent role. You can only grant permissions you already hold; any you don't have appear locked. A **Team** value of *Yes* means the permission can also be scoped to specific teams, restricting it to resources those teams own. ### Incidents and investigations | Permission | What it allows | Team | | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- | ---- | | **View data** `viewer` | Read-only access to public incidents and most organization settings. | | | **View all incident data** `global_access` | Adds read access to private incidents, alerts, and escalations. | | | **Create incidents** `incident_creator` | Open incidents and set fields, role assignments, timestamps, and attachments at creation. | | | **Edit incidents** `incident_editor` | Update, decline, merge, or cancel incidents, and manage calls and linked alerts. | | | **Manage incident memberships** `incident_memberships_editor` | View all incident data, including private incidents, and grant or revoke incident access. | | | **Opt out of post-incident flow** `post_incident_flow_opt_out` | Close an incident by opting it out of the post-incident flow. | | | **Manage postmortems** `postmortems_manage` | Manage postmortems, including updating their status and running imports. | | | **Download investigation artifacts** `investigation_download` | Download AI investigation artifacts attached to incidents. | | | **View call transcripts** `call_transcripts_viewer` | View call sessions and the transcripts Scribe captured for them. | | | **View participant workload** `incident_workload_viewer` | View participant-workload analytics (who's been involved in how many incidents). | | | **View private participant workload** `incident_workload_private_viewer` | View participant-workload analytics, including for private incidents. | | ### Catalog and teams | Permission | What it allows | Team | | ----------------------------------------------------- | --------------------------------------------------- | ---- | | **View catalog** `catalog_viewer` | Read-only access to catalog types and entries. | | | **Manage catalog** `catalog_editor` | Create, edit, and delete catalog types and entries. | Yes | | **Manage team memberships** `team_memberships_manage` | Update team memberships and edit catalog entries. | | ### On-call, escalations, and notifications | Permission | What it allows | Team | | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ---- | | **Manage on-call resources** `on_call_editor` | Full on-call surface: alerts, sources, routes, schema, schedules, escalations, and maintenance windows. | Yes | | **View on-call resources** `on_call_viewer` | Read-only view of on-call resources like alerts, escalations, and schedules. | | | **Create escalations** `escalation_creator` | Create, respond to, and cancel escalations. | Yes | | **Manage notification methods** `notification_methods_manage` | Configure the on-call paging provider, and users' notification methods and rules. | | | **View unredacted notification methods** `notification_methods_unredacted_viewer` | View users' notification methods, including unredacted phone numbers. Grant sparingly. | | ### Schedules | Permission | What it allows | Team | | --------------------------------------------------------- | ------------------------------------------------------------- | ---- | | **Create and update schedules** `schedules_editor` | Create, update, delete, and view schedules. | Yes | | **Read schedules** `schedules_reader` | Read-only access to schedules. | Yes | | **Create schedule overrides** `schedule_overrides_editor` | Create schedule overrides only, not the schedules themselves. | Yes | ### Workflows | Permission | What it allows | Team | | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---- | | **Manage workflows** `workflows_editor` | Create, update, delete, and view workflows. | Yes | | **Manage workflows that run on private incidents** `private_workflows_editor` | Everything in workflows, plus workflows that run on private incidents. | Yes | | **Workflows on private escalations** `private_escalation_workflows_editor` | Manage workflows that run on private escalations. | | ### Status pages | Permission | What it allows | Team | | ------------------------------------------------ | -------------------------------------------------------------------------- | ---- | | **Publish status pages** `status_page_publisher` | Create status page incidents and maintenance windows, and publish updates. | | ### Secrets | Permission | What it allows | Team | | ----------------------------------- | ------------------------------------------------------------ | ---- | | **Manage secrets** `secrets_manage` | View, create, update, rotate, delete, and reference secrets. | Yes | | **Use secrets** `secrets_use` | View secret metadata and reference secrets. | Yes | ### Organization and security | Permission | What it allows | Team | | ------------------------------------------------------- | -------------------------------------------------------------------------------------- | ---- | | **Manage organization settings** `manage_settings` | Change organization-level configuration such as custom fields, and manage the catalog. | | | **Update security settings** `security_settings_editor` | Update the organization's security settings. Grant sparingly. | | ### API keys and attribution | Permission | What it allows | Team | | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | | **Manage API keys** `api_keys_manage` | View, create, edit, delete, or rotate API keys. A key with this permission can create more keys, but only within its own access. Can't be granted through the public API. | Yes | | **Act on behalf of users** `act_on_behalf_of_users` | Attach the on-behalf-of header to attribute API actions to a specific user. Grants no actions on its own, so pair it with another permission. Availability depends on your plan. | | ## Best practices * **Least privilege**: grant only the permissions a key actually needs. * **One key per integration**: makes it easy to rotate or revoke one without affecting others, and keeps audit trails clear. * **Rotate regularly**: and immediately if a key may have been exposed. * **Review periodically**: remove keys that are no longer in use. ## Editing an API key Existing API keys can be edited after creation. You can update the key's name, add or remove account-level permissions, and add or remove team-scoped permissions. To edit a key, you need the same permissions required to manage it — see [Permissions required](#permissions-required) below. ## Permissions required To manage API keys, you need one of: * The account-level **Manage API keys** permission (via a [base or custom role](/admin/user-permissions)) * The team-scoped **Manage API keys** permission (via a [team role](/admin/team-roles)) Users with only team-scoped permissions can create, edit, and delete keys within their team, but cannot manage keys belonging to other teams. ## FAQs A scope is a single, granular capability in the API. A permission bundles several scopes together into something meaningful, like the **Edit incidents** permission. You choose permissions when creating a key, not individual scopes. To see the scopes behind a permission, hover its scopes badge in the create dialog. Yes. A key can be associated with multiple teams, but it will have the same set of team-scoped permissions across all of them. Yes. A single key can have account-level permissions (e.g., read catalog data) alongside team-scoped permissions (e.g., manage schedules for a specific team). # Audit logs Source: https://docs.incident.io/admin/audit-logs Track configuration changes and permission updates across your account Audit logs track changes made within your incident.io account, giving you a complete record of who changed what and when. Available on the [Enterprise plan](https://incident.io/pricing), powered by [WorkOS](https://workos.com/), with entries retained for one year. You must be an Owner or Admin to access audit logs. Entries are available from April 18, 2023 onwards. ## What’s tracked Audit logs capture configuration changes across incident.io, including: * Alert sources, routes, and escalation paths * Schedule and on-call configuration changes * User role assignments and permission updates * Access grants to private incidents * Workflow and automation changes * Integration configurations Each entry records the actor (person or system making the change), the target (what was modified), and contextual details like location and user agent. Entries conform to a versioned schema — see the [Audit logs API reference](https://docs.incident.io/api-reference/audit-logs) for full details. ## Viewing audit logs Access audit logs at [Settings → Security](https://app.incident.io/~/settings/security). From there you can: * View entries in a web interface, filterable by target, event type, actor, and date * Export entries for a given time period to CSV * Set up a log stream to a SIEM provider (e.g. Datadog, Splunk, or an Amazon S3 bucket) ## API access Access audit log entries programmatically via the [Audit logs API](https://docs.incident.io/api-reference/audit-logs). # Billing methods and mechanics Source: https://docs.incident.io/admin/billing How billing works for monthly and annual plans Our [pricing](https://incident.io/pricing) is based on the number of Responder and On-call seats you use. Choose monthly or annual billing depending on your plan. Manage your billing information in [Settings → Billing](https://app.incident.io/~/settings/billing). Both monthly and annual billing are available on Team plans. Pro and Enterprise plans are billed annually only. ## Monthly billing Available on Team plans only. We charge at the start of each month based on your seats in-use. On subsequent months, we adjust for any changes: * If you added seats during the month, we charge for the overage (prorated daily) * If you removed seats, we credit your account (prorated daily) Your billing date stays the same each month. ## Annual billing ### Team plan Pay upfront for 12 months based on the seats you’re using when you sign up. Any overages or downgrades throughout the year are settled on your billing date each month, prorated daily. ### Pro and Enterprise plans Work with our sales team to estimate the seats you’ll need for the year. We invoice on your service start date. If you need more seats during the year, you have two options: * **Co-term contract** — add seats at a reduced rate for the remainder of your current subscription * **Annual true-up** — we bill at the end of the year for additional seats, prorated daily For details on how to add or remove seats, see [Managing seats](/admin/managing-seats). For what each seat type includes, see [Seat types & viewers](/admin/seat-types). ## FAQs We’re a UK-based company so we use a W8-BEN form instead of a W-9. You can download our [W8-BEN form](https://incident.io/docs/files/W-8BEN-E.pdf). Responder and On-call seats are billed independently. A user with both seats counts against both pools. Viewers are free and unlimited on all plans. See [Seat types & viewers](/admin/seat-types) for the full breakdown. # Changing plans Source: https://docs.incident.io/admin/change-plan How to upgrade or downgrade your incident.io subscription ## Moving to Pro or Enterprise plan Upgrades to Pro or Enterprise plans always go through sales: 1. Contact us at [help@incident.io](mailto:help@incident.io) to discuss your requirements 2. We'll help set up a trial if needed 3. Work with sales to finalize contract details ## Moving to Team plan The Team plan is a self-serve upgrade from the Basic plan. Upgrade through your [billing settings](https://app.incident.io/~/settings/billing). If you're currently on a Pro or Enterprise trial, contact support to move to Basic first. ## Downgrading to Basic plan To downgrade to the Basic (free) plan: 1. Contact support to request the downgrade 2. If you've recently paid for a subscription, you may be eligible for a prorated refund 3. Downgrading removes access to premium features — see the [pricing page](https://incident.io/pricing) for what's included in each plan The Basic plan has a limit of 5 responder/on-call seats. If you're downgrading to Basic, ensure you have no more than 5 active responders by changing excess users to "Viewer only" access. # Channel bookmarks Source: https://docs.incident.io/admin/channel-bookmarks Add custom bookmarks to incident channels for quick access to key information and links You can create custom bookmarks within your incident channels, to give snapshot information and easy-to-find links. 1. To create a custom bookmark, first navigate to [Settings](https://app.incident.io/~/settings/slack-channel) → [Slack Channel](https://app.incident.io/~/settings/slack-channel). The Slack Channel settings page for configuring bookmarks 2. Click the "+ Add New button", and create. You will have three options for the kind of bookmark you'd like to add: Bookmark type picker showing pre-defined property, pre-defined link, and custom link options "Pre-defined property" is a field that contains useful information about the incident (i.e. the status of the severity), and will update as it is changed. "Pre-defined link" lets you choose from our pre-defined bookmarks which link you to a page related to the incident (i.e. a Jira issue ticket). "Custom link" gives you the ability to bookmark to a link. This can be useful if you have documentation that is commonly accessed during an incident. 3. You can also choose under what condition a bookmark appears (i.e. a link to a critical incident doc only appears on critical incidents). Configuring conditions for when a bookmark appears, such as severity level 4. Next click "Create", and your bookmarks will appear at the top of the incident channel when the conditions you selected are met. Bookmarks displayed at the top of an incident channel in Slack Bookmarks are a great way to give at-a-glance information to team members when they join an incident. The [Slack API](https://api.slack.com/methods/bookmarks.add) limits what we're able to do with the bookmarks in your incident channel. Currently, we're only able to append bookmarks to the end of the list. This might mean that sometimes, you see bookmarks end up in a different order than the one you've set up. The alternative is to individually remove and re-add all of the bookmarks we've created. This turned out to be visually much more jarring, and it also resulted in the reordering of any bookmarks that had been manually added to the channel. Although having bookmarks out of order isn't ideal, we feel like this is the best option for now. Some actions, such as creating a call for your incident, happen in the background after we've created your incident channel. In these cases, you're likely to see the "Join the call" button show up at the end of your list of bookmarks. We've got much more control over announcement messages: you'll see that the order here will always be what you expect. We always keep an eye out for improvements to the Slack API, and we hope to be able to improve this in the future. # Default timezone Source: https://docs.incident.io/admin/default-timezone Set a default timezone for consistent timestamps across your organization Set a default timezone for your organization so timestamps are consistent across your incident management process — useful for distributed teams who want to standardize on a single timezone like UTC. To set your default timezone, go to **Settings → Organization** and select a timezone from the dropdown. ## What's affected The default timezone applies to most areas of incident.io, including incident timelines and timestamps in the dashboard. When enabled, users input timestamps in the organization's default timezone rather than their local time. The following areas are **not** affected by this setting: * **On-call schedules** — use their own timezone configuration * **Insights** — display in the user's local timezone * **Status page emails** — remain in UTC If you don't see the timezone setting in your organization settings, contact your Customer Success Manager to have the feature enabled. # Deleting your organization Source: https://docs.incident.io/admin/delete-account How to delete your incident.io organization Since account deletion requires administrative verification, contact us at [help@incident.io](mailto:help@incident.io) to delete your organization. You'll need to: * Be the organization owner or have appropriate permissions * Contact us from your registered account email address or Slack * Provide your organization URL (e.g. `https://app.incident.io/your-org-name`) We'll handle the deletion and cancel your plan. Once complete, all users lose access and automated emails stop. If you want to use incident.io again in the future, you'll need to create a new account. Looking to delete an individual user account instead? See [Deleting users](/admin/delete-users). # Deleting users Source: https://docs.incident.io/admin/delete-users How user accounts are managed and removed in incident.io User accounts in incident.io are synced to your Slack workspace, so they're managed through Slack rather than deleted directly. An org Owner/Admin can remove your permissions and set you back to just a `Viewer` role, or you can fully remove the account by deactivating the Slack profile. If you're an Enterprise customer using SCIM, you can de-provision users via SCIM. Looking to delete your entire organization? See [Deleting your organization](/admin/delete-account). # Duplicate user errors Source: https://docs.incident.io/admin/duplicate-users Resolve duplicate SAML account errors when logging in When a user logs in, they might see an error: > We found multiple SAML accounts for your email address This happens when we've entered a 'bad state' between incident.io's user management, and your identity provider (e.g. Okta). This often happens when someone is changing their name, or you're changing the domains of your canonical emails as part of a migration. To resolve this: 1. Ensure that someone's canonical email address in your IdP (identity provider) exactly matches their email in Slack or Microsoft Teams. If these are not the same, we won't be able to authenticate them correctly 2. Go to [Settings → Users](https://app.incident.io/~/settings/users/users) and search for the user's name. You should see multiple items in the list 3. One of those users should be a 'SAML only' user, meaning they won't have a `Slack` connection badge. This user will also have a 'Deactivate User' button in the bottom left → click this! A SAML-only user profile showing the Deactivate user button Once you have just a single active user, and the email addresses match, the user should now be able to log in successfully. # Incident forms Source: https://docs.incident.io/admin/incident-forms Control which fields appear on declare, accept, update, resolve, and escalate forms As a responder progresses through an incident, they will encounter several forms designed to collect information about the incident. These forms exist to make sure that responders share the right information at the right time, so that: * Automations can run correctly (e.g. workflows that invite the right people depending on what service is affected, or rule-based suggestions tailored to certain situations) * The wider team is aligned on the core facts of the incident (what product is impacted, how widespread is it, who's leading), and is kept up to date (e.g. via subscriptions) * You can analyze patterns in incidents via insights There's always a balance to find here: ask for too much information too soon and responders will be wasting time filling in forms when they should be fixing the issue. Ask for too little, and you can't build targeted automations or keep your teams up-to-date. We allow you to configure your incident forms to help get this right, giving you the ability to only ask for the information that you need. You can access these settings via [Settings → Forms](https://app.incident.io/~/settings/forms). Here, you can configure: * The **Declare** form, shown when declaring a new incident * The **Accept** form, shown when accepting a triage incident * The **Update** form, shown when sharing an update for an incident * The **Resolve** form, shown when you resolve an incident * The **Escalate** form, shown when you manually escalate from an incident ## Choosing which fields to include You can now control exactly which fields will show on each form, and see the impact of those changes in real time. For example, you can hide the summary field when declaring an incident unless it’s at least a **Major** severity. These work ‘in real time’ too, so when you change the severity from Minor to Major, the summary field will appear in your form. Form configuration showing field visibility conditions based on severity ## Choosing when to make a field required Required fields are a blessing and a curse: it’s useful to ensure that a responder fills in a field and doesn’t forget, but having lots of required fields can be very frustrating when you’re trying to fix a problem. You can now choose when you want a field to be required: for example, you might have a role as **Comms Lead** which is required if the severity is Critical, but not for lower severity incidents. Setting a role as required only for Critical severity incidents As a bonus, if you have a dropdown custom field, you can choose to include a ‘no value’ item in the dropdown. Use this to ensure that a user makes an active choice to input 'no value' instead of just forgetting to fill out the field. ## Configuring forms by incident type You can configure a bespoke form that’ll only apply to incidents of that particular type. For the Declare form, as soon as the user chooses that particular type, the rest of the form will change to match that specific type's form configuration. Configuring a bespoke declare form for a specific incident type If an incident type is [owned by a team](/incidents/incident-types#team-ownership-and-permissions), overriding or editing its forms is restricted to that team (or anyone with the **Manage incident types** permission granted globally). Org-wide forms that aren't tied to a specific type still require the permission granted globally. ## Default values To make it even easier to fill out these forms, you can configure default values against each element in the form. That means that you can now: * Choose a different default severity (instead of the lowest severity) * Set a default value for a custom field * Make incidents triage by default, instead of live Setting a default severity and custom field values on a form This also allows you to create templates, so you can make it easier for responders to populate summaries and updates consistently. A summary template with pre-populated text for responders ## Your form, your way You can now help your responders by including customized descriptions and placeholder text, as well as dividers and help text blocks. Adding custom descriptions, placeholder text, and dividers to a form Only require what you absolutely must, and prefer requiring at incident close than at incident start. If you require 5 fields when opening an incident, responders will be forced to provide 5 values before they begin responding. # Incident timestamps Source: https://docs.incident.io/admin/incident-timestamps Validate timestamp ordering to prevent incorrect durations and confusing timelines Timestamps are a great way to keep track of key moments within your incidents. Within incident.io we provide several default timestamps for you and allow you to create additional timestamps - both automatic and manually filled. In the heat of the moment, it can be hard to keep track of exactly when everything happened though, perhaps you made a mistake reading a log or pasted the wrong thing when manually entering them. Suddenly your statistics make no sense, you have a negative duration for your resolution time, or your post-mortem timeline just makes no sense. Validation can help save you from confusing timelines and incorrect metrics. ## Enable validation on a duration metric Duration metrics define a relationship between 2 timestamps by having a start and an end. You can use a duration metric to enforce that relationship in your timestamps by turning on validation. [Navigate to your settings page and the timestamps tab](https://app.incident.io/~/settings/lifecycle?tab=timestamps), create a new metric or select an existing one to edit. Select the timestamps you wish to validate and that they are in the order you want to enforce. Make sure to tick **Enable validation** and then click save. Creating a duration metric with validation enabled ## Validation when editing timestamps Now that validation is enabled for that duration metric when you go to edit a timestamp in the dashboard and select the wrong date - you will be given a clear warning preventing you from submitting it. A validation warning preventing submission of an out-of-order timestamp ## Warning when resolving incidents You may have also configured your timestamps to be required when marking an incident as resolved. The values you enter here may also result in invalid durations however as we do not want to increase unnecessary friction we warn users - and notify them within the incident channel (see below) to prompt someone to fix it. A validation warning shown when resolving an incident with invalid timestamps ## Invalid durations notifications Some timestamps are automatically updated when an incident changes statuses, i.e. we will set the timestamp "Closed at" when an incident is closed. Depending on how you have configured your timestamps this automatic update may happen more than once (for example reopening and closing again an incident). This means that over time some of the timestamps you might have manually set might now be invalid and no longer make sense. We will highlight invalid timestamps in the details of the incident: Invalid timestamps highlighted in the incident details panel In addition to this and to help alert you when automatic changes have made a timestamp invalid we will post a message within the incident channel providing a helpful link to edit the duration directly. A Slack message alerting that a timestamp is now invalid with a link to fix it Clicking this link takes you directly to an edit duration timestamps modal. From here you can quickly alter the dates and save. The edit duration timestamps modal for correcting invalid values # Instance name, URL, and icon Source: https://docs.incident.io/admin/instance-customization Change your incident.io instance name, URL, or icon incident.io allows you to customize various aspects of your instance to align with your organization's branding. This article explains how to modify your instance name, URL, and icon. ## Changing your incident.io instance name Your incident.io instance name is tied to your Slack workspace name. To change it: 1. Contact incident.io support 2. Request the instance name change, specifying your desired new instance name 3. The support team will process your request and update the incident.io instance name ## Modifying your incident.io instance URL To change your incident.io instance URL (e.g., from app.incident.io/oldname to app.incident.io/newname): 1. Contact incident.io support 2. Request a URL change, specifying your desired new URL 3. The support team will process your request and update the URL ## Updating your incident.io instance icon By default, your instance icon is synced from your Slack workspace. You can also upload a custom icon directly in [**Settings → Organization**](https://app.incident.io/~/settings/organization) — this is available to all customers on both Slack and Microsoft Teams. To update via Slack: 1. Change your Slack workspace icon following the [official Slack instructions](https://slack.com/intl/en-gb/help/articles/204379773-Upload-a-Slack-icon#free,-pro-and-business+-subscriptions-1) 2. Wait for the next sync between Slack and incident.io 3. The new icon will automatically appear in your incident.io instance The daily sync between Slack and incident.io may take some time. If you don't see the icon update within 48 hours, contact incident.io support. # IP allowlists Source: https://docs.incident.io/admin/ip-allowlists Restrict access to your incident.io workspace by IP address Once enabled, all authenticated requests to your [incident.io](http://incident.io/) workspace must originate from an allowed IP. This includes: * Dashboard usage * Public API access * Mobile app traffic This *excludes*: * Public alert ingestion endpoints * Public webhook endpoints used by third parties Requests from IPs outside the configured allowlist will receive a 403 response. ```json theme={null} { "type": "resource_forbidden", "status": 403, "request_id": "g329NK8-", "errors": [ { "code": "forbidden", "message": "Unauthorized" } ] } ``` ## Permissions In order for a user to manage the IP allowlist, they must have the "Manage security settings" scope. This is configured in [Settings > Users > Roles](https://app.incident.io/~/settings/users/roles). The Manage security settings permission selected in the Security & billing permissions list Similarly, in order for an API key to manage the IP allowlist, it must have the "Manage security settings" permission. ## Configuring your allowlist Navigate to [Settings > Security](https://app.incident.io/~/settings/security) and scroll down to "IP allowlists". Click "Manage" to open the drawer, and enter your selection of IPv4 addresses and/or CIDR IP prefixes. IP allowlist configuration showing named IP addresses and CIDR ranges Your current IP will be pre-filled in the list. Any request to modify an enabled allowlist will be rejected if it does not contain the requestor's IP, to prevent lockout. Once enabled, the allowlist will immediately become active. Ensure that your allowlist is complete before enabling it. To enable the allowlist, enable the toggle and click "Save" The IP allowlist toggle enabled ## Disabling the allowlist Use the same toggle as before to disable your allowlist, and click "Save". This will allow requests from all IPs to access your [incident.io](http://incident.io/) workspace. Your list of IPs and CIDRs will remain available for future use. # Managing seats Source: https://docs.incident.io/admin/managing-seats How to add, remove, and change seats on your incident.io account Your incident.io plan includes Responder and On-call paid seats, and unlimited Viewer seats. See [Seat types & viewers](/admin/seat-types) for details of each. ## Changing a user's seat type You can manage seat assignments from [Settings > Users](https://app.incident.io/~/settings/users). For Responder seats, users who take any of the Responder actions listed at [seat types & viewers](/admin/seat-types) will automatically be upgraded to a Responder seat. For On-call, we'll ask you to confirm seat assignment for a user when you: * Add them to a schedule * Add them to an escalation path Users are only removed from a paid Responder or On-call seat if: * You manually downgrade them in [Settings > Users](https://app.incident.io/~/settings/users) * Their account is deactivated (via Slack, Microsoft Teams, or SCIM) — see [Deleting users](/admin/delete-users) ## Adding seats How you add seats depends on your plan. ### Team plan On the **Team** plan, just assign seats as you need them. We'll bill you prorated on your next invoice (see [Billing methods](/admin/billing#monthly-billing)). ### Pro and Enterprise plans On the **Pro** and **Enterprise** plans you can always purchase additional On-call and Responder seats by contacting your account manager. You can also purchase On-call seats self-serve from [Settings > Billing](https://app.incident.io/~/settings/billing). Additional seats will be purchased, provisioned immediately and invoiced on your next invoice. * Only users with Admin or Billing permissions can purchase seats. * Seats will be charged pro rata to the end of your subscription term ([co-term](/admin/billing#annual-billing)). * We will send an invoice for the purchased seats to your billing contact within a few days. ## Removing seats ### Team plan On the Team plan, you can remove seats at any time. ### Pro and Enterprise plans On Pro and Enterprise plans, seat counts are set by your contract. To reduce them, speak to your account manager — changes take effect at your next renewal. # Managing sensitive data Source: https://docs.incident.io/admin/managing-sensitive-data Remove or redact sensitive information from alerts, escalations, incidents, and AI features. When responding to incidents, sensitive information can end up in places you didn't expect — alert payloads, Slack messages, escalation details, or call transcripts. incident.io gives you tools to prevent sensitive data from entering the platform, erase it when it does, and redact it before it reaches AI models. ## Prevention The best approach is to stop sensitive data from reaching incident.io in the first place. * **Use IDs, not raw values.** If your monitoring detects an issue with a customer, send a customer ID (e.g., `customer_12345`) rather than their name, email, or account details. Responders can look up details in your internal systems. * **Keep PII out of your logs.** If alerts are triggered from log queries, sensitive data in your logs will end up in your alerts. * **Be mindful in Slack and Teams.** It's common for data to be pasted into an incident channel without checking for sensitive fields. You can build a [workflow](/workflows/getting-started) that posts a reminder in new incident channels, prompting responders to avoid sharing sensitive data. ## Erasing data If sensitive information has already made its way into incident.io, you can permanently erase it from several places. Erasing data is permanent and cannot be undone. The original content is replaced with a placeholder value. By default, only account owners can erase data. You can grant this to other roles by enabling the **Permanently erase data** permission in your [custom RBAC configuration](/admin/user-permissions). ### Alerts Alerts are the most common way sensitive data enters incident.io, because they're often generated automatically from monitoring tools. To erase an alert, navigate to the alert in the dashboard and select **Erase data** from the overflow menu. This permanently replaces the alert's title, description, and attributes. Any linked escalation will also have its title and description erased. If sensitive data keeps arriving from a particular alert source, update the source configuration to strip it out before it reaches incident.io. ### Escalations To erase an escalation, navigate to it in the dashboard and select **Erase data** from the overflow menu. The title and description are replaced with a placeholder value. ### Incident details Most incident fields are directly editable, so you can clean up sensitive data without erasing: * Edit the **name**, **summary**, and any **custom field** values from the incident page * Edit any **incident updates** that reference sensitive information ### Messages in Slack and Microsoft Teams When a message in an incident channel is edited or deleted in Slack or Microsoft Teams, any copy stored by incident.io is updated to reflect the change. So if sensitive data is posted in the channel, editing or deleting it at the source removes it from incident.io too. ### Activity log and timeline Changes to an incident are recorded in the activity log and timeline. To erase sensitive data from timeline entries: 1. Open the incident and go to the **Post-incident** tab 2. Click the pencil icon to enter edit mode under **Timeline** 3. Use **Erase data** in the overflow menu of the relevant entry ## AI data redaction incident.io has Zero Data Retention agreements with all AI providers (OpenAI, Anthropic, and Google Vertex), meaning they don't store any inputs or outputs and don't use them for training. On top of this, you can enable automatic redaction that strips sensitive patterns from incident channel messages, attachments read by AI, and new spoken Scribe transcript entries. When enabled, matches are replaced with `[REDACTED]` before the content reaches an AI model. Scribe applies redaction as each transcript entry is processed. The redacted value appears in the transcript and is used by Scribe summaries, key moments, and current topic. Turning on a strategy does not rewrite existing transcript entries. Available redaction strategies: | Strategy | What it matches | | ------------------------------ | ------------------------------------------------------------------------------------ | | **Credit card numbers** | Common credit card formats (Visa, Mastercard, Amex, etc.) — 13 to 19 digit sequences | | **US Social Security numbers** | Numbers in XXX-XX-XXXX format | | **Phone numbers** | Phone numbers in various formats, including international numbers | You can enable any combination of these strategies. Redaction can occasionally remove data that isn't actually sensitive (e.g., a long number that resembles a credit card). This may reduce AI accuracy in some cases. Redaction is off by default. To turn it on for your account, contact your account team or email [help@incident.io](mailto:help@incident.io). Once it's available, you choose which strategies to apply in [Settings → AI governance](https://app.incident.io/~/settings/ai-governance#ai-data-redaction). For more on how incident.io uses AI, see [AI usage](/admin/ai-usage). ## Audit trail All data erasure actions are recorded in the [audit log](/admin/audit-logs), including who performed the erasure and when. The erased content itself is not included in audit log entries. ## Need help? If you need to remove data that isn't covered above, contact us at [help@incident.io](mailto:help@incident.io) and we'll help you clean it up. Yes. Erasing replaces the original content with a placeholder value and cannot be undone. All erasure events are recorded in the [audit log](/admin/audit-logs). By default, only account owners. You can grant this to other roles using the **Permanently erase data** permission in [custom RBAC](/admin/user-permissions). If you decide to stop using incident.io, we're happy to delete application data upon request. Contact us at [help@incident.io](mailto:help@incident.io). Yes. When enabled, sensitive patterns are stripped from supported content before it is sent to AI providers. # Mobile access restrictions Source: https://docs.incident.io/admin/mobile-access-restrictions Restrict what can be seen on the mobile app from unmanaged devices. Mobile access restrictions redact sensitive information in the incident.io mobile app when users sign in from personal devices. Responders can still acknowledge pages and manage escalations, but won't see full incident details until they're on a managed device. This feature is available for our enterpise customers, reach out to your account team to get it enabled. ## How it works Mobile access restrictions use a secondary SAML provider dedicated to mobile app authentication. This lets you enforce different access policies for managed and unmanaged devices: * **Primary SAML provider**: locked down to managed devices only via your IdP's conditional access policies, giving full access to the incident.io dashboard * **Secondary SAML provider**: used by the mobile app, allowing authentication from personal devices with redacted data When a user signs into the mobile app through the secondary provider, sensitive information is automatically redacted. Core context like alert titles, incident names, and team names remain visible so responders can identify and act on pages, but detailed information like incident summaries, custom fields, timeline activity, and follow-ups is hidden. ## Setting up mobile access restrictions To enable mobile access restrictions: 1. Make sure [SAML SSO](/admin/saml-sso) is configured and working for your organization 2. Contact incident.io to enable the feature — we'll work with you to set up the secondary SAML provider 3. Configure your IdP's conditional access policies so the primary SAML provider only permits managed devices 4. Navigate to [Settings → Security](https://app.incident.io/~/settings/security) to review the mobile access configuration # Okta SCIM group setup Source: https://docs.incident.io/admin/okta-scim Step-by-step guide to connecting Okta SCIM with incident.io For organizations that use a SCIM-based IdP (identity provider) solution, incident.io allows you to manage users and permissions from your IdP. Additionally your users and user groups will be synced to the incident.io catalog, making them available for use in workflows and in [our on-call product](https://incident.io/on-call). To integrate with SCIM, navigate to **Settings > Integrations** and search for **Okta**. Click the **Connect** button in the automatic user provisioning section. This will launch the SCIM directory sync flow, powered by WorkOS. You can select a provider from the list, or manually enter the details of your own provider if required. In this guide, we'll use **Okta** but WorkOS provides comprehensive instructions on the next step for all of their supported providers. Follow the steps to create an app in Okta and take care to ensure your push groups are correctly configured. It's easy to create an app, assign groups to the app and then fail to push groups to the app. If you require more detailed steps on this setup process, you can consult the WorkOS guides here * For [Okta](https://workos.com/docs/integrations/okta-scim/5-assign-users-and-groups-to-your-application), this article * For [Google](https://workos.com/docs/integrations/google-directory-sync/4-select-which-groups-to-sync-to-your-application), this article * For others, search for the relevant provider [here](https://workos.com/docs/integrations) *Note: Common issues with Okta push group setup are covered in* [this guide](https://support.okta.com/help/s/article/Group-Push-Common-Issues?language=en_US) *.* Once you've completed the flow and successfully verified your credentials, your SCIM directory will begin to sync with incident.io. This can take some time. Once your directory is synced, you'll see the success message: Clicking **Done** will return you to the incident.io Settings page and allow you to map your SCIM groups to roles in incident.io. Click **Add assignment** to map one of your SCIM groups to an incident.io role. Once you've assigned your SCIM groups to roles, you're ready to click **Continue** and confirm your selection. At this point, your incident.io users and groups will be managed via SCIM and you will no longer be able to assign roles manually in the incident.io UI. In addition, your SCIM groups and assigned users will be visible in the catalog, making them available for use in workflows across the product. # Policies Source: https://docs.incident.io/admin/policies Define rules and reminders for on-call setup, debriefs, follow-ups, and post-mortems You can leverage policies to define rules about how your organization's on-call and incident management program should be setup and run. This includes policies around: * [Debriefs](/post-incident/debriefs) being scheduled and/or completed * [Follow-ups](/post-incident/follow-ups) being assigned and/or completed * [Post-mortems](/post-incident/postmortems-overview) being exported and/or completed * On-call users having a specific [notification setup](/on-call/notification-policies) * [On-call schedules being covered](/on-call/coverage-policies) around the clock (24/7), with no gaps If any of the policy rules are not met, we'll send users [reminders](#notifying-users-about-tasks) to ensure they are addressed within a specified timeframe. In addition, you can set up [policy reports](#policy-reports) to see which tasks are still outstanding across your organization. Policies are available on Pro and Enterprise plans. ## Creating a policy To create a policy, go to [Settings → Policies](https://app.incident.io/~/settings/policies). From there, it's recommended to leverage one of our default policy templates. If you require a more complex setup, you can set up your own policy via `Create new policy` button. Policy template picker showing debrief, follow-up, and on-call notification templates ## Viewing outstanding policy tasks Once your policy is configured, you'll want to see which tasks aren't yet completed — for example, follow-ups still outstanding 30 days after resolve. A few places help you track this: * **The team page**: each team's **Tasks** tab lists every open task for the team, including policy violations and post-incident tasks, with filters and the associated policy shown for each one. The **Overview** tab also has an at-a-glance **Open tasks** panel. * **Per-policy**: within each policy's configuration, the right side panel shows outstanding or dismissed tasks for that specific policy. * **In context**: within an individual incident, or within the Post-incident section of the dashboard. * **Policy reports**: scheduled summaries delivered to Slack or email (see [Policy reports](#policy-reports)). A policy configuration with outstanding and dismissed tasks in the side panel *** ## Policies and private incidents By default, policies don't run on [private incidents](/incidents/private-incidents). This is intentional: private incidents are invitation-only, so evaluating them everywhere could surface violations to people who can't access the incident. If you want a policy to cover private incidents too, you can opt in per policy using the **Also include private incidents** toggle when [creating or editing a policy](#creating-a-policy). Enabling it requires the **Manage policies** permission. The toggle only appears for incident-based policy types — follow-ups, post-mortems, and debriefs. It doesn't apply to on-call notification policies, which aren't scoped to a specific incident. ### What happens when it's enabled When a policy includes private incidents: * **Violations are only ever shown to people who can access the incident** — in notifications, dashboards, task lists, and counts alike. * **We only assign violations to users with access to the incident.** We treat an assignee who can't access it as unset and fall through to the next contact in the assignee fallback chain. If nobody in the chain can access the incident, the violation is still tracked, but nobody is notified. Set a reliable fallback assignee — like the incident lead — who's near-guaranteed to have access, so violations on private incidents don't go unnotified. Before enabling, you can **preview the impact**. The preview is filtered to incidents you can personally access. Access to a private incident's violations follows the incident itself: you need to be a member of the incident, on a team that's been granted access, or hold the **Manage private incidents** permission. *** ## Notifying users about tasks Within each policy's configuration, you will be able to set who is the assignee (ie. who will be reminded to complete this particular task). For example this could mean: * For On-call notifications, it would be the on-call user * For follow-up completion, this could be the follow-up owner * For post-mortem completion, this could be the incident lead You can configure when the assignees should be notified about tasks as well. For example, notified follow-up owners: * 2 days before it's due * Notifications *before* a due date don't apply to on-call **notification** policies (the ones about a responder's notification setup). This is because you are either in violation of that policy or not — there isn't a way to know you will be in violation beforehand (we aren't mind readers yet!). They *do* apply to [schedule coverage policies](/on-call/coverage-policies), where a gap has a known future start. * the day it's due * 1 day after it's due * etc. We will then notify these users of their outstanding tasks via Slack, email and the home page (in the right side bar) per the policy's notification configuration. A Slack notification reminding a user to update their on-call notification settings *** ## Policy reports Policy reports are scheduled summaries of outstanding policy violations, so the right people don't have to check dashboards by hand. Reports are organization-wide — there's no per-user targeting — and you configure them from [**Settings → Policies**](https://app.incident.io/~/settings/policies). ### Cadence Choose how often a report runs: * **Daily** * **Weekly** — pick the day of the week * **Monthly** — pick the day of the month For every cadence, you also set the hour and timezone the report is sent. ### Delivery channels Where a report can be delivered depends on whether your organization uses Slack or Microsoft Teams: * **Slack organizations**: one or more Slack channels, one or more email addresses, or both. * **Microsoft Teams organizations**: email only. ### What's in a report Each report has a header followed by one section per policy, marked as compliant (✅) or as having violations (❗). * **On-call readiness reports** group by the violating **user**. * **All other reports** group by the violating **incident**. Each section shows up to the 5 most recent violating incidents, with deep links so people can jump straight to what needs attention. A weekly policy review message in Slack showing no violations ### Suppressing empty reports Turn on **suppress if there are no violations** and no report is sent when there are zero outstanding violations — so a clean week doesn't create noise. This is on by default for new reports. ### Reports and private incidents By default, policy reports **don't include private incidents** — even for policies that are set to run on private incidents. To include them, an authorized user can enable the **Include private incidents** option, which is shown when a report includes at least one policy that runs on private incidents. If a report that includes private incidents is delivered to a **public** Slack channel, its reference and name become visible to everyone in that channel. # Announcements Source: https://docs.incident.io/admin/restrict-announcement-management Let teams manage their own announcement rules and post templates Give a team the **Manage announcements** permission on a team role, so it only applies to the [announcement rules and post templates](/admin/announcements) that team owns. Set the owning team using the **Announcement rule owner** field (or **Template owner** for a template) when you create or edit it at [**Settings → Announcements**](https://app.incident.io/~/settings/announcements). Once owned, only members of an owning team with the permission, or anyone who holds it account-wide, can manage it. **Manage announcements** is in the **Standard** role by default, so you'll need to remove it there first. Changing who owns a rule or template is an account-level action. It needs **Manage announcements** account-wide (typically an admin), so a team-role holder can manage what their team already owns but can't reassign it to another team. Your **default** template can't be owned by a team, and choosing which template is the organization default is always an account-level action. ### Announcement rules that run on private incidents Setting an announcement rule to announce private incidents requires a different permission: the **Manage announcement rules that run on private incidents** permission. This is a broader version of the **Manage announcements** permission. It also covers creating, editing, and deleting announcement rules, so someone who holds it doesn't need **Manage announcements** as well. It can be granted through a team role, so a team can manage rules that announce *their own* [private incidents](/incidents/private-incidents). A team-role holder needs it for every one of the rule's owning teams. Announcing **all** private incidents (not just an owning team's) always requires the **Manage announcement rules that run on private incidents** permission account-wide, since it reaches incidents no team has been given access to. See [Team roles](/admin/team-roles) for the full setup, and [Announcing private incidents](/incidents/announcing-private-incidents) for the per-rule options. ## FAQs They can be managed by anyone who holds **Manage announcements** account-wide. Until you remove it from your base roles (typically **Standard**), that's everyone. Yes. You can assign multiple owning teams, and a member of any one of them (with the permission granted to that team) can manage it. Anyone who holds **Manage announcements** account-wide can manage any rule or template that doesn't run on private incidents, regardless of which team owns it. Rules whose scope includes private incidents also need the **Manage announcement rules that run on private incidents** permission. See [above](#announcement-rules-that-run-on-private-incidents). Yes, if they hold the **Manage announcement rules that run on private incidents** permission for the rule's owning team(s). They can then set the rule to **Private incidents for owning teams**, the private incidents those teams can access. Announcing **all** private incidents requires the permission account-wide. You need the **Manage announcement rules that run on private incidents** permission for *every* owning team (or account-wide). On a rule owned by teams A and B, holding it for only A isn't enough. This is stricter than **Manage announcements** itself, where holding it for any one owning team is sufficient, because the rule can announce the private incidents of *any* owning team, so whoever sets the scope needs authority over all of them. # Catalog types and entries Source: https://docs.incident.io/admin/restrict-catalog-management Let teams manage their own catalog types and entries As you lean on the catalog as a source of truth, you often don't want everyone able to edit everything in it. Team ownership lets you hand each team control of the catalog types it's responsible for, without giving it the keys to the rest of the catalog. For example, you might want only the platform team to edit the **Services** type. You do this by giving a catalog type an owning team, then granting the relevant catalog permission to that team's role. ## The permissions Six catalog permissions can be granted on a team role, so they only apply to the types that team owns: * **Create catalog types**, **Edit catalog types**, and **Delete catalog types** cover the types themselves * **Create catalog entries**, **Edit catalog entries**, and **Delete catalog entries** cover the entries of any type the team owns These permissions are **not** in the **Standard** role, so a catalog type with no owning team is managed only by people who hold the permission account-wide, exactly as today. ## Setting an owning team Set a catalog type's owner in the **Catalog type owner** field when you create or edit a type in [**Catalog**](https://app.incident.io/~/catalog). You can assign more than one owning team. The Catalog type owner field on the catalog type form, with a team
selected Once a type has an owning team, only members of that team with the relevant permission, or anyone who holds it account-wide, can change the type or edit its entries. System-managed catalog types can't be owned by a team. Their structure is fixed by incident.io, so changes to them always need the account-wide permission. ## Example: letting a team manage its own services Say you want the platform team to own the **Services** type: they should be able to create, edit, and delete service entries, but no one outside the team should be able to change them. 1. In [**Catalog**](https://app.incident.io/~/catalog), open the **Services** type and set the **Catalog type owner** to the platform team. 2. At [**Settings → Permissions → Team-level**](https://app.incident.io/~/settings/permissions/team), create (or edit) a team role that includes the **Edit catalog entries** permission (add the **Create catalog entries** and **Delete catalog entries** permissions if they should manage the full set). 3. On the platform team's **Members** tab, assign that role to the people who should manage services. Now the platform team manages the Services type and its entries, while everyone else sees those controls disabled with a tooltip explaining they don't have permission. See [Team roles](/admin/team-roles) for the general setup and how to remove any account-level default that would otherwise let everyone edit. ## FAQs Reassigning ownership always requires the **Edit catalog types** permission granted account-wide. A team can manage a type they own and its entries, but they can't hand the type to another team or remove their own team from it. Nothing changes for them. They can only be managed by people who hold the relevant catalog permission account-wide, the same as how every catalog type behaves today. Yes. You can assign multiple owning teams, and a member of any one of them (with the permission granted to that team) can manage the type and its entries. Both GitHub and Terraform can define the owning teams for a catalog type as part of their config, so externally-managed types can be team-owned just like ones you create in the dashboard, and their entries are gated by that ownership. You can also restrict which types a given integration can modify by giving its API key only team-scoped catalog permissions. A key with team-scoped permissions can create, edit, and delete types (and their entries) for the teams it's scoped to, but nothing else. See [API keys](/admin/api-keys) for how team-scoped permissions work. Yes. Anyone who holds the permission account-wide can manage any catalog type or entry, regardless of which team owns it. # Alerts and escalations Source: https://docs.incident.io/admin/restrict-escalation-response Keep responding to a team's alerts and escalations within that team By default, anyone in your organization can resolve any alert and acknowledge, snooze, or cancel any escalation. For most teams that's the right thing: anyone can jump in and help out. As you grow, you might want tighter control to avoid someone accidentally taking actions on alerts or escalations outside their remit. In incident.io, you can restrict acting on alerts and escalations to only the team responsible for them, so that someone in an unrelated team can't accidentally resolve a page or silence an escalation they don't understand. This guide walks through setting that up. There's one important exception: anyone who's actually paged by an escalation can always acknowledge or snooze it, so you can never be paged by something you're not allowed to silence. The permission is **Take actions on alerts and escalations**, which covers resolving alerts and acknowledging, snoozing, or cancelling escalations. Ownership comes from the **Team attribute** on an alert, the same attribute used for [routing](/alerts/team-routing); manual escalations fall back to the escalation path they were sent to. See [Team roles](/admin/team-roles) for how team-based permissions work in general. ## Grant the permission to a team role At [**Settings → Permissions → Team-level**](https://app.incident.io/~/settings/permissions/team), create or edit a team role and select **Take actions on alerts and escalations**. Assign it to the people on each team who should act on that team's alerts and escalations. Creating a team role with the 'Take actions on alerts and escalations' permission selected, showing a warning that
all users still have the permission via the Standard
role ## Remove it from the Standard role This permission is in the **Standard** role by default, so until you remove it there everyone still holds it account-wide and the restriction has no effect. At [**Settings → Permissions → Account-level**](https://app.incident.io/~/settings/permissions), edit **Standard** and uncheck **Take actions on alerts and escalations**. Editing the Standard role with the 'Take actions on alerts and escalations' permission
highlighted ## Check it's working Someone who isn't on the owning team will see the resolve and acknowledge buttons disabled, with a tooltip explaining why. Members of the owning team, and anyone paged by the escalation, can act as normal. A disabled resolve button with a tooltip explaining the user isn't on the owning
team ## FAQs They have no owning team, so once you've restricted the permission, only people who hold it account-wide (such as an admin) can act on them. If you want a team to handle these alerts, make sure the alert source extracts a Team attribute. See [Alerts and teams](/alerts/team-routing). Yes. Anyone notified by an escalation can always acknowledge or snooze it, regardless of team membership. This makes sure a misrouted page can never reach someone who then can't silence it. Ownership falls back to the escalation path the escalation was sent to. It can be responded to by anyone who was paged, anyone who holds the permission account-wide, and members of the team that owns that escalation path. No. Alerts are still auto-resolved as normal, regardless of who triggers it. These permissions only govern people resolving alerts directly. Yes. Anyone who holds the permission account-wide can act on any alert or escalation. This is useful for keeping a small set of administrators who can step in across teams. # Incident types and lifecycles Source: https://docs.incident.io/admin/restrict-incident-type-management Let teams manage their own incident types and lifecycles Give a team the **Manage incident types** permission (and **Manage incident lifecycles** for lifecycles) on a team role, so it only applies to the incident types and lifecycles that team owns. Set an incident type's owner in the **Incident type owner** field at [**Settings → Incident Types**](https://app.incident.io/~/settings/incident-types), and a lifecycle's owner in the **Lifecycle owner** field at [**Settings → Respond → Lifecycle**](https://app.incident.io/~/settings/lifecycle). Once owned, only the owning team, or anyone with the permission account-wide, can change it. These permissions are **not** in the **Standard** role, so a type or lifecycle with no owning team is managed only by people who hold the permission account-wide, exactly as today. Your **default** lifecycle can't be owned by a team: it applies to every incident, so changes to it always need the account-wide permission. See [Team roles](/admin/team-roles) for the full setup. ## FAQs Reassigning ownership always requires the **Manage incident types** permission granted account-wide. A team can manage the configuration of a type they own, but they can't hand it to another team or remove their own team from it. Nothing changes for them. They can only be managed by people who hold the **Manage incident types** permission account-wide, the same as how every incident type behaves today. Yes. You can assign multiple owning teams, and a member of any one of them (with the permission granted to that team) can manage the type. Form overrides for a team-owned incident type follow that type's owning teams, so only the owning team can override or edit them. Organization-wide forms that aren't tied to a specific type still need the **Manage incident types** permission granted account-wide. See [Incident forms](/admin/incident-forms). Yes. Anyone who holds the permission account-wide can manage any incident type or lifecycle, regardless of which team owns it. # Workflows Source: https://docs.incident.io/admin/restrict-workflow-management Let teams manage their own workflows Give a team the **Manage workflows** permission on a team role, so it only applies to the workflows that team owns. Set the owner from the **Owned by** control at the top of the workflow editor (it reads **No team** until you set one), or from the **Advanced settings** panel. Once a workflow has an owning team, only members of an owning team with the permission, or anyone who holds it account-wide, can edit, enable, disable, or delete it. **Manage workflows** is in the **Standard** role by default, so out of the box everyone can manage every workflow. You'll need to remove it from **Standard** before ownership restricts anything. ### Workflows that run on private incidents Setting a workflow to run on private incidents needs a second permission, **Manage workflows that run on private incidents**, on top of **Manage workflows**. This can be granted through a team role, so a team can manage workflows that run on *their own* [private incidents](/incidents/private-incidents). A team-role holder needs it for every one of the workflow's owning teams. Running a workflow on **all** private incidents (not just an owning team's) always requires **Manage workflows that run on private incidents** account-wide, since it reaches incidents no team has been given access to. Running on **private escalations** is likewise account-level only, and a team role never grants it. See [Team roles](/admin/team-roles) for the full setup, [Workflows](/workflows/getting-started) for more on ownership, and [Workflows on private incidents](/incidents/private-incident-workflows) for the per-workflow options. ## FAQs Reassigning ownership always requires the **Manage workflows** permission granted account-wide. A team can manage a workflow they own, but they can't hand it to another team or remove their own team from it. They can be managed by anyone who holds **Manage workflows** account-wide. Until you remove it from your base roles (typically **Standard**), that's everyone. Yes. You can assign multiple owning teams, and a member of any one of them (with the permission granted to that team) can manage the workflow. Yes. Anyone who holds **Manage workflows** account-wide can manage any workflow, regardless of which team owns it. Yes, if they hold the **Manage workflows that run on private incidents** permission for the workflow's owning team(s). They can then set the workflow to run on **Private incidents for owning teams**, the private incidents those teams can access. To set a workflow to run on **all** private incidents requires the permission account-wide. You need the **Manage workflows that run on private incidents** permission for *every* owning team (or account-wide). On a workflow owned by teams A and B, holding it for only A isn't enough. This is stricter than **Manage workflows** itself, where holding it for any one owning team is sufficient, because the workflow can run on the private incidents of *any* owning team, so whoever sets the scope needs authority over all of them. # Role restrictions Source: https://docs.incident.io/admin/role-restrictions Control who can be assigned to incident roles and what they can do Role restrictions let you control who's eligible to be assigned specific roles during an incident, and what permissions each role grants. For example, you may want only members of your Security team to be the Incident Lead for Security incidents, and grant that role permission to manage the incident lifecycle. Restrictions and permissions are configured per [incident type](/incidents/incident-types), so you can tailor each role to match the needs of different incident types. Role-level permissions are available on the [Enterprise plan](https://incident.io/pricing). ## Setting up To configure a role, head to **[Settings → Types](https://app.incident.io/~/settings/incident-types)** and select the incident type you want to configure. Scroll to the **Roles** section. Roles section with no restrictions Click the three-dot menu on any role and select **Configure role** to open the configuration drawer. The drawer has two sections: **Who can get this role?** and **Grant additional permissions**. Role restrictions drawer with no restrictions ## Who can get this role? Restrictions are built using the expression builder. Select a user attribute to restrict on, choose an operator, and pick the values to match against. Filter picker showing available restriction variables Common examples include restricting a role to a specific list of users, or to members of a particular team. You can also restrict based on any user attribute or custom catalog type connected to users. You can combine multiple conditions: * **Conditions within the same group** use AND logic - all conditions must be met * **Separate groups** use OR logic - any group can match Role restrictions drawer with restrictions applied Once saved, restrictions are displayed beneath each role in the Roles section so you know which roles have restrictions set. Roles section with restrictions applied Users who don't meet a role's restrictions will appear disabled in role assignment dropdowns. If someone attempts to assign a restricted user directly, an error message explains why the assignment can't be made. Restrictions are enforced wherever incident roles are assigned: * **Slack** - when assigning roles via `/inc role` or the channel announcement buttons * **Microsoft Teams** - when assigning roles via channel announcement buttons * **Dashboard** - when picking roles during incident declaration or while managing an active incident * **Workflows** - any steps that assign roles to ineligible users will cause the workflow to fail ## Grant additional permissions The **Grant additional permissions** section lists permissions you can grant to users holding that role during incidents of this type. Check the ones you want to grant. For example, you might grant the Incident Lead permission to manage the incident lifecycle and update fields, while giving the Communications Lead only permission to update the timeline. Grant additional permissions section with some permissions checked and a tooltip showing account-level
roles Permissions granted here are layered on top of any that a user already has through their account-level base or custom roles — you can grant additional permissions to an incident role, but not remove ones a user already has. Each permission shows which account-level roles already grant it, so you can see what a user would have access to regardless of their incident role. If you're moving permissions from account-level roles to incident roles, set up your incident role permissions **first**, then remove them from the account-level roles. This avoids a gap where users temporarily lose access to permissions they need. ### All other participants Below the named roles, there's an **All other participants** entry. Use this to configure permissions for anyone participating in the incident who doesn't hold a specific role. This is useful for tightening permissions on sensitive incident types — for example, granting permission to update follow-ups or manage post-mortems only to the Incident Lead, while leaving other participants with more limited access. ## Workflows If you have workflows that assign incident roles, adding restrictions may cause those workflow steps to fail. A workflow step will fail if the user it tries to assign doesn't meet the role's restrictions. When you have active workflows that assign roles, you'll see a warning banner in the Roles section of your incident type settings reminding you of this. Review your [workflows](/workflows) after adding role restrictions to make sure the users being assigned still meet the new requirements. ## FAQs No - role restrictions are configured per incident type. You'll need to set up restrictions individually for each type where you want them. The role dropdown will show all users as disabled. Consider broadening your restrictions if this happens. # SAML SSO Source: https://docs.incident.io/admin/saml-sso Manage access to the incident.io dashboard via your identity provider Organizations on Enterprise and newer Pro plans can enable SSO using SAML to manage access to the incident.io dashboard via an identity provider (IdP) like Okta or Microsoft Entra ID (formerly Azure AD). All plans have access to SSO via sign-in with Slack. If your Slack workspace is configured with SAML, incident.io uses that automatically. ## Setting up SAML To set up SAML, you need Admin or Owner permissions in incident.io, plus admin access to your IdP. If you're setting up incident.io for the first time, sign in using Slack first, then enable SAML. Admins can perform setup if they have the **Manage security settings** permission. 1. Navigate to [Settings → Security](https://app.incident.io/~/settings/security) and click **Connect** 2. Choose your identity provider from the list and follow the setup instructions 3. Test your connection using the button provided ### Configuring domains Configure which user email domains authenticate through SAML. By default, only the domain of the user performing setup is configured. Click **Configure domains** to add additional domains for your organization. ## Logging in with SAML Once SAML is enabled, **all users** in your organization must sign in using SAML. Users attempting to sign in with Slack will be redirected to your IdP to confirm their access. To sign in, click **Login with SAML SSO** and enter your email address. You'll be redirected to your IdP to authenticate before being directed back to incident.io. ### Dashboard-only users When users sign in via SAML, incident.io attempts to find their associated Slack account in your workspace. If a user doesn't have access to Slack, or their email addresses don't match, they're created as dashboard-only users. These users cannot be assigned roles, referenced in workflows, or receive subscriptions as Slack messages. ## Disabling SAML Admins and organization owners can disable SAML in [Settings → Security](https://app.incident.io/~/settings/security). To keep access during an identity provider outage, enable [sign in with email](/admin/sign-in-with-email) before you need it. If you've locked yourself out, contact [help@incident.io](mailto:help@incident.io) for assistance. If you remove the incident.io app in your IdP, also remove it in incident.io to prevent authentication issues. When you disable SAML, all users in your organization will need to sign back in using Slack. ## Mobile app sign-in When SAML is enabled, it is enforced for mobile app sign-in too. Users signing in on the mobile app — whether directly or by scanning a QR code from the web dashboard — are redirected through your identity provider. Admins can control whether QR code sign-in is available in **Settings → Security** under **QR code mobile login**. Disabling this prevents users from using the QR code flow, but does not affect direct sign-in through the mobile app. ## FAQs We use WorkOS to provide SAML, which maps users by ID and email address. When logging in, we first check the user's ID. If we don't find a match, we look up by email address and associate the new ID for subsequent logins. This means that if the ID changes during a migration but the email stays the same, no duplicate users are created — the migration is seamless. However, if both the ID and email change (e.g. after a name change), the user will appear as a new account and we cannot merge them. Yes — SCIM can be set up independently from SAML but can use the same identity provider. See [SCIM provisioning](/admin/scim) for details. Yes — if your organization uses managed device policies, you can configure a secondary SAML provider to redact sensitive data on the mobile app. See [Mobile access restrictions](/admin/mobile-access-restrictions) for details. # Sandbox environments Source: https://docs.incident.io/admin/sandbox-environments Set up a separate incident.io environment to test configuration. A sandbox environment is a separate, fully-featured incident.io organization designed for safely testing configuration before rolling it out in production. ## How it works The sandbox is a completely independent incident.io organization from your production instance, connected to a completely different Slack workspace or Microsoft Teams tenant for testing purposes. Because it's a separate organization, configuration cannot be directly promoted from sandbox to production. Teams typically experiment in the sandbox, then recreate what works in production. You can use [Terraform](https://registry.terraform.io/providers/incident-io/incident/latest/docs) to manage configuration as code across both environments and automate this. ## How to request a sandbox environment Sandbox environments are available to customers on the **Enterprise** plan. To set one up: 1. **Have a test Slack or Teams workspace** — set up a new Slack workspace (a free workspace is fine) or designate a separate Microsoft Teams tenant for testing. 2. **Install incident.io** — install the incident.io app in the new workspace via [incident.io/trial](https://incident.io/trial). 3. **Let us know** — share the workspace name or URL with your Customer Success Manager, or contact [support](mailto:help@incident.io), and we'll mark the account as a sandbox. If you use SAML SSO, avoid enabling it on your sandbox environment. SAML will automatically redirect users to your production instance based on their email domain. See [SAML SSO](/admin/saml-sso) for more details. If you just need to test your configuration or run a practice incident without setting up a full sandbox, use [test incidents](/incidents/test-incidents) instead. # SCIM (Automatic user provisioning) Source: https://docs.incident.io/admin/scim Sync users, roles, and permissions from your identity provider You can use SCIM (System for Cross-domain Identity Management) in incident.io to automatically provision users and manage their permissions. ## What does enabling SCIM do? ### Without SCIM By default, without SCIM, incident.io automatically creates users when they join incident Slack channels, or when they sign in to the web dashboard using Slack or SAML. When a user is deactivated in Slack, they'll be automatically deactivated in incident.io. Without SCIM, you manually grant users additional base roles and custom roles within incident.io. When a new user joins, an owner/admin (or other user with a custom role that can manage permissions) can manually assign that user some additional permissions by going to [app.incident.io/\~/settings/users](https://app.incident.io/~/settings/users). See [user roles and permissions](/admin/user-permissions) for more details. ### With SCIM When SCIM is installed, users are automatically created in incident.io when they are assigned in the application in your identity provider (IdP). If a user is unassigned the application in your IdP, they'll be deactivated in incident.io. Additionally, user permissions are automatically managed by your identity provider, and are no longer editable in incident.io. This means you don't have to manually assign roles to new users, and don't have to manually downgrade users in incident.io if their access levels change in your identity provider. See [user roles and permissions](/admin/user-permissions) for more details. ## Installing SCIM To install SCIM, you'll need to be an owner in incident.io (or have a custom role that can manage security settings), and have admin permissions in your identity provider. 1. Go to your user settings, and [open the SCIM tab](https://app.incident.io/~/settings/users/scim) and click the `Install` button 2. Choose your identity provider from the list and follow the steps to set up your connection. We're enabling providers as we confirm they send appropriate group membership updates. If you see a message saying your provider is not yet supported, contact us at [help@incident.io](mailto:help@incident.io). 3. Define the relationships between groups in your identity provider and permissions in incident.io. You only need to do this for groups that you'd like to give elevated permissions to, by default, all users are given the 'Standard' role. To illustrate this further, here are some examples: * I want all people in the `Engineers` group to have access to [incident.io](http://incident.io/) but not have advanced permissions for administrative tasks. I don't need to define any mapping for this case, as this is the default. The default 'Standard' role assigns all new users a 'Viewer' seat. Learn more about [seat types](/admin/seat-types). * I want myself and other `Incident Managers` to be admins in incident.io, so I add an assignment, choose the `Incident Managers` group from my identity provider (e.g. Okta, Microsoft Entra ID) and then assign them the `Admin` role. * I want our IT team to be able to manage SCIM and SAML, so I add an assignment, choose the `IT` group from my identity provider and then assign them a custom role with the `Can manage security settings` permission. You need at least one group assigned the 'owner' permissions. If you're not in that group, or you remove yourself from it, you'll be locked out of your SCIM settings. If this happens, contact us at [help@incident.io](mailto:help@incident.io). 4. Confirm your SCIM setup. Once you've confirmed this step, we'll start creating users from SCIM and re-assigning any permissions that no longer line up with what you've defined in your SCIM group to role mappings. ## FAQs SCIM is available to customers on our Enterprise plan - for more pricing details, see [pricing](https://incident.io/pricing/). When you install SCIM, we'll link existing users to SCIM users using their email address. We'll also update their permissions as defined by the group to role mappings you provide in the SCIM settings page. If a user was previously an admin, and they're not a member of the groups that are assigned the admin role, they'll be downgraded to viewers/responders. If a user exists in incident.io but not in SCIM, they'll retain their existing role and will be marked as 'Unlinked' in the user list. If you don't want these users to have access to the incident.io dashboard at all, we recommend you install SAML too and link that to the same identity provider (e.g. Okta) so that only users who are assigned the incident.io app can access the dashboard. When you uninstall SCIM, users will be left in their current state. So if you are an Owner, and you uninstall SCIM, you'll retain that owner role. Users will not be deactivated. No, once SCIM is installed, it becomes the source of truth for a user's permissions. If you want to elevate a user's permissions, you'll need to add them to an appropriate group in your identity provider. As our application runs both in Slack and on our web dashboard, it's possible that a user can be deactivated in Okta, but still be an active member of your organization's Slack workspace. If this happens, the user will be treated as 'active' until they're deactivated in Slack. If you don't want this, we recommend you manage your Slack users with the same identity provider set up as you manage your incident.io users. Yes! Once you have set up SCIM, there's a section on the configuration page where you can define your on-call seat assignments. This lets you pick groups which are automatically given on-call seats. Once you've selected a group for on-call seats, you'll no longer be able to manually control those group members' on-call seats - they will be automatically assigned seats. Adding new members to those groups will automatically grant them seats. If a member leaves a group which has been assigned seats, that user will retain their seat until it's manually revoked. Yes — if you have both SAML and SCIM set up, users can sign in via your identity provider and be added to schedules and escalation paths without needing a Slack or Microsoft Teams account. SCIM provisions the user and assigns their on-call seat, while SAML handles their login. The two don't need to point at the same IdP, as long as the user appears in both with the same email address. Without SAML and SCIM, users need a Slack or Microsoft Teams account to participate in on-call rotations. ## SAML We also support SAML, which can be set up independently from SCIM, but can use the same underlying identity provider, such as Okta or Microsoft Entra ID (formerly Azure AD). See [SAML SSO](/admin/saml-sso) for details. # Seat types and Viewers with incident.io Source: https://docs.incident.io/admin/seat-types Our [pricing](https://incident.io/pricing) is based on the number of Responder and On-call seats in your company, so it is only fair that you ask what counts with each seat in incident.io! ## Seat types at a glance Each paid seat maps to a product — Responder for Response, On-call for On-call. Users can hold one or both paid seats, and anyone without a paid seat can still use parts of our product as a Viewer. As a rule of thumb, Responder and On-call seats are for users who actively engage with incident.io to be On-call, manage incidents, whereas Viewers (free seats) are users who declare and join an incident channel to contribute information, but do not actively participate in incident response. | Seat type | Cost | What can you do | | ------------- | ---- | -------------------------------------------------------------------------------------------------------------------- | | **Viewer** | Free | Declare incidents, contribute in channels, view post-mortems, alerts, and schedules. Unlimited Viewers on all plans. | | **Responder** | Paid | Manage incidents: change status, post updates, assign roles, and write post-mortems. | | **On-call** | Paid | Be paged and included in schedules and escalation paths. | Someone with a paid Responder or On-call seat can have the role permissions of an [Administrator](/admin/user-permissions), [Owner](/admin/user-permissions) or any [custom role](/admin/user-permissions#h_649c9e2937). Viewers can only have the Standard set of permissions. *** ## On-call seat (paid) Users who have an On-call seat can: * Be added to a schedule * Be added to an escalation path * Have access to the mobile app * Incidents * Escalations * Schedules * Overrides * Cover me * Get paged via all methods (phone, SMS, WhatsApp, Slack, app, email) * Request cover via mobile app and Slack * Create overrides via dashboard, mobile app and Slack * Create pay reports from On-call ## Responder seat (paid) Someone with a responder seat can have the role permissions of an [Administrator](/admin/user-permissions), [Owner](/admin/user-permissions) or any [custom role](/admin/user-permissions#h_649c9e2937). Viewers can only have the Standard set of permissions. Users who have done the following will qualify as Responders: **Managing and running incidents** * Changed the status, severity, or [custom field](/incidents/custom-fields) values * Posted an incident [Update](/incidents/status-updates) * Changed the incident Status, includes accepted and declined an incident. * Was assigned or assigned someone else an [incident role](/incidents/incident-roles) (Lead or other) * Handed over the Lead role * Created, assigned, updated, was assigned to, or completed an [action](/incidents/task-tracking) or a [follow-up](/post-incident/follow-ups) * Changed the [Call URL](/incidents/video-calls) associated with the incident * Changed the incident [Type](/incidents/incident-types) * Updated the incident [Summary](/ai/summaries) * Pinned a Slack message to the [timeline](/post-incident/timeline) * Revoked someone’s access to a [Private Incident](/incidents/private-incidents) * Renamed an incident * [Merged](/incidents/merging) an incident **Documenting incidents** * Created or edited a [Post-mortem](/post-incident/postmortems-overview) * Set a [Timestamp](/incidents/lifecycle) * Removed an [Attachment](/incidents/attachments) ## Viewer only (free) If you don't have a paid Responder seat or an On-call seat, you can still use parts of the product as a viewer. Viewers can create an incident, observe what is happening in the incident, and post messages in the channel. As a viewer, you can: * Create incidents (everyone in the company can declare incidents for free) * [Decline](/incidents/triaging) an incident * Join incident channels and post in them (everyone can track and contribute important information to incidents for free) * Go through a [tutorial incident](https://incident.io/changelog/2021-12-20-tutorial) (everyone can - and should! - learn the ropes of incident.io for free) * View alerts, escalations and schedules * Add an [Attachment](/incidents/attachments) (e.g. Zendesk, Github, etc.) * [Escalate](/incidents/escalating) to someone (e.g. via incident.io On-call/Opsgenie/PagerDuty) * View [internal status pages](/status-pages/overview#internal-status-pages-19) * [Publish to status pages](/status-pages/publishing-incidents) (both incident.io status pages and [Atlassian Statuspage](/integrations/statuspage)) * View post-mortems * Use @incident bot. Note: using the bot to make changes to the incident that only responders should do will upgrade you to a responder (see above actions for [responders](/admin/seat-types#responder-seat-paid)) All our plans allow unlimited viewers free of charge *** ## Adding and removing seats For details on how to add, remove, or change seats, see [Managing seats](/admin/managing-seats). *** ## FAQs Learning is free at incident.io. Everyone in your company can — and should! — learn the ropes of incident.io without getting penalized by it and billed. Your teammates won't be considered Responders (paid users) if they go through our tutorial flow. You can find full details of our billing methods and mechanics [here](/admin/billing). # Security FAQs Source: https://docs.incident.io/admin/security-faqs Frequently asked questions about security and data handling. Common questions about incident.io's security practices, data handling, and compliance. For more detailed information, visit our [Trust Center](https://trust.incident.io/). Our primary web application, Slack integration, and other related components are deployed onto the [Google Cloud Platform](https://cloud.google.com/) (GCP). Any data we store is kept either in our PostgreSQL database (also securely hosted and managed by GCP) or in GCP's BigQuery platform. All data is encrypted at rest in both Postgres and BigQuery. Two-factor authentication and IAM policies are applied to restrict access to resources within the Google Cloud Platform. Yes. We are happy to provide access to our SOC2 data room on request ([help@incident.io](mailto:help@incident.io)). For transactional data processing (interacting with the Slackbot, and viewing the dashboard), the data is hosted in GCPs Belgium region, in [europe-west1](https://cloud.google.com/about/locations#europe). We additionally have a hot standby in the Netherlands region, [europe-west4](https://cloud.google.com/about/locations#europe). For analytical data processing (for our internal analytical use case), data is stored [within Europe](https://cloud.google.com/bigquery/docs/locations). We currently don't send any data outside of Europe. If you decide to stop using incident.io, we're happy to delete application data upon request. Just let us know at [help@incident.io](mailto:help@incident.io). For removing specific sensitive data from alerts, escalations, incidents, or AI processing, see [Managing sensitive data](/admin/managing-sensitive-data). By default, users authenticate via Slack — however your organization authenticates with Slack (directly or via a single sign-on provider), that same mechanism is used to access incident.io. You can also configure [SAML SSO](/admin/saml-sso) to authenticate users through your identity provider instead. For the web application, temporary sessions are granted when you sign in. These periodically expire and are refreshed by redirecting the user through the OAuth flow. We can also revoke these tokens. For the mobile app, users can sign in directly or by scanning a QR code from the web dashboard. When SAML is enabled, mobile sign-in always goes through your identity provider. Admins can disable QR code sign-in in **Settings → Security**. Yes, incident.io has been approved by Slack and can be found in the Slack App Store [here](https://slack.com/apps/A01DEGPUHHC-incidentio?tab=more_info). To delete your entire organization, see [Deleting your organization](/admin/delete-account). To remove an individual user account, see [Deleting users](/admin/delete-users). # Sign in with email Source: https://docs.incident.io/admin/sign-in-with-email Let users access incident.io with a one-time code sent to their email address. Sign in with email lets users access incident.io with a one-time code sent to their email address. Use it alongside Slack, Microsoft Teams, or SAML SSO to give users a direct dashboard sign-in option. Email sign-in is also useful as an emergency access route when your normal identity provider or communications platform sign-in path is unavailable. ## When to use email sign-in Email sign-in gives users another way to reach incident.io without going through Slack, Microsoft Teams, or your identity provider. You might enable it when: * You want to invite users by email before they have connected a Slack or Microsoft Teams account * You have dashboard-only users who do not regularly work from your communications platform * You want a fallback sign-in route if your identity provider is down or misconfigured * You need access to incident.io while investigating an authentication incident Email sign-in depends on users being able to receive email. If you rely on it for emergency access, make sure your internal process accounts for any dependency between your email provider and identity provider. ## Enable email sign-in You need Admin or Owner permissions in incident.io. Admins can manage this setting if they have the **Manage security settings** permission. 1. Navigate to [Settings → Security](https://app.incident.io/~/settings/security) 2. Find **Sign in with email** 3. Enable the setting Once enabled, users can sign in using a one-time code sent to their email address. If your organization uses SAML SSO, users without the **Bypass SAML** permission will still be sent through your SAML provider after entering an email code. ## Sign in using email To sign in with email: 1. Go to [app.incident.io](https://app.incident.io) 2. Choose the email sign-in option 3. Enter the email address associated with your incident.io user 4. Use the one-time code sent to your email address to finish signing in ## Use email sign-in as a break-glass access pattern Email sign-in works well as a break-glass access pattern when Slack, Microsoft Teams, or your SAML provider is unavailable. Enable email sign-in all the time, rather than waiting for an outage, so the fallback path is ready when you need it. To prepare: * Confirm your Owners and key Admins have email addresses that can receive login codes during an outage * Keep at least one Owner or Admin able to manage security settings * If you use SAML, give at least one Owner or Admin the **Bypass SAML** permission before an outage so they can sign in with email if your SAML provider is unavailable * Test the flow after enabling it, then include it in your internal access runbooks During a SAML outage, that Owner or Admin can sign in with email and grant **Bypass SAML** to every user, or every user who needs access during the incident. Users can then sign in with email codes without being sent through the unavailable SAML provider. After the outage, review changes to the setting and permissions in [audit logs](/admin/audit-logs), then remove any temporary **Bypass SAML** access you no longer need. ## Related docs * [SAML SSO](/admin/saml-sso) * [User roles and permissions](/admin/user-permissions) * [Audit logs](/admin/audit-logs) # Slack permissions Source: https://docs.incident.io/admin/slack-scopes Slack permissions and access scopes required by incident.io As a workspace app, you can interact with incident.io from anywhere within Slack, but we’re careful with the permissions and scopes we require and request the minimum we need to function. You can find the [up-to-date list of permissions in Slack here](https://incident-io.slack.com/apps/A01DEGPUHHC-incidentio?tab=settings\&next_id=0). ## Required scopes on installation All of the following scopes are requested on first installation of our Slack bot, and are required for our app to run. Respond to direct mentions to our bot from Slack users. See the bookmarks we set within incident channels. Set bookmarks in incident channels (such as the alert that triggered the incident). Create canvases in incident channels. Read content in Slack channels we're added to, including messages users pin in their incident channel. Create incident channels. Read incident channel names. Write messages and updates in channels we have access to. Send announcements to public channels we haven't been added to (such as the incident announcement channel). Post messages with a custom username and avatar, so features like Scribe and Investigations can appear with their own bot identities. Add slash commands, such as `/inc` so you can interact with our bot. Read files shared in channels we have access to (such as images in incident channels). Upload files to channels we have access to so we can share insights reports and other materials. See private incident channels we are part of. Post to private incident channels we are part of. Read messages in private incident channels we're added to. Read DMs that are sent to the incident bot. View URLs in messages. Show previews of URLs in messages from our bot. Read pinned messages so we can save them to the incident timeline. Write new pins to a Slack channel, such as the incident welcome message. See when users have reacted to messages to trigger an action such as creating follow-ups. Add reactions to messages, such as marking GitHub pull requests as reviewed. Read your organization's name and icon. Read your organization's users. Match user accounts with other services, such as GitHub. Read user avatars so they can be displayed in our UI. List all user groups for syncing schedules. Sync on-call schedules into your Slack user groups. ## Optional additional scopes We don't request any of these on installation, but you can choose to provide them later. Rejoin incident or announcement channels if we lose access. If this isn't granted, users will have to manually add our bot to any channel they want to interact with us in. If you'd like to configure this, contact us at [help@incident.io](mailto:help@incident.io). ## Privileged access scopes Depending on your Slack workspace settings, bots and regular users may be restricted from taking certain actions. If your organization's Slack configuration requires admin access for certain operations, you can choose to additionally provide these scopes, otherwise some incident.io features may be degraded. You can find out more [details about each of those scopes here](/getting-started/slack-privileged-access) These scopes are **User Scopes**, which means you're granting us permission to use them on behalf of a specific user, rather than as our bot. To use any of these, you need to [configure a Slack admin for our bot](/getting-started/slack-admin-setup) These include: Create and archive public incident channels, if this requires admin access in your Slack workspace. Create and archive private incident channels, and remove member's access to them if it's revoked within incident.io. Sync on-call schedules into your Slack user groups, if this requires admin access in your Slack workspace. Convert channels between public and private, to match the visibility of an incident. # Team roles Source: https://docs.incident.io/admin/team-roles Give teams control over their own workflows, escalation paths, schedules, incident types, announcements, and more [Team roles](https://app.incident.io/~/settings/permissions/team) let you give teams the ability to manage their own config without letting them change another team's. Each resource can be owned by a different team: one alert route could be managed by Team A while another is managed by Team B. Team roles rely on having [teams set up](/catalog/teams) in your catalog. If your organization doesn't use teams yet, start there. This page covers how team-based permissions work in general. For the specifics of each resource, see: * [Alerts and escalations](/admin/restrict-escalation-response) — resolving alerts and responding to escalations * [Announcements](/admin/restrict-announcement-management) — a team's announcement rules and post templates * [Catalog types and entries](/admin/restrict-catalog-management) — editing a team's catalog types and their entries * [Incident types and lifecycles](/admin/restrict-incident-type-management) * [Workflows](/admin/restrict-workflow-management) Escalation paths, schedules, alert routes, alert sources, and [API keys](/admin/api-keys) work the same way. Team roles are **in addition to** [account-level roles](/admin/user-permissions). If someone can manage something at the account level, they can make changes even if they're not on the team that owns it. This lets a small set of admins step in across teams. ## How team-based permissions work Giving a team control of its own resources follows the same shape wherever you do it: 1. **Give the resource an owning team.** Where you set this depends on the resource (see the pages linked above). A resource with no owning team behaves as it did before you started. See [Team resources](/catalog/team-resources) for what ownership means. 2. **Create a team role with the permission.** At [**Settings → Permissions → Team-level**](https://app.incident.io/~/settings/permissions/team), create a team role (or edit an existing one) and select the relevant permission. 3. **Remove the account-level default**, if the permission is granted to everyone. Some permissions (like **Manage workflows** or **Manage announcements**) are in the **Standard** base role out of the box, so everyone holds them account-wide. Until you remove that grant at [**Settings → Permissions → Account-level**](https://app.incident.io/~/settings/permissions), team ownership has no effect on who can manage the resource. 4. **Confirm it's working.** Someone outside an owning team sees the relevant controls disabled, with a tooltip explaining they don't have permission for that resource. Members of the owning team, and anyone who holds the permission account-wide, can manage it as normal. Creating a team role with an attribute and schedule permissions
selected ## Assigning team roles Who has which team role is controlled via the catalog. Each team role corresponds to an attribute on your Team catalog type (you can [configure which catalog type represents your teams here](https://app.incident.io/~/settings/teams)). You can view and change who has which role from the **Members** tab of the team's page. Editing a team member's roles with Admin and Member options You can configure multiple team roles (for example Members and Admins) so that some people on a team get additional permissions the rest don't. Users can hold multiple roles on a team, and if they do, they get the union of permissions across all of them. If your teams are controlled externally (for example via Linear, GitHub, the catalog importer, or Terraform), then anyone who can update teams in the external system can control which users have team roles within incident.io. ## Example: team-owned schedules Say you want everyone on a team to create schedule overrides, but only the team's managers to edit the schedule itself. First, make sure the schedule is owned by the right team: Editing a schedule with the Infra team selected as owner Then create two team roles, one for members and one for admins, each granting the schedule permissions that group should have: Team roles list showing Admin and Member roles with their
permissions Assign those roles on the team's **Members** tab, as [above](#assigning-team-roles). Now everyone on the team can create overrides for schedules they're on, but only the admins can change the schedule itself, like working hours and when shift handovers happen. ## FAQs Reassigning ownership always requires the relevant permission granted **account-wide**. A team can manage a resource they own, but they can't hand it to another team or remove their own team from it. This stops a team from quietly giving away (or locking others out of) a shared resource. They can be managed by anyone who holds the relevant permission account-wide. For permissions that are in the **Standard** role by default (like **Manage workflows** or **Manage announcements**), that's everyone until you remove it in step 3. Yes. You can assign multiple owning teams, and a member of any one of them (with the permission granted to that team) can manage the resource. Yes. Anyone who holds a permission account-wide can manage any resource of that kind, regardless of which team owns it. This lets a small set of administrators step in across teams. # Manage your account with Terraform Source: https://docs.incident.io/admin/terraform Manage incident.io configuration as code with our official Terraform provider We maintain an [official Terraform provider](https://registry.terraform.io/providers/incident-io/incident/latest) for incident.io. With this provider you can manage account configuration such as: * Custom fields * Incident severities * Incident roles * Incident statuses * Schedules * Escalation paths * Alert sources * Alert routes * Catalog types and entries * Maintenance windows This allows you to bring incident.io account configuration into the same code review and approval cycle as you'd use for other key infrastructure and allows syncing information about your infrastructure or organization into incident.io, such as a list of services or teams. For resources like schedules, escalation paths, workflows, alert sources, and alert routes, you can configure them in the visual editor first and then export the generated Terraform config — so you don't have to write it from scratch. As an example, this is how you might configure a custom field for affected services: ```hcl theme={null} provider "incident" {} resource "incident_custom_field" "impacted_services" { name = "Impacted Services" description = "The services that are impacted by this incident." field_type = "multi_select" } resource "incident_custom_field_option" "impacted_services" { # Load this from your service catalog, config file, or anywhere. for_each = toset([ "Payments Service", "API Gateway", "Transaction Ledger", ]) custom_field_id = incident_custom_field.impacted_services.id value = each.value } ``` Whether a field is required and where it appears is no longer configured on the field itself — set that up in [incident forms](/admin/incident-forms) in the dashboard. Full documentation on how to use the provider and all its resources can be found in the Terraform registry at [incident-io/incident](https://registry.terraform.io/providers/incident-io/incident/latest). This includes example code and attribute definitions. Example usage for incident custom fields If you need a refresher on how to provision your infrastructure with Terraform, check out Hashicorp's [tutorials and documentation](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/infrastructure-as-code). ### Importing existing resources If you already have configuration set up in the dashboard, you can bring it under Terraform management without recreating it. For workflows, schedules, escalation paths, alert sources, and alert routes, the easiest path is exporting from the dashboard (see below), which generates the resource block and the matching `terraform import` command for you. For everything else, or if you prefer to write the configuration yourself: 1. Write a resource block matching your existing configuration 2. Find the resource's ID, from the dashboard URL or [the API](/api-reference/introduction) 3. Import it into your Terraform state: ```bash theme={null} terraform import incident_schedule.primary 01ABC123DEF456GHI789JKL ``` Or, on Terraform 1.5 and later, use an import block: ```hcl theme={null} import { to = incident_schedule.primary id = "01ABC123DEF456GHI789JKL" } ``` 4. Run `terraform plan` and adjust your configuration until the plan shows no changes Each resource's page in the [registry documentation](https://registry.terraform.io/providers/incident-io/incident/latest) shows its import syntax. ### Editing Terraform-managed resources in the UI Once a resource is managed by Terraform, it becomes locked in the dashboard — you can't save changes directly. But you can still use the UI to compose changes visually: 1. Open the resource (e.g. a schedule or escalation path) in the dashboard 2. Make your changes in the visual editor 3. Instead of saving, click **Export** to get the updated `.tf` configuration 4. Review and apply via your normal Terraform workflow This keeps Terraform as the source of truth while letting you use our powerful visual editor to draft changes. # User management Source: https://docs.incident.io/admin/user-management How users are added to incident.io and how to manage them There are several ways users get added to your organization, depending on your setup. ## Adding users | Method | How it works | | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Slack or Microsoft Teams** | Users are automatically created when they join an incident channel or interact with incident.io in your communications platform. This is the most common way users are added. | | **SAML SSO** | Users are created on their first sign-in through your identity provider. See [SAML SSO setup](/admin/saml-sso) for details. | | **SCIM** | Users are automatically provisioned and deprovisioned from your identity provider. SCIM also manages permissions automatically. See [SCIM provisioning](/admin/scim) for details. | | **Manual invite** | Invite users from **Settings → Users → Users tab**, or directly when creating or editing a schedule or escalation path. You can invite existing Slack/Teams users or invite people by email. See [Inviting users by email](#inviting-users-by-email) below. | ## Inviting users by email You can invite users to your organization with just their email address. Note that this is only available to you if your organization has sign in with email or SAML login enabled, and is always disabled if your users are provisioned with SCIM. To invite users: 1. Go to **Settings → Users → Users tab** and click **Invite user**. 2. Type/paste one or more email addresses. You can mix in existing Slack/Teams users in the same picker. 3. Choose the [seat type](/admin/seat-types) the new users should have, then click **Invite**. ### Inviting from a schedule or escalation path You can also invite new users while creating or editing a [schedule](/on-call/schedules) or [escalation path](/on-call/escalation-paths). Just type an email address into the user picker. When you save, we'll create the user, give them an On-call seat, add them to the schedule or escalation path, and send them an email letting them know they've been added. Inviting a user by email from the responders picker on a schedule rotation ### Requirements Inviting users by email requires the **Manage users** permission. Owners and Admins have it by default. You can also grant it via a [custom role](/admin/user-permissions#custom-roles). Email invites aren't available if your organization uses [SCIM](/admin/scim), since user creation comes from your identity provider. If your [SAML config](/admin/saml-sso) has a domain allowlist, invites are limited to email addresses on those domains. ## Permissions Each user has a base role (Standard, Admin, or Owner) that determines their core permissions, plus optional custom roles for additional permissions. This determines what they can do on the platform. See [user roles and permissions](/admin/user-permissions) for details. See [seat types](/admin/seat-types) for details on seats and billing. ## Deactivating users Users are automatically deactivated when they are deactivated in Slack or Microsoft Teams. If you use [SCIM](/admin/scim), users are also deactivated when unassigned from the application in your identity provider. To manually deactivate a user, go to **Settings → Users → Users tab**, click the three dot menu next to their name, click **Edit details**, and deactivate them. The same edit menu lets you rename email-only users. Both actions require the **Manage users** permission. ## Duplicate users If a user has multiple accounts (for example, from joining via both Slack or Microsoft Teams and SAML with different email addresses), you can merge them. See [duplicate users](/admin/duplicate-users) for details. ## FAQs Already-active members are skipped silently, they won't get a duplicate account or a second invite. You'll see a summary after submitting that tells you how many were invited and how many already existed. No. If your SAML config has a domain allowlist, invites are limited to those domains. To invite someone from a different domain, add the domain to your allowlist first. Yes. The seat type you pick is applied as soon as the invite is sent. If you invite someone with a Responder or On-call seat, that seat is consumed from your plan right away. # User roles and permissions Source: https://docs.incident.io/admin/user-permissions Control user access with base roles and custom permissions User permissions in incident.io are controlled through base roles and custom roles. Each user has one base role that determines their core permissions, plus optional custom roles can grant additional permissions. Configure roles at **Settings → Permissions → Account-level**. Assign roles to individual users at **Settings → Users → Users tab**. For information on how roles interact with billing, see [seat types](/admin/seat-types). ## Base roles Every user has a base role that determines their default permissions. There are three base roles: * **Standard** — default role for all users. Can view and declare incidents. Responders with this role can participate in incident response. * **Admin** — all Standard permissions, plus the ability to manage organization settings and billing. * **Owner** — full access to all incident.io features and settings. Viewers can only have the Standard role. To assign a user the Admin or Owner role, they must have a Responder or On-call seat. ### Default permissions by role | Permission | Standard | Admin | Owner | | ------------------------------------------------------------------- | -------- | ----- | ----- | | Use incident.io via Slack and dashboard (view and create incidents) | ✅ | ✅ | ✅ | | Create and edit workflows and announcement rules | ✅ | ✅ | ✅ | | View organization settings (except billing) | ✅ | ✅ | ✅ | | Edit organization settings | ❌ | ✅ | ✅ | | View and edit billing settings | ❌ | ✅ | ✅ | | View all private incidents (including those they are not part of) | ❌ | ❌ | ✅ | Slack workspace admins already have access to all private Slack channels, so they can access all private incidents regardless of their incident.io role. You can customize base role permissions at **Settings → Permissions → Account-level**. Click the edit icon on any base role to modify its permissions. For example, you could restrict billing access so only Owners can manage billing settings. Base roles list showing Owner, Admin, and Standard roles Editing the Admin role permissions ## Custom roles Custom roles grant specific permissions to individual users beyond their base role. They only add permissions — they never remove them. A user receives the union of all permissions from their base role plus any assigned custom roles. **Example custom roles:** * **Engineer** — manage API keys and webhooks * **Finance** — manage billing settings and on-call pay reports * **Security** — view all private incidents To create a custom role, go to **Settings → Permissions → Account-level** and click **Add role**. Define the role name, description, and specific permissions to grant. For a full list of the permissions you can grant, see the [permissions reference](/admin/api-keys#permissions-reference). Creating a custom Engineer role ## Managing user permissions View and edit user permissions at **Settings → Users → Users tab**. Each row shows the user's current seat type, base role, and custom roles. To modify a user's permissions, open the **⋯** menu next to their name and choose **Edit details**. You can change their base role or add custom roles. Users can hold multiple custom roles simultaneously. Editing a user's base role and custom roles # Webhook IP addresses Source: https://docs.incident.io/admin/webhook-ips IP addresses used by incident.io webhooks If you need to allowlist IPs for incoming webhooks from incident.io, here are the addresses to add. Our webhooks are powered by [Svix](https://svix.com/), hosted in the EU region. ```plaintext theme={null} 52.215.16.239 54.216.8.72 63.33.109.123 ``` # Using @incident Source: https://docs.incident.io/ai/at-incident ## What is @incident? You can tag @incident in any incident channel in Slack, chat from the incident tab in Microsoft Teams, or chat via the incident dashboard. It can be used to draft updates, create follow-ups, pause incidents and more. Essentially, any action you currently do via a command, you can do via the agent instead. @incident can also answer questions about the incident you’re in, connected alerts, and attachments. The examples below are relevant for Slack only. In Microsoft Teams, chat to the agent in the embedded tab, or in the dashboard or mobile app. ### Examples to get started **Handle incident admin** You can ask @incident to handle anything you'd do as a responder during an incident. That means pausing, renaming, declining, or keeping your incident up to date with changes. * `@incident pause this till monday` * `@incident rename this to reflect that it was a misconfiguration problem` * `@incident can you decline this and create a follow up to stop it paging?` **Draft updates across stakeholders** Draft rich updates for different scenarios with @incident. You don't have to be prescriptive about what to include - @incident will use the information available in the channel to reflect the current situation. * `@incident write an update describing the fix that we've implemented` * `@incident draft a customer facing message explaining the workaround described above` * `@incident write up a handover summarizing where we're at and next steps - then assign the lead to Rory` * `@incident draft an update for my status page, make it clear that the issue is resolved` **Dive into your codebase** You can ask questions of any of your connected repositories, to summarize code or provide more clarity. * `@incident can you find where this function is used? I want to understand the potential impact` * `@incident can you check our timeline code - when a notification errors, do we surface it?` **Query telemetry** If you've connected any telemetry sources for Investigations you can ask natural language questions of your logs or metrics * `@incident show me 5 example log entries of SMS notification failures from the last 24 hours. Include any error codes, organization names, and country codes.` * `@incident look at the telemetry for web pod CPU usage during this incident to see if the >75% usage was isolated to a single pod` **Answer general engineering questions:** Ask @incident general engineering questions whenever you need it. * `@incident what does 'skip locked' mean in postgres?` * `@incident can you rewrite this query to group by customer_id` * `@incident draft me a SQL query to determine how many payments are currently in 'error' state for this organization. Their ID is [ID]` **Search past incidents** Search across your incident history to find patterns or similar issues. * `@incident have we seen incidents like this before?` * `@incident did we have an incident about high database CPU in February?` * `@incident what other incidents have affected ACME?` ## Who can use @incident & how to enable it in your account? * Available to all **Pro and Enterprise** customers on Slack and Microsoft Teams (on the tab for the incident, or in the dashboard). It is not available for Basic, Team plan, on-call–only participants, or workspaces that opted out of AI features/required sub-processors. * If it isn't working for you, it's probably because your account doesn't have message storage enabled. You'll need to update your message storage settings to 'All' at [Settings → AI governance](https://app.incident.io/~/settings/ai-governance#store-incident-channel-messages). ## Privacy, Permissions & Data Use ### Do you train models based on our data? No, we never train or fine tune AI models based on your data. Additionally, we have zero data retention agreements in place with the sub-processors we use to provide our AI features, including OpenAI, Anthropic, and Google Vertex. You can read more detail in our AI Privacy Guidance in our [trust centre](https://trust.incident.io/). More generally, all of the same controls outlined in our Trust Centre and Privacy Policy apply here, such as encryption. ### Do you use data from private incidents? By default, all AI features are disabled in private incidents. Optionally, you can opt-in to AI features in private incidents in [Settings → AI governance](https://app.incident.io/~/settings/ai-governance#ai-incident-access). This is available to all Pro and Enterprise customers. # Deleting call notes Source: https://docs.incident.io/ai/deleting-notes If you need to delete the call notes / transcripts that [incident.io](http://incident.io/) records from your incident calls, for example to purge sensitive content, you have two options: ## 1. Manually delete call notes When you open the call notes on an incident page, you can delete them via the "three dots" menu on the upper right: image.png ## 2. Automatic deletion You can also configure your call notes to be automatically deleted either 14 or 90 days after the call ends. This can be set in the Scribe configuration (on the AI configuration page). ## What happens when my call notes are deleted? When we delete call notes via either of the above methods, we: * **Permanently delete** the raw transcripts and the names of the speakers * **Archive / "soft delete"** the other information generated from the transcripts, namely: * Summaries * Current topics * Key moments # macOS app Source: https://docs.incident.io/ai/desktop-app Download the incident.io desktop app for macOS to respond to incidents from the notch. The incident.io macOS desktop app brings incident response to your Mac, so you can get paged, investigate, and post updates back to the team without leaving your terminal. It runs in your notch or menu bar, ships with a local MCP server, and integrates with your coding agent - Claude Code, Codex, Cursor, and more. Pinned incident in the notch with a "Debug in Claude Code" action and a dropdown showing Codex, Cursor, and Copy command options. The macOS app is available to all paying customers. Download it from [Settings → Desktop app](https://app.incident.io/~/settings/desktop-app) in your dashboard. **Not on macOS?** Use the [remote MCP server](/ai/remote-mcp) instead — same incident.io tools, available from any OS, Claude.ai in a browser, ChatGPT, or automated agent pipelines. ## What you can do The macOS app is designed to help you from the moment you're paged, until you resolve the incident, without context-switching back and forth between your coding agent and Slack or Microsoft Teams. * **Get paged and jump straight in.** High-urgency escalations appear in your notch (or notification center if you prefer menu-bar mode). Acknowledge the page, pin the incident, and start debugging in your coding agent. * **Investigate with your agent of choice.** The app ships with a local MCP server and one-click integrations for Claude Code, Codex, and Cursor. Any other MCP-compatible client (e.g. OpenCode) can be configured manually. * **Share findings without leaving your terminal.** Post updates, snippets, and findings directly to the incident channel via the MCP without tabbing away to write them up. * **Stay in the loop.** New incident updates and status page changes arrive as native notifications, so you can stay heads-down in the code while still tracking what the rest of the team is doing. ## Display modes Both modes have full functionality: escalation prompts, an incident list, event notifications, and the same incident detail view. Pick whichever fits how you like to work, and switch between them from the app menu at any time. * **Notch mode** surfaces escalations and incident updates ambiently from the notch area, so you can stay aware of what's happening without switching context. Works on external displays too. * **Menu bar mode** is the minimalist option with a small menu bar icon that opens the same UI on click. Use this if you'd rather keep incident.io out of sight until you need it. ## Coding agent integrations The onboarding flow walks you through installing the integration for your coding agent. You can also add or change integrations any time from the app menu. One-click integrations are available for **Claude Code**, **Codex**, and **Cursor**. Any other MCP-compatible client (e.g. OpenCode) can be set up manually using the MCP config shown in the app menu. Manage integrations panel showing Install buttons for Claude Code, Codex, and Cursor, with a "Using something else?" link below. The local MCP exposes the same tools as the [remote MCP server](/ai/remote-mcp), plus extra tooling for live investigation work and posting back to the incident channel. See the [available tools](/ai/remote-mcp#available-tools) list on the remote MCP page — everything there works in the macOS app too. ## Pinning incidents Pin an incident to set it as the active one your coding agent works on. While pinned: * Your agent treats it as the active incident, so you don't need to repeat the ID each time. * You receive event notifications when there are new updates on that incident. You can pin from the app, by acknowledging an escalation prompt, or by asking your agent to do it for you. Unpin from the incident detail view or via your agent. Escalation prompt in the notch showing the incident title, severity, and "Acknowledge and pin" button. ## Investigations [Investigations](/ai/investigations) are currently in **Private Beta** and aren't available to everyone yet. If your organization doesn't have access, the rest of the macOS app still works. Your coding agent will use the MCP tools to query incident data on demand. If your organization has Investigations enabled, pinning an incident also syncs its investigation data to your machine in the background. Your coding agent reads findings, checks, and evidence as local files alongside your codebase, so you can ask questions like: * "Investigate why we're seeing elevated error rates on the checkout service." * "What's the current load on the production database and how does that compare to normal?" * "Have any of my recent deployments affected error rates in production?" ## Requirements * macOS 15 (Sequoia) or later * Apple Silicon (M1+) or Intel * An incident.io account on a paid plan ## FAQs If you're on a Mac and do local development, use the macOS app — it has everything the remote MCP has, plus native notifications, integration installers, and richer support for investigations. Use the [remote MCP server](/ai/remote-mcp) if you're on Windows or Linux, develop in a remote/cloud environment, or want to plug incident.io into an automated agent pipeline. Not in the same coding agent — they expose the same tools, and your agent will get confused if both are connected. See [Multiple incident.io MCPs authorized](/ai/mcp-conflict) for how to resolve duplicates. Running them in different places (e.g. macOS app on your Mac, remote MCP on a separate Linux box) works fine. The macOS app is free. Capabilities of the MCP are tied to your plan and products — for example, tools to manage escalations require access to On-call, and asking about telemetry requires access to Investigations. Use **incident.io menu → Reset** to remove credentials, the bundled CLI, and any agent integrations the app installed. To remove the app itself, drag it from `/Applications` to the Trash. # AI feature: Suggested follow-ups Source: https://docs.incident.io/ai/follow-ups Suggested follow-ups are given when an incident is resolved. We look back through the channel and spot anywhere follow-ups were discussed. We then match these against actions and follow-ups that are already created. If we spot any that we think are missing we’ll bring them up as suggestions within the channel. You can then easily create follow-ups off the back of these suggestions. ## Demo