Skip to content

Commit a4651a3

Browse files
new price
1 parent f78c30e commit a4651a3

11 files changed

Lines changed: 182 additions & 69 deletions

File tree

apps/status-page/src/data/plans.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,22 @@ export const plans = [
5353
"audit-log": true,
5454
},
5555
},
56+
{
57+
title: "Scale",
58+
id: "scale",
59+
description: "For teams running serious infrastructure at scale",
60+
price: 500,
61+
limits: {
62+
monitors: 100,
63+
regions: 35,
64+
periodicity: "30s",
65+
"status-pages": 10,
66+
members: Number.POSITIVE_INFINITY,
67+
"notification-channels": 20,
68+
"custom-domain": true,
69+
"password-protection": true,
70+
"status-subscribers": true,
71+
"audit-log": true,
72+
},
73+
},
5674
];

apps/web/src/content/llms-context.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ export const PRODUCT_CONTEXT_MARKDOWN = `## Who it's for
1818
- **Hobby** — $0/month: 1 monitor, 6 regions, 10m check interval, 1 status page, 3 page components, 14-day data retention
1919
- **Starter** — $30/month: 20 monitors, 28 regions, 1m check interval, 1 status page, 20 components, 3-month retention, subscribers, custom domain, WhatsApp/SMS/PagerDuty alerts
2020
- **Pro** — $100/month: 50 monitors, 28 regions, 30s check interval, 5 status pages, 50 components, 12-month retention, private locations, OTel exporter, 20 notification channels
21+
- **Scale** — $500/month: everything in Pro plus 10 status pages, 500 page components, and White Label, Magic Link auth, and IP Restriction included at no extra cost
2122
22-
Annual billing gives 2 months free (Starter $300/yr, Pro $1,000/yr). Pricing is available in USD, EUR, and INR.
23+
Annual billing gives 2 months free (Starter $300/yr, Pro $1,000/yr, Scale $5,000/yr). Pricing is available in USD and EUR.
2324
2425
## Key Features
2526

apps/web/src/content/mdx-components/pricing-tabs.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import { usePathname, useRouter, useSearchParams } from "next/navigation";
99
import { useCallback } from "react";
1010

1111
const planColumns = [
12-
{ plan: "free" as const, header: "Hobby" },
1312
{ plan: "starter" as const, header: "Starter" },
1413
{ plan: "team" as const, header: "Pro" },
14+
{ plan: "scale" as const, header: "Scale" },
1515
] as const;
1616

1717
export function PricingTabs() {
@@ -67,7 +67,6 @@ function PricingUpdater({ interval }: { interval: BillingInterval }) {
6767
const formatPrice = useCallback(
6868
(plan: (typeof planColumns)[number]["plan"]) => {
6969
const config = allPlans[plan];
70-
if (plan === "free") return "Free - Hobby";
7170
const price = getPriceConfig(plan, "USD", interval);
7271
const formatted = new Intl.NumberFormat(price.locale, {
7372
style: "currency",
@@ -87,7 +86,7 @@ function PricingUpdater({ interval }: { interval: BillingInterval }) {
8786
const tables = document.querySelectorAll(".table-wrapper table");
8887
for (const table of tables) {
8988
const headers = table.querySelectorAll("thead th");
90-
// The pricing table has 4 columns: Features | Hobby | Starter | Pro
89+
// The pricing table has 4 columns: Features | Starter | Pro | Scale
9190
if (headers.length !== 4) continue;
9291

9392
for (let i = 0; i < planColumns.length; i++) {

apps/web/src/content/pages/unrelated/pricing.mdx

Lines changed: 48 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22
title: "Pricing"
33
publishedAt: "2025-11-10"
44
author: "Maximilian Kaske"
5-
description: "Start free with uptime monitoring and a status page. Upgrade to Starter ($30/mo) or Pro ($100/mo) for more monitors, team collaboration, and advanced features. No credit card required."
5+
description: "Start free with uptime monitoring and a status page. Upgrade to Starter ($30/mo), Pro ($100/mo), or Scale ($500/mo) for more monitors, team collaboration, and advanced features. No credit card required."
66
category: "company"
77
faq:
88
- question: "What billing options are available?"
9-
answer: "All paid plans are available with monthly or annual billing. Choose annual billing to get 2 months free — Starter at $300/year ($25/mo) and Pro at $1,000/year (~$83/mo)."
9+
answer: "All paid plans are available with monthly or annual billing. Choose annual billing to get 2 months free — Starter at $300/year ($25/mo), Pro at $1,000/year (~$83/mo), and Scale at $5,000/year (~$416/mo)."
1010
- question: "Can I switch between monthly and annual billing?"
1111
answer: "Yes. You can switch between monthly and annual billing at any time from your dashboard."
12-
- question: "What does the free plan include?"
13-
answer: "The free plan includes one monitor, one status page with three components, and a minimum check interval of 10 minutes. No credit card required."
12+
- question: "Do you offer a free plan?"
13+
answer: "Yes. Our free Hobby plan includes one monitor, one status page with three components, and a minimum check interval of 10 minutes. No credit card required."
1414
- question: "What are add-ons and how are they billed?"
1515
answer: "Add-ons are workspace-level settings like White Label, Email Authentication, IP Restriction, and extra status pages. Once enabled, they apply to your entire workspace. Add-ons are billed monthly regardless of your plan's billing cycle."
1616
- question: "Can I upgrade or downgrade my plan?"
1717
answer: "Yes. You can upgrade or downgrade at any time from your dashboard. Changes take effect immediately, and billing is prorated."
1818
- question: "What currencies do you support?"
19-
answer: "We support EUR, USD, and INR. Contact us at ping@openstatus.dev or book a call if you have questions about pricing in your currency."
19+
answer: "We support EUR and USD. Contact us at ping@openstatus.dev or book a call if you have questions about pricing in your currency."
2020
- question: "Do you offer refunds?"
2121
answer: "Yes. If you are not happy with openstatus, reach out at ping@openstatus.dev within 30 days of your payment and we will issue a full refund — no questions asked."
2222
- question: "Can I cancel my subscription at any time?"
@@ -33,50 +33,63 @@ faq:
3333
<PricingTabs />
3434
</Suspense>
3535

36-
| Features comparison | Free - Hobby |$30/month - Starter | $100/month - Pro |
36+
| Features comparison | $30/month - Starter | $100/month - Pro | $500/month - Scale |
3737
| --- | --- | --- | --- |
3838
| [Status Pages](/status-page) | | | |
39-
| Number of status pages | 1 | 1 +$20/mo./each | 5 +$20/mo./each |
40-
| Number of components | 3 | 20 | 50 |
39+
| Number of status pages | 1 +$20/mo./each | 5 +$20/mo./each | 10 +$20/mo./each |
40+
| Number of components | 20 | 50 | 500 |
4141
| Maintenance status | + | + | + |
4242
| Toggle numbers visibility | + | + | + |
43-
| Subscribers | | + | + |
44-
| Custom domain | | + | + |
45-
| Locale switcher | | + | + |
46-
| Slack Agent | | + | + |
47-
| White Label | | $300/mo. | $300/mo. |
43+
| Subscribers | + | + | + |
44+
| Custom domain | + | + | + |
45+
| Locale switcher | + | + | + |
46+
| Slack Agent | + | + | + |
47+
| White Label | $300/mo. | $300/mo. | + |
4848
| **Audience** | | | |
49-
| Password Protection | | + | + |
50-
| Email Authentification | | $100/mo. | $100/mo. |
51-
| IP Restriction | | $100/mo. | $100/mo. |
49+
| Password Protection | + | + | + |
50+
| Email Authentification | $100/mo. | $100/mo. | + |
51+
| IP Restriction | $100/mo. | $100/mo. | + |
5252
| [Monitors](/uptime-monitoring) | | | |
53-
| Check Interval | 10m | 1m | 30s |
54-
| Number of monitors | 1 | 20 | 50 |
53+
| Check Interval | 1m | 30s | 30s |
54+
| Number of monitors | 20 | 50 | 50 |
5555
| Multi-region monitoring | + | + | + |
56-
| Total regions | 6 | 28 | 28 |
57-
| Regions per monitor | 6 | 6 | 28 |
58-
| Data retention | 14 days | 3 months | 12 months |
59-
| Response logs | | + | + |
60-
| Private locations | | | + |
61-
| OTel Exporter | | | + |
62-
| Number of on-demand checks | 30/mo. | 100/mo. | 300/mo. |
56+
| Total regions | 28 | 28 | 28 |
57+
| Regions per monitor | 6 | 28 | 28 |
58+
| Data retention | 3 months | 12 months | 12 months |
59+
| Response logs | + | + | + |
60+
| Private locations | | + | + |
61+
| OTel Exporter | | + | + |
6362
| **Alerts** | | | |
6463
| Slack, Discord, Email, Webhook | + | + | + |
65-
| WhatsApp | | + | + |
66-
| SMS | | + | + |
67-
| PagerDuty | | + | + |
68-
| OpsGenie | | + | + |
69-
| Grafana OnCall | | + | + |
70-
| Number of notification channels | 1 | 10 | 20 |
64+
| WhatsApp | + | + | + |
65+
| SMS | + | + | + |
66+
| PagerDuty | + | + | + |
67+
| OpsGenie | + | + | + |
68+
| Grafana OnCall | + | + | + |
69+
| Number of notification channels | 10 | 20 | 20 |
7170
| **Collaboration** | | | |
72-
| Team members | 1 | Unlimited | Unlimited |
73-
| Audit log | | | + |
71+
| Team members | Unlimited | Unlimited | Unlimited |
72+
| Audit log | | + | + |
7473

7574

7675
---
76+
## Enterprise
77+
78+
For teams that need more than what Scale offers — **SOC2 reports**, **SAML/SSO**, **custom regions**, **higher monitor and status page limits**, a **dedicated SLA**, custom contracts, and invoicing. We will tailor a plan to your requirements.
79+
80+
<ButtonLink href="mailto:ping@openstatus.dev">Contact us</ButtonLink>
81+
82+
---
83+
7784

7885
## Frequently asked questions
7986

87+
<Details summary="Do you offer a free plan?">
88+
89+
Yes. Our free **Hobby** plan includes **one monitor**, **one status page with three components**, and a minimum check interval of **10 minutes**. No credit card required.
90+
91+
</Details>
92+
8093
<Details summary="Do you offer refunds?">
8194

8295
Yes. If you are not happy with openstatus, reach out at [ping@openstatus.dev](mailto:ping@openstatus.dev) within **30 days** of your payment and we will issue a full refund — no questions asked.
@@ -85,7 +98,7 @@ Yes. If you are not happy with openstatus, reach out at [ping@openstatus.dev](ma
8598

8699
<Details summary="What billing options are available?">
87100

88-
All paid plans are available with **monthly** or **annual** billing. Choose annual billing to get **2 months free** — Starter at **$300/year** ($25/mo) and Pro at **$1,000/year** ($83/mo).
101+
All paid plans are available with **monthly** or **annual** billing. Choose annual billing to get **2 months free** — Starter at **$300/year** ($25/mo), Pro at **$1,000/year** ($83/mo), and Scale at **$5,000/year** ($416/mo).
89102

90103
</Details>
91104

@@ -95,11 +108,6 @@ Yes. You can switch between monthly and annual billing at any time from your das
95108

96109
</Details>
97110

98-
<Details summary="What does the free plan include?">
99-
100-
The free plan includes **one monitor**, **one status page with three components**, and a minimum check interval of **10 minutes**. No credit card required.
101-
102-
</Details>
103111

104112
<Details summary="What are add-ons and how are they billed?">
105113

@@ -115,7 +123,7 @@ Yes. You can upgrade or downgrade at any time from your dashboard. Changes take
115123

116124
<Details summary="What currencies do you support?">
117125

118-
We support **EUR**, **USD**, and **INR**. Contact us at [ping@openstatus.dev](mailto:ping@openstatus.dev) or [book a call](https://openstatus.dev/cal) if you have questions about pricing in your currency.
126+
We support **EUR** and **USD**. Contact us at [ping@openstatus.dev](mailto:ping@openstatus.dev) or [book a call](https://openstatus.dev/cal) if you have questions about pricing in your currency.
119127

120128
</Details>
121129

packages/analytics/src/server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export type IdentifyProps = {
1717
fullName?: string | null;
1818
email?: string;
1919
workspaceId?: string;
20-
plan?: "free" | "starter" | "team";
20+
plan?: "free" | "starter" | "team" | "scale";
2121
// headers from the request
2222
location?: string;
2323
userAgent?: string;

packages/api/src/router/stripe/utils.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,23 @@ export const PLANS = [
7676
},
7777
},
7878
},
79+
{
80+
plan: "scale",
81+
price: {
82+
monthly: {
83+
priceIds: {
84+
test: "XXXX",
85+
production: "price_1Te9BLBXJcTfzsyJlXLsuyFP",
86+
},
87+
},
88+
yearly: {
89+
priceIds: {
90+
test: "XXXX",
91+
production: "price_1Te9BLBXJcTfzsyJliabl2ou",
92+
},
93+
},
94+
},
95+
},
7996
] satisfies Array<{
8097
plan: WorkspacePlan;
8198
price: {

packages/api/src/router/stripe/webhook.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ export const webhookRouter = createTRPCRouter({
117117
.get();
118118
if (!userResult) return;
119119

120-
const planOrder = ["free", "starter", "team"] as const;
120+
const planOrder = ["free", "starter", "team", "scale"] as const;
121121
const oldIndex = planOrder.indexOf(oldPlan ?? "free");
122122
const newIndex = planOrder.indexOf(newPlan ?? "free");
123123

0 commit comments

Comments
 (0)