Early bird discounts live! Claim your offer

subscription.upgraded

Subscriber moved to a higher-priced plan.

When this fires

A subscriber is switched to a higher-priced plan on the same project. The plan assignment, currency, and stored price on the Subscriby subscription record are updated, and this event reports the move.

The switch does not itself perform a provider-side pro-ration or issue a charge. Any billing adjustment is whatever the provider does on the next cycle.

Required ability

project-subscription:view — token must carry this at mint time to subscribe an endpoint to this event.

Payload

{
  "id": "evt_01HX...",
  "type": "subscription.upgraded",
  "created_at": "2026-05-22T10:05:00Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "subscription_id": "5b7e2d40-1a86-4c39-97f2-e83d0b16c5a4",
    "subscriber_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",
    "from_plan_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b",
    "to_plan_id": "e07b4a29-51c6-4d83-9f10-2b8ac635d174",
    "proration_amount": null
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways subscription.upgraded for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring UUIDProject this event belongs to.
data.subscription_idstring UUIDSubscription identifier.
data.subscriber_idstring UUIDSubscriber's project-scoped user id.
data.from_plan_idstring UUIDPlan id the subscription was on prior to the change.
data.to_plan_idstring UUIDPlan id the subscription is now on.
data.proration_amountnullReserved. Always null — pro-ration is not yet computed for this event.

Caveats

  • Direction is decided by comparing the two plan prices, normalised to USD, at switch time. Only a strictly higher new price emits subscription.upgraded — an equal-price switch emits subscription.downgraded, which is worth guarding for if you offer same-price plan swaps.
  • Trial windows do not carry across switches; if the destination plan has a trial it does not start.

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request