Skip to content

Upgrades: what moves it

Upgrades is the ARR gained from Customers who paid in both windows and now pay more.

Upgrades is the ARR gained from Customers who paid in both windows and pay more in this one. Grow each Customer moves it.

The number

Upgrades
You, to your agent

What moved upgrades this week, and which Play moved it?

curl "https://api.sb/leaseline.app/events?where=name%20%3D%20%22Subscription.resized%22%20and%20at%20%3E%3D%20%222026-10-12%22&total=true" \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"

# Not live yet (gaps #4)
curl -X POST https://api.sb/leaseline.app/metrics/query \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"metric":"expansion-arr","shape":"trend","breakdown":"play","window":"7d"}'
import { $ } from 'startup-builder'

const { total } = await $.Event.list({ where: 'name = "Subscription.resized" and at >= "2026-10-12"', total: true })   // seat and plan changes up
return await $.Metric.query({ metric: 'expansion-arr', shape: 'trend', breakdown: 'play', window: '7d' })   // by the Play credited · Not live yet, gaps #4
npx startup-builder do Event.list --json '{"where":"name = \"Subscription.resized\" and at >= \"2026-10-12\"","total":true}'
npx startup-builder do Metric.query --json '{"metric":"expansion-arr","shape":"trend","breakdown":"play","window":"7d"}'   # Not live yet (gaps #4)
{
  "name": "do",
  "arguments": {
    "code": "const { total } = await $.Event.list({ where: 'name = \"Subscription.resized\" and at >= \"2026-10-12\"', total: true })   // seat and plan changes up\nreturn await $.Metric.query({ metric: 'expansion-arr', shape: 'trend', breakdown: 'play', window: '7d' })   // by the Play credited · Not live yet, gaps #4"
  }
}
Response200application/json
{
  "metric": {
    "$id": "https://api.sb/leaseline.app/metrics/expansion-arr",
    "$type": "Metric",
    "name": "Expansion ARR"
  },
  "week": "2026-10-19",
  "value": 347,
  "rows": [
    {
      "play": "usage-upsell",
      "value": 347,
      "customers": 1
    }
  ]
}
sample · 1 Not live yetPreview

+$347 ARR from upgrades · ■■■■ Clear · n 1 · path → net-new-arr → arr

$.Metric.query({ metric: 'expansion-arr', shape: 'trend', breakdown: 'play', window: '7d' }) · sample

Credited toThis windowCustomers
Usage upsell+$347 ARR1

expansion-arr is this site’s proposal to the hub (Not live yet, gaps #4), so the figure above is a sample until the hub holds it.

Owner

AccountableFrom
customer-lead · Customer Leadthe filed bridge item, word for word

Worked by

TitleIts queue
CSMPOST /{namespace}/tasks/next on the CSM’s queue

Moved here by

HowWhere
PlaySignal expansion · Shows a growing Customer the seats they already use at the live Price, and names a successor within 5 business days when their champion leaves.
PlaySingle sign-on upgrade · Answers each single sign-on ask within one business hour with the plan that includes it, and the admin tests sign-in before paying.
PlayUsage upsell · Offers the next Offer when a Customer’s use paces past its Limit, with today’s prorated charge; the Customer upgrades in one press.
PageMore seats and upgrades
TitleCSM

The leaves

Under itMoved by
hiring-expansion-arrSignal expansion
limit-upgrade-arrUsage upsell
tier-upgrade-rateSingle sign-on upgrade

Compiled, not written: edit the records it reads (metrics/bridge.ts; cap), then regenerate. Every step runs from a sentence or a line of code. In your words: the CRM words you know, and where each lives here.

Contents