Initialization options. Pass them to `KustomerClient.configure(...)` to override any settings within the SDK.v

If you don’t want to override any settings and use the default ones, you can skip creating this object. You can’t change these after calling `KustomerClient.configure(...)`.

See [Configuration](🔗).



### activeAssistant



Overrides the default chat assistant from your Kustomer website settings.

See [changeActiveAssistant(ActiveAssistantOptions)](🔗).

### brandId

The brand id to use for you settings and Knowledge Base. If `nil`, uses your default brand.



If you want to change this after `configure(apiKey:options:launchOptions)`, use `changeBrand(brandId: completion)`. Do not manually set `Kustomer.options.brandId = "foo"`.

### showAllBrandsConversationHistory

Show all conversations related to a customer across all of your brands. Defaults to `false`



### businessScheduleId

The business schedule ID you want the app to use. Optional. If `nil`, uses your default business schedule from your Kustomer platform settings.



If you want to change this after `configure(apiKey:options:launchOptions)`, use `changeBusinessSchedule(scheduleId: completion)`. Do not manually set `Kustomer.options.businessScheduleId = "foo"`.

### enableUI

Enables the Kustomer UI. Defaults to `true`. If you want to use any of the Kustomer UI this must be `true`. To build your own UI, set to `false`.



### hideNewConversationButton



Never show the "New Conversation" button. Default is `false`.

### hideNewConversationButtonInClosedChat



Defaults to `false`. If `true`, does not show a "Create new conversation" button on the detail screen for closed conversations.

### hostDomain

Override the API host domain. Optional.



### hostViewController



Specify the `UIViewController` from which the Kustomer UI will be presented. Defaults to the top-most view controller in your application.

Required if your app uses a `UISceneDelegate`, otherwise optional.

### knowledgeBaseID

_Deprecated_. Use [`brandId`](🔗) instead.

The brand ID for the Knowledge Base you’d like to present. Optional.



### language

The language to display volume control, automated messages, snippets, and the knowledge base. If blank, uses the device’s language.



See [Localization](🔗) for a list of all KustomerLanguage.

### messageAttachmentLocalCacheMaximumSizeInBytes



Max size of local cache for message attachments. Defaults to 25MB. Minimum of 10MB, maximum of Int.max. Files attached to support chats are saved to the documents folder. Once this local cache exceeds this value, it’s cleared the next time the customer downloads a new message attachment.

### onDismiss



Called when the close button is selected in the Kustomer UI or the modal has been swiped to dismiss.

### onShow



Called when the Kustomer UI has been fully presented.

### showAnimationFor5StarCSATRatings

Controls the chat animation displayed to customers for 5-star CSAT ratings.

Defaults to `false`. Set to `true` to turn on the CSAT animation.

## Debugging and logs

### debugMode

Enable debug mode. Adds several menus that you can show by shaking the phone.



### \_debugAcceptLangHeader



### logLevels



An array of `KustomerLogType`s you want to have printed to the console. Defaults to all `KustomerLogType`s: `[.debug, .info, .error, .warning]`. `KustomerLogType.fatal` errors are always logged.

## Push notifications

### disablePush



Do not use push notifications in your options. Push is automatically turned on when you configure push on the Kustomer app settings. Use this flag to disable.

Once a device registers for Kustomer push notifications, setting disablePush to true will not prevent pushes from being sent. This flag can only set whether or not the SDK registers this device for Kustomer push notifications.

### pushBundleId



Defaults to `Bundle.main.bundleIdentifier`. Push notifications will be registered and sent only to apps with this bundle ID.

### pushEnvironment



Must be set to `.production`. Defaults to `.production`.

If you want to use a push simulator with a real device, set this to `.development`, and use a JSON payload as described in the [Push Notifications](🔗) guide.

### showInAppNotifications



Show in-app notifications for new messages. Defaults to `true`.