Swarmz

Onboarding flow

A custom first-run questionnaire for your customers

You can put a short, branded questionnaire in front of new customers — "What are you building?", "What's your team size?" — built step by step in the Branding studio's onboarding builder and stored as a validated flow schema (flowSchema).

Anatomy of a flow

{
  "version": 1,
  "enabled": true,
  "intro": {
    "title": "Welcome to Acme Studio",
    "sub": "Two quick questions so we can set things up."
  },
  "steps": [
    {
      "id": "building",
      "question": "What are you building?",
      "options": [
        { "value": "website", "label": "A website" },
        { "value": "web-app", "label": "A web app" },
        { "value": "online-store", "label": "An online store" }
      ]
    },
    {
      "id": "goals",
      "question": "What matters most right now?",
      "multi": true,
      "options": [
        { "value": "launch-fast", "label": "Launching fast" },
        { "value": "custom-design", "label": "Custom design" },
        { "value": "integrations", "label": "Integrations" }
      ]
    }
  ]
}
  • An optional intro screen (title + subtitle) opens the flow.
  • Each step is one question with 2–8 options. Steps are single-select by default; set multi: true for checkboxes.
  • Option values are slugs (lowercase a-z0-9-), derived from the label if you don't set one. They're what you get back in the answers.
  • The whole flow is off until enabled is explicitly true — the builder's toggle.

Limits

WhatLimit
Steps per flow5
Options per step2 minimum, 8 maximum
Question text120 characters
Step subtitle160 characters
Option label48 characters
Intro title / subtitle80 / 160 characters

All text is HTML-stripped and truncated to its cap rather than rejected. A step that ends up with fewer than 2 usable options is dropped; extra steps and options past the caps are dropped.

Answers

Submitted answers are validated server-side against your schema: only known step ids with values from that step's options survive, single vs. multi shape is enforced, and anything else is discarded. You get back a clean { stepId: value } (or string[] for multi steps) record per customer.

On this page