Background
The redesigned Settings → Usage shows raw counters (inbound·30d, outbound·30d, pending·30d, success rate) without any plan context — no caps, no $$ figure, no upgrade CTA. The Stripe integration exists on the backend (internal/billing) but is not surfaced in the new dashboard.
Scope
- Surface the user's current plan, period, and remaining quota in Settings → Usage.
- Add an Upgrade / Manage plan CTA that links to the Stripe customer portal.
- Render quota bars (used / cap) alongside the raw counters.
- Webhook events (
invoice.paid, customer.subscription.updated) reflect in the UI without a page reload.
- Free tier vs. paid tier degradation: clear messaging when caps are hit.
Effort
L (UI is straightforward, but the contract with internal/billing needs careful design — particularly around mid-period plan changes and prorations).
Recommendation
Add when go-to-market is ready. Until then, no UI work needed — the raw counters do degrade gracefully.
Source
BACKEND_TODO.md #10 (deferred bucket).
Background
The redesigned Settings → Usage shows raw counters (inbound·30d, outbound·30d, pending·30d, success rate) without any plan context — no caps, no $$ figure, no upgrade CTA. The Stripe integration exists on the backend (
internal/billing) but is not surfaced in the new dashboard.Scope
invoice.paid,customer.subscription.updated) reflect in the UI without a page reload.Effort
L (UI is straightforward, but the contract with
internal/billingneeds careful design — particularly around mid-period plan changes and prorations).Recommendation
Add when go-to-market is ready. Until then, no UI work needed — the raw counters do degrade gracefully.
Source
BACKEND_TODO.md #10 (deferred bucket).