# SuperwallOptions

A configuration class for customizing paywall appearance and behavior.

Only modify `networkEnvironment` if explicitly instructed by the Superwall team. Use `.RELEASE` (default) for production apps.

Use different `SuperwallOptions` configurations for debug and release builds to optimize logging, purchasing behavior, and Google Play settings for each environment.

## [Purpose](/content/docs/android/sdk-reference/SuperwallOptions#purpose/index.html)

Configures paywall presentation, logging, Google Play purchase behavior, and other global SDK settings. Pass an instance in to [`Superwall.configure`](/content/docs/android/sdk-reference/configure/index.html).

## [Signature](/content/docs/android/sdk-reference/SuperwallOptions#signature/index.html)

```
class SuperwallOptions {
    var paywalls: PaywallOptions = PaywallOptions()
    var shouldObservePurchases: Boolean = false
    var networkEnvironment: NetworkEnvironment = NetworkEnvironment.Release()
    var isExternalDataCollectionEnabled: Boolean = true
    var localeIdentifier: String? = null
    var isGameControllerEnabled: Boolean = false
    var passIdentifiersToPlayStore: Boolean = false
    var enableExperimentalDeviceVariables: Boolean = false
    var logging: Logging = Logging()
    var useMockReviews: Boolean = false
    var testModeBehavior: TestModeBehavior = TestModeBehavior.AUTOMATIC
}
```

```java
// Java
public class SuperwallOptions {
    public PaywallOptions paywalls = new PaywallOptions();
    public boolean shouldObservePurchases = false;
    public NetworkEnvironment networkEnvironment = new NetworkEnvironment.Release();
    public boolean isExternalDataCollectionEnabled = true;
    public @Nullable String localeIdentifier = null;
    public boolean isGameControllerEnabled = false;
    public boolean passIdentifiersToPlayStore = false;
    public boolean enableExperimentalDeviceVariables = false;
    public Logging logging = new Logging();
    public boolean useMockReviews = false;
    public TestModeBehavior testModeBehavior = TestModeBehavior.AUTOMATIC;
}
```

## [Parameters](/content/docs/android/sdk-reference/SuperwallOptions#parameters/index.html)

| Prop                             | Type                          |
|----------------------------------|-------------------------------|
| `paywalls`                       | [PaywallOptions](/content/docs/android/sdk-reference/PaywallOptions/index.html) |
| `shouldObservePurchases`         | Boolean                       |
| `networkEnvironment`             | NetworkEnvironment             |
| `isExternalDataCollectionEnabled?`| Boolean                       |
| `localeIdentifier?`             | String?                       |
| `isGameControllerEnabled`        | Boolean                       |
| `passIdentifiersToPlayStore`     | Boolean                       |
| `enableExperimentalDeviceVariables`| Boolean                      |
| `logging`                        | Logging                       |
| `useMockReviews`                | Boolean                       |
| `testModeBehavior?`             | TestModeBehavior              |

## [How `passIdentifiersToPlayStore` affects Google Play](/content/docs/android/sdk-reference/SuperwallOptions#how-passidentifierstoplaystore-affects-google-play/index.html)

Superwall always calls `BillingFlowParams.Builder.setObfuscatedAccountId(Superwall.instance.externalAccountId)` when launching a billing flow.

- **Default (`false`)** – `externalAccountId` is a SHA-256 hash of the `userId`. Google Play displays the hashed value as `obfuscatedExternalAccountId`, and the same hash is sent back to your servers.
- **Enabled (`true`)** – Superwall forwards the exact `appUserId` you passed to [`identify()`](/content/docs/android/sdk-reference/identify/index.html). This makes it easier to correlate Google Play purchases with your users, but the value must comply with [Google's policy](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setObfuscatedAccountId) and must not contain PII.

Configure it as part of your application startup:

```
val options = SuperwallOptions().apply {
    passIdentifiersToPlayStore = true
    logging.level = LogLevel.info
}

Superwall.configure(
    application = this,
    apiKey = "pk_your_api_key",
    options = options
)
```

## [Related](/content/docs/android/sdk-reference/SuperwallOptions#related/index.html)

- [`PaywallOptions`](/content/docs/android/sdk-reference/PaywallOptions/index.html)

How is this guide?  
Good  Bad

[SuperwallEvent\  
  \  
A sealed class representing analytical events that are automatically tracked by Superwall.](/content/docs/android/sdk-reference/SuperwallEvent/index.html) [PaywallOptions\  
  \  
Configuration for paywall presentation and behavior in the Superwall Android SDK.](/content/docs/android/sdk-reference/PaywallOptions/index.html)

### On this page

[Purpose](/content/docs/android/sdk-reference/SuperwallOptions#purpose/index.html) [Signature](/content/docs/android/sdk-reference/SuperwallOptions#signature/index.html) [Parameters](/content/docs/android/sdk-reference/SuperwallOptions#parameters/index.html) [How `passIdentifiersToPlayStore` affects Google Play](/content/docs/android/sdk-reference/SuperwallOptions#how-passidentifierstoplaystore-affects-google-play/index.html) [Related](/content/docs/android/sdk-reference/SuperwallOptions#related/index.html)
