# Account Source: https://docs.rownd.io/administration/account Your account is created when you sign into Rownd for the first time. Your account information can be found in the "Account and Billing" section of the platform. This includes your account name, Rownd subscription plan, and billing information. Your account name will be included in the invite email for teammates you invite to your account. We recommend that your account name matches the name of your company or product. **Updating your account information** 1. In the [Rownd platform](https://app.rownd.io) open the top right corner menu under your username. 2. From the menu select **Account and billing.** 3. In the account and billing page, update your account name in the **Account name** field, then press **Save**. # Teams Source: https://docs.rownd.io/administration/teams Give team members access to co-manage aspects of your Rownd account. #### Inviting new team members First, sign into your Rownd account, click on the dropdown menu on the top right and select **Manage team**. On the **Team** page, click **Invite team member**. Enter the new team member's **email** **address** and choose the **level of access** to grant. There are three different **permission** levels: * **Editor:** Can add and edit applicationsbut cannot invite team members or modify account settings. * **Admin:** Full account control over apps, team members, billing, etc. * **View-only:** Can view most aspects of the platform but cannot make any changes. Click **Save** to send the invitation. Your team member will receive an email containing a link that will automatically sign them into Rownd and prompt them to accept or decline the invitation to join your account. Once the invitation is sent, the new team member will show as **pending** until they've accepted the invitation. Once they've accepted the invitation, the pending status will be removed. #### Editing a team member's access Click **Edit** next to the team member whose access you want to modify. Choose an updated **permission** level for the team member. Then click **save** to update. #### Removing a team member Click **Delete** next to the team member who you want to remove On the resulting confirmation dialog, click **Delete** to confirm the action. The team member will be removed from your account. # Create a magic link Source: https://docs.rownd.io/api-reference/authentication/create-magic-link POST /hub/auth/magic Generate a magic link # Create a magic link Source: https://docs.rownd.io/api-reference/authentication/create-user-magic-link POST /me/auth/magic Enables the user identified by their access token to create a magic link for themselves. Useful for signing in to a new device via QR code, among other things. # Overview Source: https://docs.rownd.io/api-reference/authentication/overview Rownd's API leverages two authentication mechanisms depending on which operation you're invoking. **User-scoped** APIs enable your users to manage their profile information, register passkeys, set preferences, and so on. **App-scoped** APIs allow you to manage aspects of your app, read and update user profiles, add or remove users, and fetch keys necessary for validating a user's bearer token. Rownd leverages API keys for app-scoped authentication. You'll see these referred to as "app keys" throughout the platform and documentation. To generate a new app key/secret pair, see this [reference guide](/configuration/app-credentials). ### App-scoped authentication When making calls to the Rownd REST API, you must include your app key/secret pair in the request headers. The app key is used to identify the app making the request, and the secret is used to authenticate the request. Ensure the following headers are present: * `X-Rownd-App-Key: ` * `X-Rownd-App-Secret: ` User-initiated requests leverage bearer token authentication, which is generated when a user signs in. You'll usually leverage this token from one of our SDKs in order to call user-based Rownd APIs in addition to your own API stack. ### User-scoped authentication In most cases, Rownd's SDKs and the Rownd Hub call Rownd APIs on behalf of a user. In these cases, the user's bearer token is included in the request headers. The bearer token is used to identify the user making the request, and to authenticate the request. We recommend that you use Rownd bearer tokens to authenticate users against your own API or service. Since Rownd's tokens are signed asymmetrically, you can use our public JWK set to validate a token's signature. If you're using a Rownd server SDK (e.g., Node.js), convenience methods or middleware are provided to automatically validate a bearer token and attach the user's profile to the request object. Use these endpoints to fetch our OIDC and/or JWK configurations: * [OIDC configuration](/api-reference/authentication/retrieve-oidc) * [JWK set](/api-reference/authentication/retrieve-jwk) # Retrieve Rownd JWK set Source: https://docs.rownd.io/api-reference/authentication/retrieve-jwk GET /hub/auth/keys Retrieve the current JWK set that validates Rownd-issued tokens # Retrieve OIDC configuration Source: https://docs.rownd.io/api-reference/authentication/retrieve-oidc GET /hub/auth/.well-known/oauth-authorization-server # Groups overview Source: https://docs.rownd.io/api-reference/groups/overview Groups API documentation With Rownd groups, you can segment your application users into logical segments. Each segment contains group members which are tied back to application users via their `user_id`. With the group APIs, you can add a group member directly or by creating a group invite. Group invites result in a one-time-use link that you can send to a user that when visited adds them to the group with specific roles. Each group member is assigned to roles, which are an array of strings like `"admin"` or `"editor"`. You can specify member roles via member creation or updates, or during an invite creation. The groups APIs are split into two sets that differ slighly on imlementation: [Platform](#platform) and [User-Facing](#userfacing) ## Platform The [platform](/api-reference/groups/platform/group-create) APIs accept Rownd application credentials for authentication. They are intended for use by an application administrator. You should use these APIs on your backend server or equivalent to manage groups, members, and invites ## User-Facing The [user-facing](/api-reference/groups/user/group-create) APIs accept an authenticated user's Rownd access token (JWT) for authentication. This set of APIs is intended for use in frontend applications when you want to give your users the ability to manage their own groups, members, and invites. ### User-Facing Distinctions The user-facing APIs differ slightly in implementation. Here are the main differences: #### Authorization Group members and invites can only be managed by group owners. A group owner is a group member that has the `"owner"` role. #### Group Owners The creator of a group is always given the `"owner"` role. ## Getting Started Here are a few key endpoints to help you get started integrating Groups into your app: Platform API for creating a group Platform API for creating a group invite Platform API for updating a group member Platform API for deleting a group member # Create a group Source: https://docs.rownd.io/api-reference/groups/platform/group-create POST /applications/{app}/groups Platform API for creating a new group # Delete a group Source: https://docs.rownd.io/api-reference/groups/platform/group-delete DELETE /applications/{app}/groups/{group} Platform API for deleting a group # List groups Source: https://docs.rownd.io/api-reference/groups/platform/group-list GET /applications/{app}/groups Platform API for listing all groups belonging to an app # Retrieve a group Source: https://docs.rownd.io/api-reference/groups/platform/group-read GET /applications/{app}/groups/{group} Platform API for retrieving a group # Update a group Source: https://docs.rownd.io/api-reference/groups/platform/group-update PUT /applications/{app}/groups/{group} Platform API for updating a group # Create a group invite Source: https://docs.rownd.io/api-reference/groups/platform/invites/invite-create POST /applications/{app}/groups/{group}/invites Platform API for creating a group invite # Delete a group invite Source: https://docs.rownd.io/api-reference/groups/platform/invites/invite-delete DELETE /applications/{app}/groups/{group}/invites/{invite} Platform API for deleting a group invite # List group invites Source: https://docs.rownd.io/api-reference/groups/platform/invites/invite-list GET /applications/{app}/groups/{group}/invites Platform API for listing group invites # Retrieve a group invite Source: https://docs.rownd.io/api-reference/groups/platform/invites/invite-read GET /applications/{app}/groups/{group}/invites/{invite} Platform API for retrieving a group invite # Update a group invite Source: https://docs.rownd.io/api-reference/groups/platform/invites/invite-update PUT /applications/{app}/groups/{group}/invites/{invite} Platform API for updating a group invite # Create a group member Source: https://docs.rownd.io/api-reference/groups/platform/members/member-create POST /applications/{app}/groups/{group}/members Platform API for creating a member within the group. You can create a member by providing a user ID or a user lookup value like an email address or phone number. The first member created within a group will automatically be assigned the `'owner'` role. # Delete a group member Source: https://docs.rownd.io/api-reference/groups/platform/members/member-delete DELETE /applications/{app}/groups/{group}/members/{member} Platform API for deleting a group member # List group member Source: https://docs.rownd.io/api-reference/groups/platform/members/member-list GET /applications/{app}/groups/{group}/members Platform API for listing group members # Retrieve a group member Source: https://docs.rownd.io/api-reference/groups/platform/members/member-read GET /applications/{app}/groups/{group}/members/{member} Platform API for retrieving a group member # Update a group member Source: https://docs.rownd.io/api-reference/groups/platform/members/member-update PUT /applications/{app}/groups/{group}/members/{member} Platform API for updating a group member # Create a group Source: https://docs.rownd.io/api-reference/groups/user/group-create POST /me/groups User-facing API for creating a new group. The callee is automatically added with the `"owner"` role. # Delete a group Source: https://docs.rownd.io/api-reference/groups/user/group-delete DELETE /me/groups/{group} User-facing API for deleting a group # List groups Source: https://docs.rownd.io/api-reference/groups/user/group-list GET /me/groups User-facing API for listing groups # Retrieve a group Source: https://docs.rownd.io/api-reference/groups/user/group-read GET /me/groups/{group} User-facing API for retrieving a group # Update a group Source: https://docs.rownd.io/api-reference/groups/user/group-update PUT /me/groups/{group} User-facing API for updating a group # Create a group invite Source: https://docs.rownd.io/api-reference/groups/user/invites/invite-create POST /me/groups/{group}/invites User-facing API for creating a group invite. An invite can be created for a user by providing their `user_id`, `email`, or `phone`. Once accepted, the user will be added as a member within the group and be assigned the roles specified in the invite. # Delete a group invite Source: https://docs.rownd.io/api-reference/groups/user/invites/invite-delete DELETE /me/groups/{group}/invites/{invite} User-facing API for deleting a group invite # List group invites Source: https://docs.rownd.io/api-reference/groups/user/invites/invite-list GET /me/groups/{group}/invites User-facing API for listing group invites # Retrieve a group invite Source: https://docs.rownd.io/api-reference/groups/user/invites/invite-read GET /me/groups/{group}/invites/{invite} User-facing API for retrieving a group invite # Update a group invite Source: https://docs.rownd.io/api-reference/groups/user/invites/invite-update PUT /me/groups/{group}/invites/{invite} User-facing API for updating a group invite # Create a group member Source: https://docs.rownd.io/api-reference/groups/user/members/member-create POST /me/groups/{group}/members User-facing API for creating a group member # Delete a group member Source: https://docs.rownd.io/api-reference/groups/user/members/member-delete DELETE /me/groups/{group}/members/{member} User-facing API for deleting a group member # List group members Source: https://docs.rownd.io/api-reference/groups/user/members/member-list GET /me/groups/{group}/members User-facing API for listing group members # Retrieve a group member Source: https://docs.rownd.io/api-reference/groups/user/members/member-read GET /me/groups/{group}/members/{member} User-facing API for retrieving a group member # Update a group member Source: https://docs.rownd.io/api-reference/groups/user/members/member-update PUT /me/groups/{group}/members/{member} User-facing API for updating a group member # Create an OpenID Connect client Source: https://docs.rownd.io/api-reference/oidc/clients/create POST /applications/{app}/oidc-clients Platform API for creating an OIDC client for an application # Delete an OpenID Connect client Source: https://docs.rownd.io/api-reference/oidc/clients/delete DELETE /applications/{app}/oidc-clients/{client} Platform API for deleting an OIDC client for an application # List OpenID Connect clients Source: https://docs.rownd.io/api-reference/oidc/clients/list GET /applications/{app}/oidc-clients Platform API for retrieving OIDC clients for an application # Retrieve an OpenID Connect client Source: https://docs.rownd.io/api-reference/oidc/clients/read GET /applications/{app}/oidc-clients/{client} Platform API for retrieving an OIDC client for an application # Update an OpenID Connect client Source: https://docs.rownd.io/api-reference/oidc/clients/update PUT /applications/{app}/oidc-clients/{client} Platform API for updating an OIDC client for an application # Delete a user profile Source: https://docs.rownd.io/api-reference/user-profiles/app/delete DELETE /applications/{app}/users/{user}/data Delete a user profile # Get sample user profile data Source: https://docs.rownd.io/api-reference/user-profiles/app/get-sample-data GET /applications/{app}/users/__sample__/data Retrieve sample user data # Retrieve a user profile Source: https://docs.rownd.io/api-reference/user-profiles/app/get-user-data GET /applications/{app}/users/{user}/data Retrieve a user profile # Insert or update user profile data Source: https://docs.rownd.io/api-reference/user-profiles/app/insert-update PUT /applications/{app}/users/{user}/data Insert or update user profile data # List user profiles Source: https://docs.rownd.io/api-reference/user-profiles/app/list-user-profiles GET /applications/{app}/users/data # Retrieve one field from a user profile Source: https://docs.rownd.io/api-reference/user-profiles/app/retrieve-field GET /applications/{app}/users/{user}/data/fields/{field} Retrieve the value of one field in a user profile # Update one field in a user profile Source: https://docs.rownd.io/api-reference/user-profiles/app/update-field PUT /applications/{app}/users/{user}/data/fields/{field} Update the value of one field in a user profile # Update / patch user profile data Source: https://docs.rownd.io/api-reference/user-profiles/app/update-patch PATCH /applications/{app}/users/{user}/data Updates user profile data # Retrieve a user profile Source: https://docs.rownd.io/api-reference/user-profiles/user/get-user-data GET /me/applications/{app}/data Retrieve user profile # Retrieve one field from a user profile Source: https://docs.rownd.io/api-reference/user-profiles/user/retrieve-field GET /me/applications/{app}/data/fields/{field} Retrieve the value of one field in a user profile # Update one field in a user profile Source: https://docs.rownd.io/api-reference/user-profiles/user/update-field PUT /me/applications/{app}/data/fields/{field} Update the value of one field in a user profile # Update user profile data Source: https://docs.rownd.io/api-reference/user-profiles/user/update-put PUT /me/applications/{app}/data Update user profile # Revoke all user tokens/sessions Source: https://docs.rownd.io/api-reference/user-sessions/app/revoke-user-sessions POST /applications/{app}/users/{user}/signout Revokes all tokens for the specified user causing them to be signed out on all devices. # App credentials Source: https://docs.rownd.io/configuration/app-credentials Learn how app keys work with Rownd code snippets, SDKs, and APIs. When your code interacts with Rownd through an SDK, JavaScript code snippet, or directly with our REST API, you'll need a set of credentials to authenticate your access to the Rownd platform. At Rownd, we call these "app keys" and "app secrets." Every application provides a default app key, but you can create as many additional keys as you need.

The app key is a *publishable* value, meaning it isn't intended to be private. You'll use an app key in all of your user-facing code, such as React or Vue apps, websites, mobile apps, etc.

Each app key has an associated app secret that will be visible to you only once. App secrets are *private* values, meaning you should limit the number of people who have access to them. You should also take care to ensure they are not included in publicly visible configuration files, mobile app binaries, website deployments, and so on. They should exist only within your backend server environments or secrets manager.

You can revoke an app key and its associated secret at any time through the [Rownd dashboard](https://app.rownd.io). Be careful, though! Revoking a key that's still in use will likely result in downtime for your app. Ensure you generate new app keys and update your deployments with them before revoking existing keys. ##### What's the difference? **App keys** help identify your application, enable the retrieval of certain application metadata, and initiate authentication from web or mobile. **App secrets** authenticate machine-to-machine communication with Rownd to retrieve and update any user profile, generate sign-in (magic) links for any user, and support other more sensitive/restricted functions. #### Working with app keys From the Rownd dashboard, select the application for which you want to generate an app key, then select **App keys** from the side navigation. #### Creating a new app key Press the **Add app key** button on the top-right side of the screen. A new app key and secret are generated, then the **Edit app key** dialog is displayed, which contains the name of the app key, the key itself, and its associated secret. Be sure to copy and store the app secret in a safe location, since it will be shown only once! Opening the "edit app key" dialog again will show a masked version of the secret. You can rename the app key to something that makes sense to you, then press **Save** to save it. #### Updating an app key 1. Click on the three dots beneath the **Action** column on the right side of the app keys table. 2. From the resulting menu, select **Edit** to modify the name of the key (the key and secret are immutable). 3. Make the desired modifications and press **Save** to finish. #### Deleting / revoking an app key 1. Click on the three dots beneath the **Action** column on the right side of the app keys table. 2. Press **Delete** to initiate the deletion process. A confirmation dialog will appear. 3. Press **Delete** within the dialog to permanently revoke the key. It will immediately stop working. # Applications Source: https://docs.rownd.io/configuration/applications Rownd applications connect to your product(s) to provide Rownd authentication to your users. A Rownd application contains a unique code snippet that, when injected across your product, provides user authentication to your platform. Within your Rownd application, you can define and customize authentication methods, data types, and more. You can also connect a Rownd application to your existing tools with Integrations. It is likely that one Rownd application is enough to span all aspects of your product, but you can create multiple Rownd apps in your account as needed. However, a user session cannot span multiple applications. Your application name is used in all verification messages used to authenticate your users. We recommend using the name of your company or product for your application name. ### Edit an application Rownd creates a sample application during initial account setup. You can edit it to suit your needs. Modify the name, description, and logo of your existing application from the **Settings** tab. 1. On the Settings tab, set the **Application name** and **Application description** as desired. 2. Drag and drop a logo (PNG or SVG) into the **Application logo** area, or click within it to display a file picker. 3. Press **Save edits** when finished. #### Create a new application You may want to create additional applications for separate products or for dev/test environments. To create a new application: 1. Click the application dropdown in the top left corner, and select **Create new application** from the list. 2. In the next screen, enter an application name. Optionally, provide a description and logo. 3. Press **Create**. 4. Your newly created app will open to its Home tab. #### Switch to another application If you have multiple Rownd applications, you can switch between them using the application switcher. 1. Press the application switcher in the top left corner of the sidebar. 2. Select a different application from the list of applications. Not seeing the application you're looking for? * Try selecting **switch account** in the top right dropdown menu to see if the application you are looking for is associated with a different account. * Are you signed in with the correct user identifier (e.g., email address)? It's possible that the application you are looking for is associated with an account your current user doesn't have access to. Try signing out and signing back in with a different email address or social provider. #### Delete an application If you wish to delete an application, you can delete it from the **Settings** tab. 1. From the Settings tab, scroll to the bottom and press **Delete application**. 2. In the modal that appears, confirm you want to delete the app by pressing **Delete**. Deleting your Rownd application completely removes all application data from Rownd. If the application is being used to authenticate users in your product, deleting it will prevent any further registrations or authentications. # Sign in with Apple Source: https://docs.rownd.io/configuration/authentication-methods/apple Sign in with Apple offers a fast, secure, and privacy-focused method for users to sign in to their accounts on your website and mobile apps. By leveraging the Apple ecosystem, this feature enables users to authenticate using their existing Apple ID without having to create a new account or remember an additional password. When enabled, users can take advantage of the strong security and privacy features provided by the Apple platform, including two-factor authentication and email private relay. By offering this sign-in method, you can streamline the authentication process for your users and reduce barriers to entry, resulting in an improved user experience. In addition to its ease of use and enhanced security, Sign in with Apple complies with various privacy regulations, helping you maintain compliance and protect your users' data. By providing a trustworthy and user-friendly authentication option, you can attract more users to your platform and foster trust in your services. ## Configuring Sign in with Apple Using Rownd to add "Sign in with Apple" to your app is quick and easy, usually requiring no code changes. Our implementation supports iOS, Android, and web clients so no matter how your users are accessing your app or service, they can always sign in with their method of choice. To enable Sign-in with Apple, complete the following steps. #### Configuring Xcode and an Apple Services ID 1. If you're developing an iOS or macOS app, enable the **Sign in with Apple** capability in Xcode. [See Apple's documentation for more information.](https://developer.apple.com/documentation/xcode/adding-capabilities-to-your-app) 2. Create an [Apple Services ID](https://developer.apple.com/account/resources/identifiers/list/serviceId) for your app. Note the identifier for use in the next step. Ensure that this Callback URL is set within the Services ID: `https://api.rownd.io/hub/auth/apple/callback` #### Configuring Rownd Now, open your app in the [Rownd platform](https://app.rownd.io/applications). Then click on the **Sign-in methods** tab on the left to adjust your flow. Finding authentication methods is easy; just select "Sign-in methods" from the nav pane. 1. Locate the **Sign in with Apple** authentication method and press **Enable**. 2. Enter the Services ID that you created in the previous section. 3. Ensure the **Allow for authentication** switch is turned on. 4. Press **Save.** That's it! Your app and/or website is now ready to handle sign-in requests for users with an Apple ID. # Email sign-in Source: https://docs.rownd.io/configuration/authentication-methods/email Email-based Authentication with Rownd Sign-in Links offers a secure and user-friendly way for users to access their accounts on your website and mobile apps. Email-based authentication using Rownd Sign-in Links provides a secure and user-friendly method for users to sign in to their accounts on your website and mobile apps. With this approach, users don't need to remember complex passwords or create new accounts. Instead, they simply enter their email address and receive a unique sign-in link directly within their inbox, which they can use to securely access their account. **Improve Email Deliverability with Custom Domains** Using a custom domain for your authentication emails can significantly improve deliverability rates and enhance your brand's credibility. When your sign-in links come from your own domain instead of a third-party one, email providers are less likely to flag them as suspicious. Learn more about setting up [Custom Domains](/configuration/custom-domains/overview) to enhance your authentication experience. This method of authentication is especially convenient for users, as it eliminates the need for password management and reduces the risk of password-related security breaches. By sending a one-time-use sign-in link to the user's email address, you can ensure that only the account owner can access the account. Rownd Sign-in Links are designed to be straightforward for both developers and users. Integration is seamless, and the process is intuitive for users, streamlining the authentication experience on your platform. Incorporating email-based authentication with Rownd Sign-in Links not only improves the user experience but also enhances the security of your platform, helping you build trust with your users and maintain a secure environment for their data. #### Enabling email authentication 1. Navigate to **Sign-in methods** in the [Rownd dashboard](https://app.rownd.io). 2. Toggle the switch for **Email** to the "on" position. 3. Click **Save**. #### Browser Fingerprinting and Reverification for Returning Users Rownd uses browser fingerprinting to enhance the sign-in experience for returning users. When a user signs in with email authentication, Rownd securely associates their session with device metadata to form a private, temporary fingerprint. This allows returning users to sign back in—within a configurable time window—without going through the full email verification process again. Additionally, Rownd remembers the last sign-in method used. If a user has multiple authentication options, we’ll surface the one they last used to simplify the experience. Browser fingerprinting in Rownd is privacy-conscious and session-bound. It doesn’t track users across websites—it simply reduces friction for repeat visits on personal devices. #### Customizing email messages Rownd allows you to change portions of the email to better match your brand. See our [email customization article](/configuration/customizations/email-customization) for more information. # Validating third-party authenticators Source: https://docs.rownd.io/configuration/authentication-methods/existing-authentication Rownd's token validator allows you to authenticate a token issued by another authentication provider and exchange it for a Rownd token. This feature is useful when migrating to Rownd from another authentication provider and you want to prevent existing users from being signed-out during the transition. It can also be used when moving between contexts, such as when your code is embedded in an implementation that you don't directly control (e.g., a webview inside someone else's mobile app). Use Rownd's [token validator integration](/configuration/integrations/token-validator) to configure this feature. # Sign in with Google Source: https://docs.rownd.io/configuration/authentication-methods/google Turn on the Google authentication method to allow users to sign in with their Google accounts on your website and mobile apps. Sign in with Google is a widely-used, secure authentication method that allows users to quickly sign in to their accounts on your website and mobile apps using their existing Google accounts. By offering this option, you can simplify the authentication process for your users, eliminating the need for them to create a new account or remember an additional password. Integrating Sign in with Google streamlines the user experience, as millions of people worldwide already have Google accounts for services like Gmail, Google Drive, and YouTube. By leveraging the familiar Google ecosystem, you can lower the barrier to entry for your platform and potentially increase user engagement. In terms of security, Google provides robust measures such as two-factor authentication, helping protect users' accounts from unauthorized access. Furthermore, integrating Sign in with Google can help you comply with various privacy regulations and safeguard your users' data. By incorporating Sign in with Google into your authentication options, you can enhance user convenience, improve security, and foster trust in your platform. **New Feature: Google One Tap** As the name implies, Google One Tap is a streamlined authentication option that allows users to sign in to websites and apps with just one tap on their device if they're already signed-in to a Google account. With One Tap, users can sign in quickly and easily, without having to remember a password, manually enter any credentials, or leave your product. Our customers typically see an instant increase in sign-ups when Google One Tap is enabled. ## Prerequisites Before you turn on Google Sign-in, you'll need to do a few things in the Google Cloud Platform. #### OAuth Web Client ID Use [these instructions](https://support.google.com/workspacemigrate/answer/9222992?hl=en) from Google to create an OAuth web client ID. You'll need this client ID to configure Rownd for all deployments regardless of web or mobile app. The OAuth client ID's **Authorized JavaScript Origins** should contain any sites on which you will embed Rownd and support Google Sign-in. If you are only using Rownd on your mobile apps, you can leave this list empty #### OAuth iOS Client ID (optional) If you are adding Rownd to an iOS app, you'll need to create another OAuth client ID. In the Google Cloud Platform you can create one just like before, but this time, set the application type to "iOS". You'll be asked to provide your app's bundle ID, App Store ID, and team ID. When you finish creating the client ID, take note of the **iOS URL Scheme** value. You will need this later when adding a custom URL scheme to your iOS app. This value will be the reversed client ID value and look something like this: ``` com.googleusercontent.apps.224565757208-05divavgck1qgqg9b58piodfhqb55h90 ``` For detailed instructions check out this [documentation](https://support.google.com/cloud/answer/6158849?hl=en#zippy=%2Cnative-applications%2Cios) #### OAuth Android Client ID (optional) If you are adding Rownd to an Android app, you'll need one more OAuth client ID. Use an existing one or create a new one in the Google Cloud Platform just the same as before with your web or iOS client ID. When creating, make sure to select the "Android" application type. Provide your app's package name and SHA-1 fingerprint. For detailed instructions check out this [documentation](https://support.google.com/cloud/answer/6158849?hl=en#zippy=%2Cnative-applications%2Candroid) ### Enabling Google Sign-in Once you have completed the prerequisites, you can configure Rownd to enable Google Sign-in. 1. Navigate to the [Rownd Platform](https://app.rownd.io), and select your desired application is from the application switcher. 2. Select the **Sign-in methods** option on the left to adjust your flow. Finding authentication methods is easy; just select "Sign-in methods" from the nav pane. 3. Scroll down to view the authentication methods, and click **Enable** next to **Google**. 4. On the configuration screen, enter the following information: * **Google OAuth Client ID** - Enter your OAuth web client ID that you created as the first prerequisite step * **Google OAuth Client Secret -** Enter the client secret associated with your OAuth web client ID * **Google iOS OAuth Client ID** - Enter your OAuth iOS client ID that you created as a prerequisite * **Google OAuth Scopes** - (Optional) Enter additional OAuth scopes that you would like to request from the user during authentication. By default Rownd will request `email` and `profile`. Most of the time, you don't need to provide a value in this field. If you are using Rownd on an Android app, you do not need to configure your Android Client ID in the Rownd platform. Google uses the package name and SHA-1 fingerprint that you provided when creating the OAuth client ID to authenticate your app. ## Enabling Google One Tap Google One Tap is a streamlined authentication system that allows users to sign in to websites and apps with just one tap on their device. With One Tap, users can sign in quickly and easily, without having to remember a password or manually enter any credentials. One Tap is designed to simplify the sign-in process and improve the user experience, while also providing strong security features such as two-factor authentication and anti-phishing protections. ### Set up: 1. Pre-requisite: Ensure Google is configured as described above. 2. Click the Google One Tap checkbox 3. If desired, adjust the **Prompt after** field to indicate how long the user should be on the page before being prompted to sign in. This may require some experimentation, since prompting too quickly might be bothersome, while delaying too long might cause the prompt to seem random or out of place. The default of seven seconds works well for many use cases, but your particular website or app may require different settings. 4. Presss **Update**, then press **Save** in the top left corner. Configuring Google One Tap is easy. Google One Tap has a cooldown period that is enforced by Google. If the end-user clicks the close button, the dialog will not appear for between 7 and 60 minutes. When testing this feature, be aware that if intentionally close the Google One Tap dialog, the popup will not appear again until the cooldown period ends. #### One last thing for iOS Apps When Google finishes signing in a user, it calls back into your app on a custom URL scheme. You'll need to define this inside your XCode project settings. 1. Click on your project in Xcode, and then select your app under **TARGETS** 2. Next, go to the **Info** tab and scroll down to the bottom of the view where you see **URL Types** 3. Expand **URL Types** and click the **+** icon to add a new value 4. Set the **URL Schemes** value to the URL Scheme (reversed iOS Client ID) value that you noted when creating the OAuth iOS client ID earlier. Again, this value will look something like: `com.googleusercontent.apps.422565757208-05dqvvigck1qgqg9b58piodfhqb55h90` That's it! Your iOS app with the above changes needs to be published to the App Store *before* enabling Sign in with Google in the Rownd platform. If you want to enable Sign in with Google on Android and web before your app update has been reviewed by Apple, remove the **iOS Client ID** from the Rownd platform configuration. When your app update goes live, restore the **iOS Client ID** in the Rownd platform. ### Finishing up At this point, you're all done! Make sure you save the Google configuration inside of the Rownd Platform. When you are ready to turn it on, click the toggle to enable Google Sign-in. Your users will then see a new option in the Rownd sign-in dialog to continue with Google. # Sign in as guest Source: https://docs.rownd.io/configuration/authentication-methods/guests Authentication should often be a gradual process. Users may not want to provide identifiable information when trying your product for the first time. Or, if your product uses sensitive information like health data, users may not want to link that data to their identity at all. For these and other use cases, Rownd offers *guest authentication*, which provides a mechanism for users to onboard your product anonymously—-no email address, phone number, or other contact information is required. ## How it works After enabling the **Guests** sign-in method, Rownd will display the option **Continue as guest** in the sign-in modal. Or, if you're writing custom code, you can trigger a guest sign-in automatically on behalf of a visitor who has not yet signed in. Rownd doesn't request any identifiers for this user, but simply generates a unique ID for their account. Any profile information that's collected will be associated with this unique ID. Traditionally, using a guest account presented difficulty when signing into that same account on other devices or after signing out. To prevent this issue, Rownd supports [Passkeys](./passkeys) so that even anonymous users can sign into their account across multiple devices that have access to the Passkey. Passkeys for guests identify a user only by their random unique identifier. No personal information is associated with a Passkey. ### Progressive profiles Once a user has tried your product, they may feel more confident in sharing personal details in order to preserve their account, receive customer service, and so on. Leveraging [Automations](), you can prompt these users to add identifiable information at strategic points within a user journey. ### Detecting guests While you might allow guests to use certain aspects of your product, you may want to limit their access to specific features. Whether as a means of upselling or because a specific feature relies on identifiable information, you can detect guests in one of two ways. 1. **Inspect the user's access token:** When a user signs in anonymously, their JWT (access token) is annotated to indicate that they are a guest. The JWT claim looks like this: `https://auth.rownd.io/is_anonymous: true`. 2. **Inspect the user's profile:** Users who originally signed in as a guest will have an `anonymous_id` field populated within their profile. Check if this is present without any other identifiers like email, phone number, wallet address, etc. ## Enabling guest sign-in 1. Navigate to the [Rownd dashboard](https://app.rownd.io/) 2. Select **Sign-in methods** from the sidebar 3. Press **Enable** within the **Guests** sign-in chip. 4. Press **Save** to publish your changes. # Instant Users Source: https://docs.rownd.io/configuration/authentication-methods/instant-users Turn every visitor into a user, instantly Instant Users captures visitors as users when they land on your website, web app, or mobile app. Are your users seeing the value in your product before they are forced to sign up? With Instant Users, you don't have to worry about this. Our Instant users feature ensures users can explore and experience your app without barriers, making it easier for them to see the value and commit to signing up when they're ready. ## Enabling Instant Users Enabling Instant Users is easy and does not require any additional code. Simply follow the steps below to enable Instant Users for your application. 1. Open your app in the [Rownd platform](https://app.rownd.io). Click on the **Settings** tab on the left to adjust your flow and then select the "User Settings" tab. Finding the Instant User settings is easy; just select "User Settings" from the nav pane.. 2. Toggle on "Instant Users" and the cleanup timeline. This is how long of inactivity before instant users are "cleaned up". Every use-case is different and our default i 30 days. 3. To confirm your changes, press **Save** in the upper right-hand corner of the page. ## The User Spectrum Instant users is the first step along the Rownd User Spectrum. An instant user gets granted a JWT, that JWT has a normal lifecycle and security, and the goal is to show your user enough of your app and get them comfortable aenough to either login as a guest, enter a piece of verifiable data, or login with a verifiable email or phone number (either manually or through a social sign-in) ### The Spectrum: 1. **Instant user**: Upon initial visit, a new visitor receives a user ID as they move through your app, starting as a partial profile. 2. **Guest user**: Visitors can continue as guests, maintaining progress and exploring your app without immediate sign-up. 3. **Unverified user**: Users can provide an email without verification, reducing friction and allowing continued app use. 4. **Verified user**: Eventually, users provide verifiable information, like an email or Google account, to fully sign up and re-access their account. The Spectrum of user authentication is broad. # OpenID Connect (OIDC) and OAuth2 Source: https://docs.rownd.io/configuration/authentication-methods/oauth Leverage existing OAuth-compliant identity providers While Rownd provides a superior authentication experience for most users, there may be occasions where end-users need to authenticate with a third-party system. This can be especially important when dealing with corporate SSO requirements. CISO policy may require that all users sign in through an in-house identity provider or an enterprise cloud provider like Microsoft or Google. (If you're looking for Google authentication, we highly recommend using our [built-in Google authentication method.](./google)) Follow the steps below to configure Rownd to interoperate with your target OpenID or OAuth2 server. If you require a SAML authentication flow, please [get in touch](mailto:support@rownd.io). ## Supported flows Rownd supports the following authentication flows: * Authorization code flow * Authorization code flow with proof key for code exchange (PKCE) * Authorization code flow with JWT-secured authorization requests ## Configuring an OpenID or OAuth2 client Before getting started, be sure you obtain a valid client ID and--if required--client secret or private key from your OAuth provider. 1. From the [Rownd platform](https://app.rownd.io), navigate to the **Sign-in methods** sidebar tab. 2. In the *Additional sign-in methods* section, select **Enable additional methods**. 3. From the *Add additional sign-in methods* dialog, locate the **Custom** option and select **Add**. 4. Enter a name for the authentication method (e.g., My SSO provider) and optionally upload light and dark mode icons that will represent this authentication method. 5. Select the type of authentication flow: OpenID or OAuth2. 6. *(Required for OpenID)* Provide the issuer's base URL which hosts the `/.well-known/openid-configuration` endpoint (e.g., `https://auth.mycorp.com`). 7. Provide the default scopes that should be included in every authentication request. You can conditionally include additional scopes at authentication time. 8. Click **Next** to continue to the next step. 9. Enter your **Client ID** 10. If applicable, select the type of *client authentication* your provider requires and then paste the authentication secret in the provided input. 11. *(OAuth2 only)* Provide applicable values for the various authorization server endpoints (e.g., authorization endpoint, token endpoint, JWK endpoint, etc). 12. Press **Enable** at the bottom of the dialog to add the sign-in method to your available authentication options. The dialog will close. 13. Press **Save** at the top-right of the window to persist your changes. ## Need something else? If you require assistance setting up a custom authentication provider or need an option not currently covered, please [contact us](mailto:support@rownd.io). # Authentication methods Source: https://docs.rownd.io/configuration/authentication-methods/overview Configure what sign-in methods are used in your app and websites Authentication should not be a tax on your growth. With Rownd's adaptive authenication and wide range of authentication options, we help maximize both product flexibility and increase user growth. ## Navigating to authentication methods Open your app in the [Rownd platform](https://app.rownd.io/applications). Then click on the **Sign-in methods** tab on the left to adjust your flow. Finding authentication methods is easy; just select "Sign-in methods" from the nav pane. ## Available authentication methods You can use any combination of the following authentication methods: Passwordless sign-in with a passkey (biometrics) Passwordless email sign-in One tap sign-in with a Google account Fast sign-in with Apple ID Passwordless SMS-based sign-in } href="./guests" > Anonymous sign-in for unidentified users When detected, sign in using Metamask, Coinbase, etc. Get in touch to discuss your needs! ## Adaptive sign-in with Rownd Rownd's adaptive sign-in feature offers a tailored authentication experience for users by adapting the sign-in method depending on the user's device. This versatile approach ensures the most convenient and secure authentication option is presented, enhancing the user experience and promoting increased user engagement. ### Device-specific sign-in methods Rownd's adaptive sign-in can detect the user's device and adjust the available authentication options accordingly. This ensures that the user is presented with the most appropriate sign-in method for their device, resulting in a seamless and intuitive experience. Some device-specific sign-in methods include: * **Biometric authentication:** Rownd utilizes passkey technology to automatically utilize whatever biometric featuers a device has. For devices with biometric capabilities, such as fingerprint or facial recognition, Rownd can offer these secure and convenient methods as authentication options. * **Device-based authentication:** For users with device-specific accounts (e.g., Apple ID or Google accounts), Rownd can present the option to sign in using these platform-specific accounts. * **SMS or email authentication:** For devices without biometric or device-based options, Rownd can provide authentication via SMS or email, sending a unique, one-time-use login link to the user's mobile device or email address. ### Customizing sign in methods by device on the Rownd platform 1. **Navigate to the Sign in methods tab:** After installing Rownd with a code snippet or SDK, navigate to the sign in methods tab in the Rownd Platform. Check out the sign in methods tab. 2. **Configure [mobile app settings](configuration/mobile.mdx):** If you have a mobile app, configure your Google, Apple and mobile settings to get started. This will ensure proper deep linking to your mobile apps with your new customizations. Configure mobile app settings 3. **Customize sign in method orders by device:** Select the device type at the top (Desktop, iOS, Android), drag, drop, prioritize, and hide methods until you’re liking your customizations for each device type. We recommend prioritizing Apple sign in on iOS devices and prioritizing Google sign in on Android devices. Customize the order and visability by device. 4. **Test it out:** Save and try out your new customizations in your app! Continue to iterate based on on the way your users are signing in.