← Back to all products

Onboarding Flow

$19

Onboarding wizard with progressive profiling, conditional setup steps, and completion tracking.

📁 9 files
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

MethodPathDescription
GET/api/flowsList all onboarding flows
POST/api/flows/:flow_id/startStart a user on a flow
POST/api/flows/:flow_id/complete-stepComplete a step with data
GET/api/flows/:flow_id/progress/:user_idGet user's progress

... continues with setup instructions, usage examples, and more.

📄 Code Sample .py preview

src/main.py #!/usr/bin/env python3 """ Onboarding Flow — Progressive User Onboarding Wizard ====================================================== A complete onboarding system for SaaS applications. Guides new users through setup steps with progressive profiling, tracks completion state, generates welcome emails, and persists progress — all with Python's standard library. Zero dependencies. Just run: python3 main.py Part of the SaaS Starter collection by DataNest. License: MIT """ from __future__ import annotations import argparse import json import logging import os import re import time import uuid from dataclasses import asdict, dataclass, field from datetime import datetime, timezone, timedelta from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from http.server import BaseHTTPRequestHandler, HTTPServer from pathlib import Path from typing import Any, Optional from urllib.parse import parse_qs, urlparse # --------------------------------------------------------------------------- # Configuration # --------------------------------------------------------------------------- DEFAULT_HOST = "0.0.0.0" DEFAULT_PORT = 8002 DATA_DIR = Path("./onboarding-data") logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s — %(message)s", datefmt="%Y-%m-%dT%H:%M:%S", ) logger = logging.getLogger("onboarding") # --------------------------------------------------------------------------- # ... 656 more lines ...
Buy Now — $19 Back to Products