trial and grace states
Spirby reduces every org’s billing situation to one of five states. The ui and the api both branch on it.
the states
Section titled “the states”| State | Access | When you are here |
|---|---|---|
trial_active | full | trial is running. |
trial_grace | read-only | trial ended; 7-day grace running, subscribe to restore full access. |
subscribed | full | a paid subscription is live (active or trialing at the provider). |
past_due_grace | read-only | payment failed or sub canceled; grace clock running, update card or resub. |
archived | archived | grace expired with no payment. |
what “read-only” means
Section titled “what “read-only” means”In trial_grace and past_due_grace:
- the public board, roadmap, and changelog stay live for visitors
- the admin dashboard refuses mutations: no new boards, no new posts, no status changes, no comments from admins
- billing is the one thing you can still do, subscribe, manage, update card
The intent is to give visitors a stable experience while the team gets the billing side sorted.
what “archived” means
Section titled “what “archived” means”Public board redirects to a paused page. Admin dashboard shows a paywall. No data is deleted, subscribe and the org pops back into subscribed with everything intact.
subscribed wins
Section titled “subscribed wins”If a paid subscription is live, spirby ignores stale grace_period_ends_at values that might still be sitting on the row from an earlier past-due episode. Paid customers are never read-only because of leftover state.
why trial grace is derived
Section titled “why trial grace is derived”Trial grace is computed from trial_ends_at + 7 days rather than written into a column at the trial boundary. That avoids needing a periodic job to flip a flag at midnight; the state machine just reads the timestamp.
checking your state
Section titled “checking your state”The dashboard shows your billing state and how long is left on any active grace clock. Subscribe at any time to restore subscribed.