---
title: "Custom Fields"
url: "https://developer.incode.com/sdk-reference/module-custom-fields/"
section: "sdk-reference"
group: "iOS SDK / iOS Individual Modules"
version: "v1.1"
status: "live"
---
# Custom Fields

Custom Fields captures additional user-provided data and saves it to the session, making it available for reporting, server-side decisions, or cross-checking later in the journey.

In iOS, Custom Fields is **not a module**. There is no `addCustomFields` builder.

For an overview of this functionality and how it works, see [Custom Fields](/features-and-modules/custom-fields/).



**Availability:** All variants.

## Add Custom Fields

Attach metadata as string key/value pairs to the session at setup. The fields are stored on the session and sent to the back end.

```swift
let session = IncdOnboardingSessionConfiguration(
    customFields: ["partnerId": "abc123", "campaign": "summer"],
    token: "<SESSION_TOKEN>"
)
IncdOnboardingManager.shared.startFlow(sessionConfig: session, delegate: self)
```

- `customFields` is one of the optional named parameters (`[String: String]?`) of the single `IncdOnboardingSessionConfiguration` initializer, alongside others such as `token` and `configurationId`. There is no dedicated `(customFields:token:)` initializer.
- The session is started with `IncdOnboardingManager.shared.startFlow(sessionConfig:delegate:moduleId:)`; `moduleId` is optional (defaults to `nil`) and is not needed here.
- There is no dedicated result callback; any validation happens server-side.