← Files StripeARCHIVED FILE

skills/stripe-apps/references/onboarding-ux.md

2.65 KB · Oct 4, 2026 · 12:03 UTC

↓ Download file

# 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