---
title: "Sorry Integration"
description: "Sorry (SorryApp) is a status page and incident communication platform. Agents open incident and maintenance notices, post updates, keep components accurate, manage subscribers and templates, and control whether each write publishes to customers."
url: https://flowrunner.ai/integrations/sorry
date_modified: 2026-09-04T14:59:52-07:00
---

# Sorry

[Developer Tools](https://flowrunner.ai/integrations/category/developer-infrastructure)

Sorry (SorryApp) is a status page and incident communication platform. Agents open incident and maintenance notices, post updates, keep components accurate, manage subscribers and templates, and control whether each write publishes to customers.

[Verified](https://flowrunner.ai/integrations/verified "What does verified mean?") · 43 actions · API key · available

[Sorry website](https://www.sorryapp.com/) · [Platform Documentation](https://docs.sorryapp.com/v1) · Capability data verified 2026-08-25

1.  Monitoring reports that the affected service has recovered
2.  Get Notice pulls the open incident with its component associations and its update history
3.  List Notice Updates reads what customers have already been told, because a correction cannot un-send an earlier update
4.  Agent confirms the state it intends to set belongs to the unplanned vocabulary, since incident and maintenance states do not overlap
5.  Add Notice Update stages the recovery detail with publishing held off
6.  The staged close goes to the incident commander with the monitoring evidence beside it
7.  The commander chooses resolved, false alarm, or removal, and whether it publishes

## What This Integration Enables

Sorry is a status page, and the thing to understand about its API before automating anything against it is that a write is a publication. The vendor is explicit: creating and updating notices publishes them to the status page and to every configured channel, which can include email, SMS, Slack, Microsoft Teams, Google Chat, and X. A test notice against a production page reaches real customers on their phones, and there is no unsend. A publish switch exists on every operation that has one, and this connector surfaces it, which is what makes staging a notice possible at all.

That single fact reorganizes what automation is good for here. Agents are excellent at the parts nobody should be doing by hand during an incident: resolving which components are affected, pulling the right template, assembling the update from monitoring evidence, keeping the maintenance calendar honest. Agents are the wrong thing to hand an irreversible broadcast to. FlowRunner's [human-in-the-loop](https://flowrunner.ai/concepts/human-in-the-loop) step is not decoration on this connector, it is the switch the vendor already built, with a person on the other side of it.

### Without FlowRunner

**The status page updated last**: Engineering fixes the problem, and the public page still says investigating an hour later

**Prose written at 3am**: Customer-facing wording gets composed by whoever is awake, under pressure, without review

**A page that contradicts itself**: An incident is posted while every component on the same page still reads operational

### With FlowRunner

**The page moves with the incident**: Notices open, update, and close as workflow steps driven by the same signals that page the on-call

**Wording agreed in advance**: Notice and update templates hold the language a calm room approved, ready for the room that is not calm

**Components tell the same story**: Notices carry component associations, so what the page shows matches what the notice says

## Use Case Scenarios

### An incident that reaches the page as fast as it reaches the on-call

An alert fires in [Datadog](https://flowrunner.ai/integrations/datadog) or [Grafana](https://flowrunner.ai/integrations/grafana) and pages through [PagerDuty](https://flowrunner.ai/integrations/pagerduty). The agent resolves the affected services to their status page components, pulls the matching notice template, and creates the incident notice with those component associations attached. That last detail is what separates a useful status page from a confusing one: a notice without components shows an incident on a page where every component still reads operational, which is the most common way a status page argues with itself. A component's own state cannot be set directly, because it is derived from the open notices attached to it. Making something degraded means opening a notice about it.

### A maintenance window that closes itself

Planned work is scheduled through the maintenance notice, whose start is split across a date field and a time field with the end expressed as a duration in minutes rather than a timestamp, and both are read in the page's own timezone rather than the caller's. The setting worth turning on is schedule automation, which moves the notice to underway and then to complete on its own. Without it the window sits at scheduled until somebody remembers, and the page keeps telling customers that maintenance which finished on Sunday is still pending on Wednesday. Progress updates during the window post through Add Notice Update, which says something new without changing the notice's state.

### Subscribers are people, and syncing them is a decision

Creating a subscriber signs a real person up for emails and text messages without them asking, so a workflow that syncs a customer list into Sorry is making a consent decision on their behalf rather than a data-sync decision. Two shapes are safer. Each subscriber carries its own per-channel notify flags, so turning those off is a gentle unsubscribe that keeps the record, while deletion is what a data-deletion request actually needs. And a subscriber can be a Slack or Teams webhook rather than a person, which is the right shape for an internal team: point one at [Slack](https://flowrunner.ai/integrations/slack) and every published notice lands in the channel without anyone's phone number being involved.

## Human-in-Loop Highlight

The interesting decision on this connector is not whether to publish. It is how an incident gets closed, because Sorry offers three doors and they write three different histories. Update Notice to resolved says it happened and it is over. Update Notice to false alarm says the alert was real and the incident was not, which keeps the record and is usually the honest close for a monitoring artifact. Delete Notice erases the incident and its updates entirely, which is what somebody reaches for when they are embarrassed and is almost always the wrong answer, because customers already received the notifications and now the page denies what their inbox says. No update un-sends anything: rewriting an earlier comment leaves the original notification exactly where it landed.

So the agent brings the evidence and stops. "The API latency incident opened at 02:14 has recovered. Error rate returned to baseline at 02:51 and has held for 40 minutes. Two updates already published to 1,180 subscribers. Root cause looks like a failed canary rather than a platform fault. Close as resolved, close as false alarm, or delete the notice?" The agent watched the recovery, drafted the wording from the update template, and staged it. Which of those three sentences becomes the permanent public record of a bad night is a judgment about the company, and it belongs to a person.

Agent processes routinely

Detects exception requiring judgment

Clear match Continues automatically

Ambiguous Routes to human via preferred channel

Human decides

Agent resumes with decision

## Agent Capabilities

43 actions

### Status Pages

5

-   **List Status Pages** Returns the account's status pages. Related resources can be embedded in the same request, including branding, components, custom domain, notices, subscribers, and theme, and the notice include nests to bring back every incident with its comments in one call.
-   **Get Status Page** Returns one status page. Its own state is the roll-up of its components, which is the single value an external dashboard usually wants.
-   **Create Status Page** Creates a status page. The timezone set here is what every date on the public page is rendered in, so getting it wrong shifts every maintenance window a customer reads.
-   **Update Status Page** Changes a status page's settings. Only the fields sent are altered.
-   **Delete Status Page** Removes a status page. Its notice history, components, and subscribers go with it, and its public URL stops resolving for anybody who bookmarked it.

### Branding and Domains

6

-   **Get Branding** Returns a status page's brand settings: its colors, logo, and styling.
-   **Update Branding** Changes a status page's brand settings. The available attributes are theme-specific, so the set differs between themes.
-   **Reset Branding** Removes custom branding and returns the page to the default.
-   **Get Custom Domain** Returns a status page's custom domain and its verification state. Worth checking on a schedule, since a domain whose DNS or certificate has lapsed makes the status page unreachable exactly when it is needed.
-   **Set Custom Domain** Points a status page at your own hostname. It does not configure DNS: the record has to exist separately, and the domain stays unverified until it does.
-   **Remove Custom Domain** Detaches the custom hostname. Anybody who bookmarked it loses the page, which during an incident is the worst possible moment for it to happen.

### Components

5

-   **List Components** Returns a page's components. A component's state is read-only and derived from its open notices and its ancestors, so this reads the current state of each part of the service rather than setting one.
-   **Get Component** Returns one component.
-   **Create Component** Adds a component to a status page. Components nest recursively through a parent reference, which is how a page shows a region containing a database rather than a flat list, and a parent's state rolls up from its children.
-   **Update Component** Changes a component's name, description, position, or parent. Its state cannot be set here, because it comes from the notices attached to it.
-   **Delete Component** Removes a component. Its child components and the notices attached to it lose that association.

### Notices

7

-   **List Notices** Returns a page's notices. Each carries a read-only timeline state that says whether it is in the future, happening now, or in the past, which is what a workflow filters on to find the current situation.
-   **Get Notice** Returns one notice.
-   **Create Incident Notice** Opens an unplanned incident on the status page. With publishing on this reaches real customers across every configured channel the moment it is created, and it cannot be unsent. Attaching component associations is what marks those components degraded and clears them when the notice resolves.
-   **Create Maintenance Notice** Schedules a planned maintenance window. The start is split across a date field and a time field, and the end is a duration in minutes rather than a timestamp. Schedule automation moves the notice through underway to complete on its own, which is what stops a finished window from sitting at scheduled indefinitely.
-   **Create General Notice** Posts a notice that is neither an incident nor maintenance, which suits a changelog entry or an announcement and marks nothing degraded.
-   **Update Notice** Changes a notice, most often its state. This publishes too: moving an incident to resolved with publishing on tells every subscriber it is over. The state vocabulary depends on the notice type, and setting a maintenance state on an incident is refused rather than translated.
-   **Delete Notice** Removes a notice and its updates from the status page. This erases incident history, which is usually the wrong response to a mistake, because resolving the notice or setting it to false alarm keeps the record and explains what happened.

### Notice Updates

5

-   **List Notice Updates** Returns the comments posted on a notice, in order. The record of what customers have already been told.
-   **Get Notice Update** Returns one comment on a notice.
-   **Add Notice Update** Posts a comment on an existing notice. The operation an incident workflow uses most, because it says something new without changing the notice's state, which is what a progress update is. With publishing on it reaches subscribers.
-   **Update Notice Update** Rewrites a comment on a notice. It does not un-send the notification the original already produced, so a correction usually belongs as a new update rather than as an edit.
-   **Delete Notice Update** Removes a comment from a notice. The notification it produced has already gone out.

### Templates

9

-   **List Notice Templates** Returns a page's notice templates. A template is the pre-written version of a bad day: agreed wording, drafted calmly, so an incident workflow does not compose customer-facing prose under pressure.
-   **Get Notice Template** Returns one notice template.
-   **Create Notice Template** Saves reusable wording for opening a notice.
-   **Update Notice Template** Changes a notice template's wording.
-   **Delete Notice Template** Removes a notice template.
-   **List Update Templates** Returns a page's update templates, which are the pre-written comments posted onto an existing notice. A separate resource from notice templates: one opens an incident, the other continues it.
-   **Create Update Template** Saves reusable wording for a comment on a notice.
-   **Update Update Template** Changes an update template's wording.
-   **Delete Update Template** Removes an update template.

### Subscribers

5

-   **List Subscribers** Returns a page's subscribers and the channels each is notified through. This is personal data: the emails and phone numbers of real customers.
-   **Get Subscriber** Returns one subscriber.
-   **Create Subscriber** Subscribes somebody to a status page's notices, which signs a real person up for emails and text messages without them asking. A phone number needs its international dialing code, because a wrong one texts a stranger. A Slack or Teams webhook URL subscribes a channel rather than a person, which is the right shape for an internal team.
-   **Update Subscriber** Changes a subscriber's details or the channels they are notified through. Turning the notify flags off is the gentle unsubscribe: it keeps the record and stops the messages.
-   **Delete Subscriber** Unsubscribes somebody and removes their record. This is the operation a data-deletion request needs, which the notify flags do not satisfy.

### Reference

1

-   **List Timezones** Returns the timezone names a status page accepts. The authoritative list for the page timezone field, and worth reading rather than assuming a name will be accepted.

## Frequently Asked Questions

### What can FlowRunner do with Sorry?

FlowRunner agents can run List Status Pages, Get Status Page, and Create Status Page in Sorry, plus 40 more actions.

### Does connecting Sorry to FlowRunner require OAuth?

No. Sorry connects to FlowRunner with an API key, no OAuth flow required.

### Can Sorry trigger a FlowRunner workflow automatically?

Sorry doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

**Work at Sorry?** This integration exposes Sorry to AI agents on every FlowRunner plan, including through MCP, at no cost to you. [See what FlowRunner offers integration partners](https://flowrunner.ai/integrations/partners), including how to keep this page current.

---
Markdown version of https://flowrunner.ai/integrations/sorry. Site index: https://flowrunner.ai/llms.txt
