From 0a95eac3f76c20210bbc1565cbc3236ae3ac0b23 Mon Sep 17 00:00:00 2001 From: Adam Bowker Date: Thu, 16 Jul 2026 13:24:42 -0400 Subject: [PATCH] chore(billing): tighten usage-based billing copy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First pass of copy rewrites over the usage-based billing surfaces added in the cutover stack (#3485, #3487, #3488). - Announcement modal: shorter description; reframe the models bullet around open-source vs frontier; "$X/mo" and split "Adjust it any time…" sentences. - Usage-limit / model-gate modal: rewrite the model-gate body (now two paragraphs) and trim the free-tier org-limit body. - Plan & usage page: tighten the free and subscribed plan-card blurbs. Renders the model-gate body's paragraph break via whitespace-pre-line. Generated-By: PostHog Code Task-Id: 8dff0a32-c536-4b09-b5a1-087e800b4600 --- .../src/billing/usageLimitContent.test.ts | 2 +- .../core/src/billing/usageLimitContent.ts | 4 ++-- .../billing/UsageBillingAnnouncementModal.tsx | 20 +++++++++---------- .../src/features/billing/UsageLimitModal.tsx | 2 +- .../settings/sections/PlanUsageSettings.tsx | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/core/src/billing/usageLimitContent.test.ts b/packages/core/src/billing/usageLimitContent.test.ts index ba884c0d82..6d4fb8b074 100644 --- a/packages/core/src/billing/usageLimitContent.test.ts +++ b/packages/core/src/billing/usageLimitContent.test.ts @@ -9,7 +9,7 @@ describe("usageLimitContent", () => { subscribed: false, }); expect(content.title).toBe("Unlock premium models"); - expect(content.description).toContain("This model isn't"); + expect(content.description).toContain("open-source model"); expect(content.actionLabel).toBe("Add payment method"); }); diff --git a/packages/core/src/billing/usageLimitContent.ts b/packages/core/src/billing/usageLimitContent.ts index 433808d6fd..df6c2791c3 100644 --- a/packages/core/src/billing/usageLimitContent.ts +++ b/packages/core/src/billing/usageLimitContent.ts @@ -18,7 +18,7 @@ export function usageLimitContent(args: { return { title: "Unlock premium models", description: - "This model isn't included in the free tier. Add a payment method to your organization to unlock all models — you only pay for what you use. You can keep working now by switching to an included model.", + "To use this model, add a payment method to your account. Your first $20 of usage is on us each month - you only pay for what you use beyond that.\n\nOr, you can keep working now by switching to an open-source model.", actionLabel: "Add payment method", dismissLabel: "Not now", }; @@ -30,7 +30,7 @@ export function usageLimitContent(args: { title: "Free usage used up", description: `Your organization has used up its included PostHog Code usage.${ resetLabel ? ` ${resetLabel}.` : "" - } Add a payment method to keep going — you only pay for what you use.`, + } Add a payment method to keep going.`, actionLabel: "Add payment method", dismissLabel: "Not now", }; diff --git a/packages/ui/src/features/billing/UsageBillingAnnouncementModal.tsx b/packages/ui/src/features/billing/UsageBillingAnnouncementModal.tsx index 984ebee993..1ae16a6fc0 100644 --- a/packages/ui/src/features/billing/UsageBillingAnnouncementModal.tsx +++ b/packages/ui/src/features/billing/UsageBillingAnnouncementModal.tsx @@ -68,29 +68,29 @@ export function UsageBillingAnnouncementModal() { - Seat-based plans are gone — PostHog Code is now usage-based. You - only pay for what you use. + Seat-based plans are gone. PostHog Code is now usage-based. - • The first $20 of usage each month - is included. + • Every organization gets $20 of free usage per month. You only + pay for what you use beyond that. - • Premium models need a payment method; an open model stays free. + • Open-source models are available for everyone. To use frontier + models you'll need a card on file. {spendLimitUsd != null ? ( <> - • Your organization's spend limit is{" "} - {`${formatUsdAmount(spendLimitUsd)}/month`}{" "} - — adjust it any time in billing settings. + • Your organization's billing limit is{" "} + {`${formatUsdAmount(spendLimitUsd)}/mo`} + , adjustable anytime in your settings. ) : ( <> - • A default $50/month spend limit - applies — adjust it any time in billing settings. + • There's a default $50/mo{" "} + billing limit, adjustable anytime in your settings. )} diff --git a/packages/ui/src/features/billing/UsageLimitModal.tsx b/packages/ui/src/features/billing/UsageLimitModal.tsx index 2f25a5451a..02c04c09c4 100644 --- a/packages/ui/src/features/billing/UsageLimitModal.tsx +++ b/packages/ui/src/features/billing/UsageLimitModal.tsx @@ -57,7 +57,7 @@ export function UsageLimitModal() { {content.title} - + {content.description} diff --git a/packages/ui/src/features/settings/sections/PlanUsageSettings.tsx b/packages/ui/src/features/settings/sections/PlanUsageSettings.tsx index e794e5afd1..c18466a332 100644 --- a/packages/ui/src/features/settings/sections/PlanUsageSettings.tsx +++ b/packages/ui/src/features/settings/sections/PlanUsageSettings.tsx @@ -131,8 +131,8 @@ export function PlanUsageSettings() { {freeTier - ? "Your organization's first $20 of usage each month is included, with access to open models. Add a payment method to unlock premium models — you only pay for what you use." - : "Your organization pays for PostHog Code usage at cost — no seats, no subscriptions. The first $20 each month is included."} + ? "Your org's first $20 of usage each month is included, with access to open models. Add a payment method to unlock premium models, and only pay for what you use." + : "Your organization pays for PostHog Code usage at cost. The first $20 each month is included."} {subscribed && (