# CustomerJourneyState

{% tabs %}
{% tab title="Swift" %}

```swift
@objc public class CustomerJourneyState:NSObject, NSCoding, Codable {
  let formerSubscriber: Bool
  let inGracePeriod: Bool
  let inTrialPeriod: Bool
  let inIntroOfferPeriod: Bool
  let isCancelled : Bool
  let inPause : Bool
  let inAccountHold : Bool
}
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
data class CustomerJourneyState(
    val formerSubscriber: Boolean,
    val inGracePeriod: Boolean,
    val inTrialPeriod: Boolean,
    val inIntroOfferPeriod: Boolean,
    val isCancelled: Boolean = false,
    val inPause: Boolean = false,
    val inAccountHold: Boolean = false
)
```

{% endtab %}

{% tab title="Flutter" %}

```dart
class CustomerJourneyState {
  final bool formerSubscriber;
  final bool inGracePeriod;
  final bool inTrialPeriod;
  final bool inIntroOfferPeriod;
  final bool isCancelled;
  final bool inPause;
  final bool inAccountHold;
}
```

{% endtab %}
{% endtabs %}

**Parameters**

* `formerSubscriber` - Boolean - indicates if the customer had subscribed in the past.
* `inGracePeriod` - Boolean - indicates the subscription has lapsed due to a payment failure where the platform is still trying to actively recover the payment method and the granted entitlements should still be active.
* `inTrialPeriod` - Boolean - indicates the customer is in a free trial.
* `inIntroOfferPeriod` - Boolean - indicates the customer is in an introductory offer subscription, where their current price is less than the eventual full price.
* `isCancelled` - Boolean - indicates if the customer used to be a subscriber and cancelled their subscription renewal
* `inPause` - Boolean - indicates if the customer's subscription is paused. **Android only**
* `inAccountHold` - Boolean - indicates if the subscription has lapsed due to a payment failure and the granted entitlements are no longer active


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.namiml.com/sdk-reference/namicustomermanager/customerjourneystate.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
