Skip to content

Onboarding

When you first sign in at app.engram.page, Engram walks you through a short onboarding wizard before opening your vault. The wizard exists because Engram requires Terms acceptance and an active subscription state before vault endpoints are reachable.

The wizard is two steps:

  1. Agreement — accept the Terms of Service and Privacy Policy. Logged in the server-side user_agreements table against the current CURRENT_TOS_VERSION.
  2. Billing — pick a plan and complete checkout through Paddle (or pick Free, which skips Paddle entirely). See Billing → Tiers for what each tier covers.

When both steps are complete, you’re handed off to the vault browser.

The backend wraps /api/notes, /api/search, and /api/folders behind a RequireOnboarding plug that verifies:

  • Latest Terms have been accepted by this user
  • Subscription is in good standing (or self-host, which bypasses this check entirely)

If either check fails, the API returns 403 and the web app redirects back into the wizard. This means you can’t accidentally get into a broken half-onboarded state — the gate either lets you through or gives you the screen that resolves the missing step.

On self-host, billing is off by default (no PADDLE_API_KEYconfig :engram, :billing_enabled is false). The wizard short- circuits past the plan-choice step. You’ll still accept Terms once.

You can’t manually re-run it — once accepted, you’re past it. If Terms change, Engram bumps the version server-side and the next API call returns 403; the app re-renders the Terms acceptance step only. Plan changes happen on the Billing page, not in the wizard.