Skip to main content
Docs navigation

Membership model

Members, tiers, and lifecycle — the core records every other NextWave concept hangs off of. Read them, create them, and renew them from a single nwp command.

Members

A member is the central record in NextWave. Every NFC card, redemption, check-in, and wallet pass ties back to exactly one member. A member belongs to a single tier, which determines what they're entitled to and when their access expires.

The core fields you'll work with:

FieldMeaning
idStable numeric identifier — use it everywhere
nameThe member's display name
emailUnique contact address
tier_idThe tier this member belongs to — drives benefits and expiry
statusLifecycle state — active or expired
expires_atISO date access lapses, or null for a lifetime membership

List your members, then fetch one by id:

$ nwp members list --output json
$ nwp members get 42 --output json

Every NextWave response is an envelope — success tells you whether the call worked, and data carries the payload:

json
{
  "success": true,
  "data": {
    "id": 42,
    "name": "Ada Lovelace",
    "email": "ada@example.com",
    "tier_id": 3,
    "status": "active",
    "expires_at": "2027-01-15",
    "attributed_to": 17
  }
}

Attribution chain

NextWave tracks who introduced whom. The attributed_to field points at the member who referred this one, forming a referral chain you can walk to understand how your community grew. Lifetime founders sit at the root with attributed_to: null; everyone they brought in points back to them. Use it to credit ambassadors, build referral leaderboards, or map your network.

Tiers

A tier is a membership level. NextWave supports a free tier alongside paid, Stripe-backed tiers. Each tier carries a price and a duration_months that decides how long membership lasts before it needs renewing.

  • duration_months: 12 — a member added today gets an expires_at twelve months out.
  • duration_months: 0lifetime. The member's expires_at is null and never lapses.

Lifetime is zero, not infinity

Across NextWave, 0 on a tier's duration_months means “never expires.” That maps straight through to a member's expires_at being null. If you see a null expiry, the member is lifetime — not broken.

Lifecycle & status

A member moves through a small, predictable set of states:

  1. Activestatus: "active" and either a future expires_at or a lifetime null. Benefits redeem, cards tap, passes stay valid.
  2. Expiredexpires_at has passed. The member flips to status: "expired" and loses access until renewed.
  3. Renewed — a renewal pushes expires_at forward by the tier's duration_months and returns the member to active. Paid renewals are settled through Stripe.

Because lifetime members carry a null expiry, they never enter the expired state — there's nothing to renew.

Where to go next

Members are the “who.” Next, wire up the “what” and the “how.” Benefits & redemptions covers what a tier entitles a member to and how those get redeemed. NFC cards & wallet covers binding a physical or digital credential to the member.