Early bird discounts live! Claim your offer

plan.* events

Subscription plan lifecycle.

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

Events

EventFires when
plan.createdA plan is first created on a project.
plan.updatedAny mutable plan field changes (price, interval, trial, eligibility filters).
plan.activatedAn inactive plan is flipped to active.
plan.deactivatedAn active plan is flipped to inactive (still viewable, not purchasable).
plan.deletedThe plan row is hard-deleted.
plan.sync_completedA plan is synced to the external PSP catalog (Stripe, PayPal, Razorpay, Paystack).

See the dedicated pages above for full payload, field reference, and caveats per event.

Example payload

{
  "id": "evt_01HX...",
  "type": "plan.updated",
  "created_at": "2026-05-18T10:05:00Z",
  "api_version": "2026-05-01",
  "project_id": "prj_01HX...",
  "data": {
    "plan": {
      "id": "pln_01HX...",
      "name": "Premium Monthly",
      "price": 29.0,
      "currency": "USD",
      "billing_cycle": "monthly",
      "trial_days": 7,
      "active": true
    },
    "changes": {
      "price": { "from": 25.0, "to": 29.0 }
    }
  }
}

The data.changes block is present on plan.updated and identifies the fields that changed. For other events it's omitted.

Required abilities

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

How is this guide?

On this page

MemberPass 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