← Back to all products
$19
Onboarding Flow
Onboarding wizard with progressive profiling, conditional setup steps, and completion tracking.
PythonMarkdown
📄 Product Preview
Try the interactive reader and demo tools below, or get the full product with all content unlocked.
📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample📁 File Structure 9 files
onboarding-flow/
├── LICENSE
├── README.md
├── examples/
│ └── basic_example.py
├── free-sample.zip
├── guide/
│ ├── 01_features.md
│ ├── 02_quick-start.md
│ └── 03_project-structure.md
├── index.html
└── src/
└── main.py
📖 Documentation Preview README excerpt
Onboarding Flow
A Python onboarding wizard for SaaS applications. Guides new users through setup steps with progressive profiling, conditional step logic, completion tracking, and automated welcome/completion emails — all built on Python's standard library.
Features
- Multi-step flows — Define ordered onboarding steps (form, choice, info, action types)
- Progressive profiling — Collect user data across multiple steps without overwhelming them
- Conditional steps — Show/hide steps based on user attributes (role, plan, etc.)
- Skip support — Optional steps can be skipped; required steps must be completed
- Completion tracking — Percentage-based progress tracking per user
- Welcome emails — HTML email templates with step overview and CTA buttons
- Completion emails — Congratulations email with summary of completed/skipped steps
- Template engine — Built-in
{{variable}}and{{#if condition}}template rendering - JSON persistence — Save/load flow definitions and user progress
Requirements
- Python 3.10+
- No external dependencies (stdlib only)
Quick Start
# Start with demo flow
python src/main.py --init-demo
# Custom port
python src/main.py --port 8002
Then try the API:
# List available flows
curl http://localhost:8002/api/flows
# Start onboarding for a user
curl -X POST http://localhost:8002/api/flows/<flow_id>/start \
-H "Content-Type: application/json" \
-d '{"user_id": "user_123", "context": {"role": "admin"}}'
# Complete a step
curl -X POST http://localhost:8002/api/flows/<flow_id>/complete-step \
-H "Content-Type: application/json" \
-d '{"user_id": "user_123", "step_id": "profile", "data": {"company": "Acme Corp"}}'
# Check progress
curl http://localhost:8002/api/flows/<flow_id>/progress/user_123
API Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /api/flows | List all onboarding flows |
| POST | /api/flows/:flow_id/start | Start a user on a flow |
| POST | /api/flows/:flow_id/complete-step | Complete a step with data |
| GET | /api/flows/:flow_id/progress/:user_id | Get user's progress |
... continues with setup instructions, usage examples, and more.
📄 Code Sample .py preview
examples/basic_example.py#!/usr/bin/env python3
"""
Onboarding Flow — Basic Usage Example
=======================================
Demonstrates the full onboarding lifecycle:
1. Create a multi-step flow
2. Start a user on the flow
3. Complete steps with data
4. Skip optional steps
5. Generate welcome and completion emails
Run: python3 basic_example.py
"""
from __future__ import annotations
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent / "src"))
from main import OnboardingEngine, OnboardingStep
def main() -> None:
print("=== Onboarding Flow — Basic Example ===\n")
engine = OnboardingEngine(data_dir=Path("/tmp/onboarding-demo"))
# --- 1. Define onboarding steps ---
steps = [
OnboardingStep(id="profile", title="Complete Profile", order=1,
description="Basic info about you and your team.",
step_type="form", required=True,
fields=[{"name": "company", "type": "text"}]),
OnboardingStep(id="use_case", title="Select Use Case", order=2,
description="What do you want to achieve?",
step_type="choice",
options=["Build a product", "Manage a team", "Track metrics"]),