# New and improved custom dashboards

*September 29, 2026*

While we’ve had the ability to create custom dashboards, the functionality was a bit limited. We’ve given customers with access to custom dashboards with, you guessed it, much more customization!

![](https://cdn.sanity.io/images/oqy5aexb/production/9dc42e20f3aeaba3d300f061f14d5ac6f5a29cc9-1500x824.png)

Insights now get new functionality such as:

* Custom layouts, including the ability to stack things on top of each other and easily resize items
* Users can now customize charts by how the **data is split** or **grouped by** or what the chart looks like, or create their own charts from scratch
* Pick your own colors for your graphs
* Rich text panels with headers, links and mentions
* Filter the whole dashboard, or a section of panels or just one panel
* Scheduled reports get all the above along with our wonderful new styling

![](https://cdn.sanity.io/images/oqy5aexb/production/c10957a95299d4f7f58aa8666f2317323373b148-1500x824.png)

All these new tools will allow you to set up dashboards so you can better understand how your organization is performing based on what matters to you and your teams the most.

![](https://cdn.sanity.io/images/oqy5aexb/production/fc0fbc11847a15c70a8e680dc5caab1167456e78-1500x824.png)

## On-call

### Updated schedules tab on mobile

We've just released a new schedules tab on mobile, aligning it much closer to what we have on web. You now have a calendar view that shows shifts at a glance that you expand or collapse. Plus, you can scroll continually up or down, rather than having to side swipe between days and months.

In addition, you can:

* View only your shifts or all the shifts of the schedules you've selected
* See that colors now match the web where each user has an assigned color, where previously mobile varied color per _rotation_
* There's a more prominent override/cover-request button, and the select a schedule drawer has been replaced with a new clearer modal
* Press and drag like you could before on the timeline, but now we support dragging across days, so you can create an override/cover-request overnight
* See holidays on mobile in the timeline
* Actually scroll the current time into view, rather than just the start of the day

In addition, performance is generally improved even with all the extra functionality! Check out all the new goodies on our latest release.



### [Logz.io](http://Logz.io) alert source

[Logz.io](http://Logz.io) is now an available alert source in our app.

Customers just need to create a custom endpoint under notification settings in [Logz.io](http://Logz.io) and point it at the URL shown when configuring a new source, as well add the Authorization header in the format of `authorization=Bearer <token>` in the Headers input box for the endpoint. [Logz.io](http://Logz.io) doesn’t resolve alerts, so customers should select the option to auto-resolve.

Check out our help documentation [here](https://docs.incident.io/alerts/logzio).

![](https://cdn.sanity.io/images/oqy5aexb/production/f69f43584d8cf4b61bfdc434defd0238d7d5292d-1500x824.png)

### PostHog alert source

PostHog is now a native alert source, where you can point its Error Tracking webhooks (issue created, reopened, spiking, resolved) at the URL and token we show you.

Each new PostHog error becomes one alert with a link back to PostHog. Mark the issue resolved in PostHog and the alert resolves, and with auto-decline on the route the triage incident closes too.

Check out full help documentation [here](https://docs.incident.io/alerts/posthog).

![](https://cdn.sanity.io/images/oqy5aexb/production/23ae401ff074476a4c7902c95dbd4ebe2eff4ff6-1500x824.png)

### On-call readiness policies by rotation

On-call readiness policies now support navigating and filtering by rotations. For example, a company that only wants people in their "Primary" rotation to have the app set up, but a secondary rotation doesn't have to, can define that in their policies so that only the right individuals are matched.

![](https://cdn.sanity.io/images/oqy5aexb/production/2bbe874dad81ed20b5f30e220181744068a80865-1500x824.png)

### Team-based maintenance windows

Maintenance windows can now be owned by a team. This can ensure that a maintenance window is not accidentally put in place that could silence alerts for a whole organization, instead just limiting scope to an individual team.

When creating a window you choose account-level or team-level. A team-level window only holds alerts owned by that team. Users with team-level maintenance window permissions can create and edit their own team's windows without account-wide access. Each team also gets a Maintenance tab under Settings listing its active and upcoming windows.

![](https://cdn.sanity.io/images/oqy5aexb/production/8330cff9c27170b891d3b9d6d9f1dfbf64850f2d-2528x2084.png)

### Bring your own Twilio account for call routing

Customers can now use their own Twilio account (and their own phone numbers!) for call routes.

This means the customer retains ownership and control over the number, while we receive calls to it and route them to responders.

Help documentation can be found [here](https://docs.incident.io/on-call/bring-your-own-twilio-number).

![](https://cdn.sanity.io/images/oqy5aexb/production/bb5b3de2ce0964e7ec5ba75acda462cf73626272-1500x824.png)

## Platform

### The [incident.io](http://incident.io) plugin is available on Claude Code/Cowork and Cursor marketplaces

Our plugin ([github.com/incident-io/skills](https://github.com/incident-io/skills)) bundles the [incident.io](http://incident.io) MCP with a set of skills that assist agents in using the MCP effectively. This is the easiest way to install the MCP into Claude, Cursor, Codex and many other harnesses, and supports auto updates so customers can get the newest version of skills as we ship them.

Find it on the [Cursor](https://cursor.com/marketplace/incident.io) and [Claude](https://claude.com/plugins) (will appear soon on website, already available) marketplaces We support the Claude, Agent Plugins 1.0 and Codex formats, so most harnesses should be supported.

For installation instructions, refer to [docs.incident.io/ai/remote-mcp](https://docs.incident.io/ai/remote-mcp#setup).

## Response

### Merging incidents is now much more flexible

You can merge a public incident into a private one, so long as you have access to that private incident. In addition, incidents can be merged into a resolved incident, not just one that's still active.

When you merge incidents, we’ll also:

* Move follow-ups across when you merge an incident (and undo this if you un-merge)
* Any status page incidents linked to the response incident get moved across to the new incident on merge too.

![](https://cdn.sanity.io/images/oqy5aexb/production/0537c5d072fba326307f2f116cde7810e44c409b-1500x824.png)

## What else we've shipped

## New
* [on-call] You can now filter by user when viewing multiple schedules! Quickly go to your own filtered schedules view from the on-call card, or search 'My schedules' using Cmd+k.
* [on-call] You can now filter alert requests by status to find failed or rejected requests and debug them!
* [on-call] We added on-call pay configuration to Terraform.
* [on-call] You can now target on-call policies by schedule or rotation name, so you can build rules like "anyone on a rotation with out-of-hours in the name".
* [response] You can now manage announcement rules and templates through the API and Terraform.
* [response] You can now schedule a debrief as a Microsoft Teams call directly from [incident.io](http://incident.io), so it appears on Outlook calendars and stays tracked alongside the rest of the incident timeline.
* [response] You can now merge a public incident into a private incident you have access to.

## Improvements
* [response] You can now merge incidents even when one of them is already resolved, closed, or declined.
* [investigations] The telemetry data sources view now shows when a source, or a specific capability of it, isn't currently queryable — for example because it's returning no data or a connected source it depends on isn't set up. The marker clears automatically once the issue resolves.
* [investigations] Investigations now only run automatically on the parent incident, not on incident streams — you can still trigger one manually on a stream if you need to.
* [status-pages] We now support sending status page email notifications from a custom sender address instead of the default [no-reply@status.incident.io](mailto:no-reply@status.incident.io). Reach out to your account manager to get this configured for your status page.

## Bug fixes
* [on-call] Fixed an issue where deleting a rotation that an escalation path still targeted failed with a confusing generic error. The delete button is now disabled with a tooltip explaining which escalation paths are using that rotation.
* [on-call] Fixed an issue where requesting cover from the stacked calendar view expanded the request to span whole days, instead of matching the shift's actual start and end times.
* [on-call] Fixed an issue where the rotation filter on on-call pay reports only listed the rotations active today, instead of the rotations that actually existed during the report's date range.
* [on-call] Fixed an issue where two people on a schedule could show up in the same color when viewing it, even though they appeared in distinct colors while editing.
* [on-call] Fixed an issue on Android where requesting cover for an upcoming shift defaulted the start time to right now instead of the shift's actual start, forcing you to edit it manually.
* [response] Fixed an issue where emoji using a zero-width joiner, like 🙇‍♂️, would break apart when rendered in Slack messages, leaving a stray gender or modifier symbol floating next to the text.
* [response] Fixed an issue where boolean values weren't passed correctly into the webhook body when using the "Send a webhook" workflow action.
* [investigations] Fixed an issue where investigations could automatically run on retrospective incidents, using up part of your monthly investigation allowance on incidents that were only being logged after the fact.
* [investigations] Fixed an issue where clicking a post-incident investigation feedback button in Slack showed an "App took too long to respond" error, even though the feedback had already been saved successfully.
* [nexus] Fixed an issue where testing an HTTP connector could fail with a "didn't return parseable JSON" error if the endpoint's valid response was larger than 64KB.
* [status-pages] Fixed an issue where a status page sub-page set to show coloured bars and uptime percentage would only display bars, with the percentage missing, when the parent page's historical data display was set to "Nothing".
* [status-pages] Fixed an issue where a status page pre-defined update template saved without an incident status couldn't be edited again — renaming or updating it would fail with a validation error.

## Blog posts
- [Almost excited to get paged](https://incident.io/blog/almost-excited-to-get-paged)