Early bird discounts live! Claim your offer

plan.created

A plan is first created on a project.

When this fires

A creator creates a new subscription plan on a project. The plan is immediately eligible for purchase if it was created in the active state.

Required ability

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

Payload

{
  "id": "evt_01HX...",
  "type": "plan.created",
  "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
    }
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways plan.created for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring ULIDProject this event belongs to.
data.plan.idstring ULIDPlan identifier.
data.plan.namestringDisplay name.
data.plan.pricenumberPrice in major units of currency.
data.plan.currencystringISO 4217 currency code.
data.plan.billing_cycleenum: monthly | quarterly | yearly | weekly | lifetimeBilling cadence.
data.plan.trial_daysintegerTrial length in days; 0 when trial is disabled.
data.plan.activebooleantrue if the plan is purchasable.

Caveats

  • A plan.created event does not imply the plan has been synced to a payment-provider catalog. Listen for plan.sync_completed for that.
  • Trial is configured at create time; changing it later fires plan.updated.

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