# User Connections

A **User Connection** is used when each of your customers' users has unique credentials to a third-party app, and they need to enter the credentials (or go through an OAuth 2.0 auth code flow) themselves. These are similar to [Customer Connections](https://prismatic.io/docs/integrations/connections/integration-agnostic-connections/customer-activated.md), but are scoped to a single user rather than the entire customer.

For example, suppose your customer Hooli has users Alice, Bob, and Charlie. Each of these users has their own Dropbox account, and your integration requires access to each user's Dropbox account. In this case, you would create a user connection for Dropbox, and each of Hooli's users would enter their own Dropbox credentials when they activate a [User-Level Config](https://prismatic.io/docs/integrations/config-wizard/user-level-configuration.md) for the instance deployed to their Hooli account.

user-level config is an opt-in feature

User-level config is required for user connections, and it is enabled on an as-needed basis. If you don't see user-level config in your integration's config wizard, contact [support](mailto:support@prismatic.io) to discuss enabling it for your organization.

## Creating a new user connection[​](#creating-a-new-user-connection "Direct link to Creating a new user connection")

To create a new user connection, see [Managing Connections](https://prismatic.io/docs/integrations/connections/managing.md). When prompted to select the connection type, select **User-Specific Credentials**.

## Using a user connection in code-native[​](#using-a-user-connection-in-code-native "Direct link to Using a user connection in code-native")

To use a user connection in a code-native integration config wizard, take note of your connection's **Stable Key** (you set one when you created the connection). Pass that stable key into `userActivatedConnection` when you define a `userLevelConfigPage`.

One connection, three names

A user connection is called **user-activated** in code. You will see it as **User-Specific Credentials** when you create one, as a **User** label in the web app, and as `userActivatedConnection` in the SDK. They all refer to the same thing.

Use a user connection in a code-native config wizard

```ts
import {
  userActivatedConnection,
  userLevelConfigPage,
} from "@prismatic-io/spectral";

/** REPLACE ME: the user-level connections on your own organization. */
export const DROPBOX_USER_CONNECTION = "my-dropbox-user-connection-stable-key";

export const userLevelConfigPages = {
  "Your Dropbox": userLevelConfigPage({
    tagline: "Connect the Dropbox account this integration should act as",
    elements: {
      "Your Dropbox Account": userActivatedConnection({
        stableKey: DROPBOX_USER_CONNECTION,
      }),
    },
  }),
};

```

Read more about [code-native user-level config pages](https://prismatic.io/docs/integrations/config-wizard/user-level-configuration.md#user-level-configuration-wizard).

## Using a user connection in low-code[​](#using-a-user-connection-in-low-code "Direct link to Using a user connection in low-code")

When adding a step to your flow that uses a component with an associated user connection, select the connection with the **User** label from the list of available connections.

![Using a user connection in low-code](/docs/assets/images/use-user-connection-low-code-746030e1e081eee1f1473fbe01b3c2ac.png)

To modify the connection, open the [user-level config](https://prismatic.io/docs/integrations/config-wizard/user-level-configuration.md) wizard designer for your integration.

## FAQ[​](#faq "Direct link to FAQ")

### What will customer users see?[​](#what-will-customer-users-see "Direct link to What will customer users see?")

After you create an instance of your integration, each user within a customer has the option to create a **user configuration** for that instance. When they create a user configuration, Prismatic prompts them to complete the user-level config wizard, which includes the user connections you defined for your integration.

If they have previously saved credentials for that user connection type, they can select from existing saved connections. Otherwise, they will be prompted to enter their credentials for the third-party app, as they would for any standard connection.

![Customer view of a user connection](/docs/assets/images/config-wizard-customer-view-ddc121b8bb2b22658598c1288db2ba41.png)

### Can customer users see each other's connections?[​](#can-customer-users-see-each-others-connections "Direct link to Can customer users see each other's connections?")

No. Connections are scoped per user in the UI and at the API level.
