Version

plan.* events

Fires on every change to a plan's state, pricing or storefront position.

Fires on every change to a plan's state, pricing or storefront position. Consumers commonly use these to keep a pricing-page cache or a CRM field in sync.

Background

Example envelope

{
  "id": "evt_01HX...",
  "type": "plan.updated",
  "created_at": "2026-05-18T10:05:00Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "plan": {
      "id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b",
      "name": "Premium Monthly",
      "price": "29.0000",
      "currency_id": "8f27a0d4-63be-4915-8c07-1a5d9e34b628",
      "billing_cycle": "month",
      "active": true
    },
    "changes": {
      "price": { "from": "25.0000", "to": "29.00" }
    }
  }
}

The data.changes block is present on plan.updated and identifies the fields that changed. For other events it is omitted. Each from is the plan's previous value after model casting, so price is a string and an enum column is its backed string value, while each to is the caller-supplied value exactly as validated.

Required ability

Tokens subscribing to plan.* events must carry project-subscription-plan:view at mint time.

Events

How is this guide?

Last updated on

Version

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

For AI agents: llms.txt · llms-full.txt