# Onboarding for Stripe Apps Learn how to build an onboarding flow for your Stripe app users. ## Before you begin [Create an app](https://docs.stripe.com/stripe-apps/create-app.md). ## Best practices The ideal onboarding flow is: - **Effortless**: Users can onboard quickly and easily, while staying focused on their immediate task and providing only necessary information. - **Customizable**: Onboarding can scale up or down based on user needs. Make sure the flow is versatile, yet focused. - **Relevant**: Users can complete the most important tasks so they can start using the app. ## Onboarding flow Enable users to use your app as quickly as possible with minimal setup. Keep the onboarding flow brief and include authorization to connect your users’ Stripe accounts to your product. If users must complete setup tasks before using the app, use the [OnboardingView](https://docs.stripe.com/stripe-apps/components/onboardingview.md) component in the `onboarding` [viewport](https://docs.stripe.com/stripe-apps/reference/viewports.md) to clearly communicate the required setup tasks. For each onboarding step, show users a primary action to continue to the next step, such as “Continue.” > You can’t use the OnboardingView component for new feature guidance, promotional offers, or to display large documents unrelated to onboarding. ### Launch the onboarding flow After users install the app, launch the onboarding flow as a [post-install action](https://docs.stripe.com/stripe-apps/post-install-actions.md#link-to-onboarding). You can also create a [deep link](https://docs.stripe.com/stripe-apps/deep-links.md) to launch the onboarding flow from your app drawer or from an email or other source. To customize the onboarding experience, use [environment.queryParams](https://docs.stripe.com/stripe-apps/reference/extensions-sdk-api.md#environment) to pass in context. For example, a deep link with `?app_task=rewardsConfig` allows users to resume onboarding at a specific step, or `?app_source=email` tracks how users arrived at your onboarding flow. ## Sign in flow Detect whether the user already has an account for your product and allow them to enter a sign in flow. The sign in flow must provide the path of least resistance and avoid unnecessary steps, as shown in the following example: ![](https://b.stripecdn.com/docs-statics-srv/assets/activation-flow-01.03627e4cf7c6d6f62583c6814248114e.png) If users must sign in as part of the setup process, use the [SignInView](https://docs.stripe.com/stripe-apps/components/signinview.md) component as a step during onboarding. If users must sign in to an external site, be sure to collect sensitive credentials on that site and not within the Stripe Dashboard. This helps to avoid compromising passwords. Always redirect users back to Stripe after sign in is complete.