koala73 / koala73/worldmonitor

epic: API plan-limit upgrade lifecycle — detect → notify → self-serve upgrade (no auto-charge, no silent throttle)

Open
#4,635 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

epic P2 payment
Dominant language
TypeScript
Stars
87.1k
Forks
13.2k
Avg merge
8h 4m
Merged PRs (30d)
825

Description

Problem

API customers who exceed their plan caps have no consent-based path today. We cannot auto-move them to a pricier plan (that charges them without consent), and there's no way to notify them or let them self-serve upgrade. So the only current outcomes are bad: silently throttle them (once #3199 enforcement flips on) or surprise-charge them. The right lifecycle: detect → notify → offer self-serve upgrade → customer upgrades OR reduces traffic (their choice).

Surfaced concretely: the #3199 shadow-audit found 3 active api_starter customers steadily over their caps (e.g. user_3CUolmnQ at 268/min·4,016/day) — Business-scale usage on a Starter plan — with no way to move them up short of a manual, non-consensual Dodo-dashboard edit.

Lifecycle / children

  1. Detect + notify (#NOTIF) — spot accounts approaching/over caps from usage telemetry (wm_api_usage / #3199 meter) and email/in-app them with an upgrade CTA. No silent throttle, no auto-charge.
  2. Self-serve upgrade mechanism (#4634) — the "way to upgrade" the notification points to (Dodo portal plan-switch, in-app upgrade, or checkout-upgrade).
  3. Self-limit — a first-class valid outcome; just needs honest messaging (usage vs cap), no build.

Relationship to existing work

  • #3199 (per-tier rate limits, shadow) — this lifecycle is the humane layer that must exist before enforcement hard-429s anyone. Notify + offer upgrade first; enforce is the backstop.
  • #4560 (usage-based overage billing) — notify→upgrade is the pre-billing consent path; if/when overage billing ships, the same detection powers "you're in overage" messaging.

Product decisions to resolve in planning (ce-brainstorm)

  • Notification thresholds (80% / 100% / sustained-over-burst) and spike-vs-sustained logic.
  • Channels (email, in-app, both) + cadence / anti-spam.
  • Upgrade UX: Dodo portal plan-switch vs in-app upgrade vs self-serve checkout (and whether to make Business self-serve).
  • Sequencing: does this gate the #3199 enforce flip? How does it hand off to #4560 overage billing?
  • Copy / tone for over-limit + upgrade + self-limit-is-fine messaging.

Definition of done (epic)

A customer who crosses their plan caps is notified with a clear, honest message and a working self-serve path to upgrade — and can equally choose to reduce traffic — with no auto-charge and no silent throttle. This unblocks the #3199 enforce flip.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the wm_api_usage telemetry and #3199 meter work, then review child issues #NOTIF and #4634. Resolve the notification thresholds, channels, upgrade path, sequencing, and copy before implementation; done means customers receive an honest upgrade option or can reduce traffic without auto-charge or silent throttling.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, backend-api-design, payments
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.