← Files StripeARCHIVED FILE
skills/stripe-apps/references/onboarding-ux.md
2.65 KB · Oct 5, 2026 · 12:04 UTC
# Onboarding UX — first-run user experience
## Onboarding UX
**Plain-language:** “When someone installs your app for the first time, the first thing they see is your app’s welcome or setup screen. This is called onboarding.”
Design this experience carefully — it determines whether merchants understand how to use your app or give up immediately.
**Canonical page:** https://docs.stripe.com/stripe-apps/patterns/onboarding-experience
Read this page using WebFetch for the correct component props and patterns.
## Options from simplest to most complex
### Option 1 — Zero-touch onboarding (easiest)
If your app only uses Stripe data and doesn’t need its own login, there’s nothing to set up. The app works immediately after install.
Use `fetchStripeSignature` to identify the user without a login screen — the user’s Stripe identity proves who they are.
**When to use:** When your app doesn’t need third-party credentials or a separate user account.
### Option 2 — OnboardingView component
Show a setup screen the first time the user opens the app. Use the `onboarding` viewport to show a dedicated onboarding page.
In `stripe-app.yaml`, add the `onboarding` viewport:
```yaml
ui_extension:
views:
- viewport: onboarding
component: OnboardingView
- viewport: stripe.dashboard.customer.detail
component: App
```
For the correct `OnboardingView` component props and structure, read the canonical onboarding page. Key requirements:
- Use the `OnboardingView` component (not `ContextView`) for the onboarding viewport
- Include required props like `completed`, `tasks`, and `title`
### Option 3 — SignInView component (third-party login)
If users need to log in to a third-party service (connecting their Google account, Mailchimp, etc.), use `SignInView` to guide them.
For the correct `SignInView` props and usage, read: https://docs.stripe.com/stripe-apps/patterns/onboarding-experience
Use the Secret Store API to save the resulting OAuth token. See `backend.md`.
## Critical rule: always check onboarding status in every view
Don’t assume the user went through the onboarding flow in order. They might open a payment page before completing setup.
Check at the start of every page-specific view whether onboarding is complete. If not, show a prompt directing them to complete setup.
## Storing onboarding state
Use the Secret Store API to remember whether a user has completed onboarding.
For the correct Secret Store API patterns, read: https://docs.stripe.com/stripe-apps/store-secrets
Key facts:
- Use `user` scope for per-user onboarding state
- Use `account` scope for account-wide configuration
- Maximum 10 secrets per scope
SHA-256: 4cae4b0f34ea753cff507cc5986e54a8ce7c7c0e5b019d0a606402917f27d48b