# 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.

**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.

<br />
