0saas

Job ticket 941008 · smb · incident clock · no subscription

Statuspage's free plan already has 100 subscribers and Slack notifications. The ladder prices reach, not sentences.

Free: 100 subscribers, 25 components, two team members, two metrics, email, Slack and Teams notifications, REST APIs. Hobby is US$29 a month for 250 subscribers. Incidents, components, scheduled maintenances and incident templates are printed as included on every plan — so what is missing at every price is the sentence you type at minute ten.

Statuspage and Atlassian are trademarks of Atlassian Pty Ltd. This is an independent, unaffiliated comparison built on Statuspage's own published pricing page, linked below and re-read every thirty days.

The incident clock — rendered in this browser

Source: noneRendered: 0Uploaded to 0saas: nothing

Sample data is illustrative, not a claim about Statuspage. Every Statuspage figure on this page comes from the linked pricing page, read 2026-09-28.

The prompt pack

Two prompts, each mapped one-to-one onto a Statuspage feature you are currently rationed on. Run them from this page with a free key, or copy them into any free chat model — the text is identical either way, and it is printed in full at the bottom of this section so it survives this site.

Loading the pack from tools.json… If this fails, the full prompt text is still readable below.

One-time unlocks only, never a subscription. If a price ever appears here it was read from Stripe in that request, not typed by hand. An unlock is client-side gating, not secure payment verification: it is stored in this browser and cannot prove payment to anyone else.

What Statuspage's own pricing page says

Read from atlassian.com/software/statuspage/pricing — public pages on 2026-09-28. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.

What Statuspage meters, and what the clock hands over — verified 2026-09-28
The jobStatuspage's own pricing page (read 2026-09-28)What it costsThis page + a free-tier model
The page, the components, the templatesFree: incidents, components, scheduled maintenances, templatesUS$0The words for them, at US$0
Reaching people100 subscribers free; 250 on HobbyUS$29/moNot ours: the clock writes, someone else sends
Slack and Teams notificationsOn the free planUS$0Not ours: no channel is connected here
The update at minute tenNot a product featureNot sold at any tierPre-written, per milestone, with a prohibition

What this replaces, and what it does not

A displacement claim you cannot substantiate is a lie with good typography. This is the whole scope, including the parts where Statuspage wins.

The clock, written in advance

Acknowledge inside ten minutes, then identified, monitoring, resolved — each with the sentence, the channel, the length that channel allows and the thing not to say yet.

Suspicion marked as suspicion

Rule 3 makes certainty visible: what is known, what is believed, what is unknown. A guessed cause in a status update is retracted later and remembered longer.

Component language, in the customer's words

Internal service names become names a subscriber recognises, each with one sentence on what degraded means for them and the premature inference it forbids.

Not a status page

No page is created, no component status is set, no subscriber is notified, no Slack or Teams message is posted, and no integration is connected. The page you publish on is yours.

Not a notification system

The prompts write text. Sending it to a hundred subscribers, an email list or a chat channel is the reader's platform, and the moment of sending is theirs.

Not legal or PR advice

Nothing here is drafted to manage liability. The clock is a communication aid; anything with legal exposure goes to a human who can see the whole picture.

The prompts, in full, as text

Copy these into any model. They are the product; the page around them is convenience. Each block is the exact system prompt the interactive runner sends, plus the user-message template.

Prompt 01 — 1. Comms clock · statuspage-comms-clock v1.0.0 · best ally: OpenRouter — :free model variants · openai/gpt-oss-20b

Replaces: Statuspage's Incident Templates and the update you type at minute ten — the same writing, written before the incident starts, when you still have time to think.

Why this model: Four registers in one voice under time pressure — acknowledge, identify, monitor, resolve — is exactly where a small fast model flattens the escalation, so the pack routes it to a mid-size free instruct model that keeps each step's certainty level distinct. Fallback ally: Google Gemini API — Free usage tier.

System prompt (2457 chars):

You are the communications desk of an incident. The engineer hands you notes from an outage — symptoms, what is known, what is suspected, who is affected — and you return a comms clock: the ordered updates to send during it, each with the minute it goes out, the sentence to send, the channel, and the one thing not to say yet. You are writing for people who are affected and cannot fix it, so every sentence is short, specific and free of adjectives. You never state a cause you have not been given, never promise a time, and never blame anyone.

Return ONLY one JSON object. No markdown fences, no commentary, no preamble.

{
  "kicker": string (max 8 words),
  "title": string (max 8 words),
  "subhead": string (max 20 words),
  "steps": [
    { "when": string (day, week or phase label), "duration": string (max 4 words), "title": string (max 8 words), "body": string (max 40 words) }
  ],
  "notes": [ string (one short footnote each) ]
}

Hard rules:
1. Return between four and eight steps, in the order they would be sent, and the 'when' of each must be a real point in the incident's clock — a minute mark, not 'ongoing'.
2. The first step must be an acknowledgement within the first ten minutes, and it must say what is affected without saying why. An outage update that guesses a cause is retracted later and remembered longer.
3. Every step's certainty must be visible: say what is known, what is suspected, or what is still unknown. Never let a suspicion be written as a fact — if a cause is suspected, the word 'appears' or 'we believe' must be in the sentence.
4. Never promise a fix time. If the engineer gave a time, quote it as a next update, not as a resolution; if they gave none, write 'next update within N minutes' using their stated cadence.
5. Each step's body must fit the channel named — under 200 characters for a status page card, under 400 for an email, and the body field must not exceed the channel it names.
6. The last step must be a resolution note that says what was affected, what fixed it, and whether anything is still degraded, with no marketing sentence anywhere in it.
7. Never name a customer, never speculate about data loss, and never write anything that admits liability. If the notes contain a likely data-loss question, the step must say the question is being answered, not answer it.
8. No emoji, no exclamation marks, no 'we apologise for any inconvenience'. Write every string in the language of the notes.

User message template:

Write the comms clock for this incident: What is happening, what is known, and what is suspected: {{incident}} Who is affected, what the audience already knows, and the update cadence they expect: {{audience}}

Variables:

  • {{incident}} — What is happening, what is known, what is suspected (max 2000 chars) sample data shipped with the tool
  • {{audience}} — Who is affected, and what they expect (max 800 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "steps" ], "properties": { "kicker": { "type": "string" }, "title": { "type": "string" }, "subhead": { "type": "string" }, "steps": { "type": "array", "minItems": 2, "maxItems": 16 }, "notes": { "type": "array" } } }

Decoding: temperature 0.5 · max 2400 output tokens · responseMimeType application/json · budget ~600 in / ~1,000 out for a full comms clock · cost per run: 1 request against a free OpenRouter daily pool; the relay floor needs no key at all.

Prompt 02 — 2. Component ledger · statuspage-component-ledger v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite

Replaces: The component names and their plain meanings: what 'Checkout — card capture' means to a customer, what to write when it degrades, and what must never be implied before you know.

Why this model: One plain-language line per service, over a pasted list of internal names, is a long read with a short write; a free long-context model keeps each component's customer-facing meaning consistent with the eleven others. Fallback ally: OpenRouter — :free model variants.

System prompt (2146 chars):

You are the component desk of an incident communications page. The engineer hands you the list of services their status page shows, each with its internal name and what it does. You return a component ledger: for each, the name a subscriber would recognise, one sentence saying what it means when that component is degraded, and the thing that must not be implied before the cause is known. You are writing for a customer reading a coloured dot, not for an engineer reading a dashboard.

Return ONLY one JSON object. No markdown fences, no commentary, no preamble.

{
  "kicker": string (max 8 words),
  "title": string (the table's caption, max 8 words),
  "columns": [ { "label": "As you named it" }, { "label": "Name a subscriber would recognise" }, { "label": "What degraded means, in one sentence" }, { "label": "Never imply this before it is known" } ],
  "rows": [ [ value, value, value — one array per row, same order as the columns, every cell a short string ] ],
  "notes": [ string (one short footnote each) ]
}

Hard rules:
1. Return one row per component the engineer listed, in their order, and never add a component they did not list.
2. The subscriber-facing name must drop internal product codenames and keep what the customer calls it. If two components differ only internally, say so in the row and propose one public name for both.
3. The degraded sentence must describe the customer's experience, not the system's: 'payments are failing for some cards', not 'tokenisation is degraded on the acquirer route'.
4. The prohibition cell must name a specific premature inference for that component — blaming a provider, admitting data loss, or promising a fix time — and it must be a claim someone would plausibly make in the first ten minutes.
5. Where a component is internal and has no customer-visible symptom, say that plainly in the third column: a dot that never changes is a promise not to lie.
6. Never invent a dependency between components, and never claim one component is downstream of another unless the engineer said so.
7. No emoji, no status icons, no colour names. Write every string in the language of the input.

User message template:

Write the component ledger for this status page: The components as they are named internally, and what each one does: {{components}} Who reads the page, and what they are actually trying to find out: {{readers}}

Variables:

  • {{components}} — The components as named internally, and what each does (max 2000 chars) sample data shipped with the tool
  • {{readers}} — Who reads the page, and what they want to know (max 600 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "steps" ], "properties": { "kicker": { "type": "string" }, "title": { "type": "string" }, "subhead": { "type": "string" }, "steps": { "type": "array", "minItems": 2, "maxItems": 16 }, "notes": { "type": "array" } } }

Decoding: temperature 0.5 · max 1800 output tokens · responseMimeType application/json · budget ~500 in / ~800 out for a seven-row ledger · cost per run: 1 request against the Gemini free tier; no per-minute spend, no card on file.

Questions worth asking before you cancel

Isn't the status page the product here, not the words?

The page is the product, and the page is free up to 100 subscribers with the templates and both chat integrations included. This page does not replace it. It replaces the part where an engineer with less information than the audience has to type something true in the first ten minutes.

Why does it never promise a fix time?

Because the promise outlives the incident. Rule 4 turns a time into a commitment to give a *next update* instead, which is the thing you can actually keep. If your engineers have committed to a time publicly, that decision is yours and this page will not argue with it — but it will not invent one either.

What about private status pages for internal staff?

The same pricing page prints a separate ladder for private pages — Starter US$79, Growth US$249, Corporate US$599 per month — which is a different product for authenticated employees. It is recorded in the evidence file and deliberately not quoted on this page, because it is not the thing being displaced.

Where do the numbers come from?

Statuspage's own pricing page, read 2026-09-28, on the public-page tab. The free plan's own sentence is quoted verbatim, and the core feature list is the page's, not ours.

Does it work without an API key?

Yes. Copy the printed prompt into any free chat model, paste the JSON back, and the clock renders here as the same sequence of stamped minutes, with the component table beneath it.

Nothing is loaded from X or LinkedIn until you click, and no share is counted, logged or reported back to us — the buttons are plain links to each network's own share page.

Next on the ledger