Plan Onboarding Prefill
Pre-fill or skip onboarding survey questions for personalized plans. All fields are optional — only provided fields will be pre-filled and their corresponding screens will be skipped. If all answers are provided for a goal-based plan, the user goes straight to results. Applies to: Plan Onboarding only (route "plan-onboarding").
Availability: This parameter is used with createCustomComponentView (Swift, Kotlin, Flutter) or the CUSTOM_COMPONENT integration option (React Native) with route: "plan-onboarding".
| Parameter | Type | Accepted values | Description |
| route | string | "plan-onboarding" | Must be "plan-onboarding" for this feature to work |
| planOnboardingPrefill | object | — | Object containing prefill values for the onboarding survey |
| planOnboardingPrefill.goal | string | "automatic", "lose_weight", "build_muscle", "get_stronger", "stay_active" | The fitness goal. "automatic" runs the assessment-based personalized path (adds the Duration and Assessment steps); the other goals map to fixed goal-based plans and skip the Duration step |
| planOnboardingPrefill.healthIssues | string[] | "None", "High Blood Pressure", "Diabetes", "High Cholesterol", "Insomnia", "Depression" | Pre-selects health issues; the health-issues screen is skipped when provided |
| planOnboardingPrefill.injuries | string[] | "None", "Shoulder", "Wrist", "Knee", "Hip", "Ankle", "Lower back" | Pre-selects injuries (empty array = none); the injuries screen is skipped when provided |
| planOnboardingPrefill.duration | number | 15, 30, 60, 90 | Preferred workout duration in minutes. Only relevant for the "automatic" goal path |
| planOnboardingPrefill.lifestyle | string | "Sedentary", "Lightly active", "Moderately active", "Very active" | Activity level (note: capitalized with spaces — this screen's vocabulary differs from the top-level lifestyle parameter) |
| planOnboardingPrefill.assessmentOnly | boolean | true / false | When true, all survey screens (goal, health issues, injuries, duration, lifestyle) are skipped and the user lands directly on the fitness assessment. Any previously stored plan ID is cleared so a fresh personalized plan is generated after the assessment completes. All other prefill fields are ignored when this is set |
Gotcha: answers the user already gave in a locally cached, in-progress onboarding session take precedence over prefill values, field by field.
`assessmentOnly` use case: Use this for reassessment flows — when the user already has a profile (goal, lifestyle, etc.) recorded in your host app and you only want them to perform a fresh fitness assessment to regenerate their personalized plan. Don't combine it with the other prefill fields; they will be ignored.
`remind_me_later_clicked` event: When the user is on the Assessment screen inside the plan-onboarding flow and taps "Remind me later", the SDK posts a remind_me_later_clicked PostMessage so your host app can dismiss the SDK and schedule a follow-up prompt. This event is only fired from the plan-onboarding page.
1// Use createCustomComponentView with route "plan-onboarding"
2kinestex.createCustomComponentView(
3 route: "plan-onboarding",
4 customParams: [
5 "planOnboardingPrefill": [
6 "goal": "lose_weight",
7 "healthIssues": ["High Blood Pressure"],
8 "injuries": [],
9 "duration": 30,
10 "lifestyle": "Sedentary"
11 ]
12 ]
13)
14
15// Reassessment-only flow (skips the entire survey)
16kinestex.createCustomComponentView(
17 route: "plan-onboarding",
18 customParams: [
19 "planOnboardingPrefill": [
20 "assessmentOnly": true
21 ]
22 ]
23)