Unclassified

Onboarding Flow — Endpoints

The 6-phase onboarding flow guides users from signup to active workspace.


Flow Overview

Phase 1: Welcome        → Use case selection (personal/work/business)
Phase 2: Profile        → Industry, department, company size
Phase 3: Workspace      → Workspace name, goals
Phase 4: Connectors     → Select data sources (Marketplace)
Phase 5: Activation     → Initialize Spine, start sync
Phase 6: Complete       → Redirect to workspace

Endpoints

Phase 1-3: Identity & Profile

MethodEndpointPhaseDescriptionRequest BodyResponse
GET/api/v1/workspace/onboarding-stateAllGet current onboarding state-{onboarding: OnboardingState}
POST/api/v1/workspace/initialize-spine5Initialize Spine schema{domain, industry, department, connectors}{tenantConfig, syncJobs}
POST/api/v1/workspace/complete-onboarding6Complete onboarding{preferences?}{success, redirectUrl, backgroundJobs}
GET/api/v1/workspace/progress5Poll sync progress-{type: "sync_progress", jobs: SyncJob[]}

Phase 4: Connector Selection

MethodEndpointDescriptionResponse
GET/api/v1/workspace/connectors/catalogGet available connectors{connectors: [...], total: 100}
GET/api/v1/workspace/connectorsList installed connectors{connectors: [...]}
POST/api/v1/workspace/register-connectorRegister connector{success, connector_id}
POST/api/v1/integrations/:provider/authorizeStart OAuth flow{auth_url, state}
GET/api/v1/integrations/callbackOAuth callback (public)Redirect to app

Phase 5: Activation

MethodEndpointDescriptionResponse
POST/api/v1/workspace/initialize-spineInitialize Spine{tenantConfig, syncJobs}
GET/api/v1/loader/creamy/:jobIdCheck extraction progress{status, progress, extractedCount}
GET/api/v1/workspace/progressPoll sync progress{type: "sync_progress", jobs: [...]}

Phase 6: Completion

MethodEndpointDescriptionResponse
POST/api/v1/workspace/complete-onboardingMark onboarding complete{success, redirectUrl}

Request/Response Details

GET /api/v1/workspace/onboarding-state

Returns the current onboarding state for the user.

Response:

{
  "onboarding": {
    "status": "in_progress",
    "currentStep": "profile",
    "completedSteps": ["welcome"],
    "connectorsConfig": [{ "provider": "salesforce", "flowType": "A" }],
    "createdAt": "2026-07-21T10:00:00Z"
  }
}

POST /api/v1/workspace/initialize-spine

Initializes the Spine schema with domain, industry, and connectors.

Request:

{
  "domain": "SALES",
  "industry": "technology",
  "department": "Sales",
  "connectors": [
    { "provider": "salesforce", "flowType": "A" },
    { "provider": "hubspot", "flowType": "A" }
  ]
}

Response:

{
  "tenantConfig": {
    "id": "tenant_abc123",
    "domain": "SALES",
    "connectors": {
      "salesforce": { "flowType": "A" },
      "hubspot": { "flowType": "A" }
    }
  },
  "syncJobs": [
    { "jobId": "job_001", "connector": "salesforce", "status": "running" },
    { "jobId": "job_002", "connector": "hubspot", "status": "pending" }
  ]
}

POST /api/v1/workspace/complete-onboarding

Marks onboarding as complete and returns redirect URL.

Request:

{
  "preferences": {
    "theme": "light",
    "notifications": true
  }
}

Response:

{
  "success": true,
  "redirectUrl": "/app/work/dashboard",
  "backgroundJobs": [{ "jobId": "job_001", "type": "sync", "status": "running" }]
}

GET /api/v1/workspace/progress

Polls sync progress during activation phase.

Response:

{
  "type": "sync_progress",
  "jobs": [
    {
      "jobId": "job_001",
      "connector": "salesforce",
      "phase": "creamy",
      "status": "running",
      "progress": {
        "total": 1250,
        "processed": 800,
        "percentage": 64,
        "stage": "extracting"
      }
    }
  ]
}

GET /api/v1/loader/creamy/:jobId

Checks extraction progress for a specific job.

Response:

{
  "jobId": "job_001",
  "status": "running",
  "progress": {
    "total": 1250,
    "processed": 800,
    "percentage": 64
  },
  "extractedCount": 800,
  "message": "Extracting accounts from Salesforce"
}

OnboardingState Type

interface OnboardingState {
  status: "not_started" | "in_progress" | "completed";
  currentStep: string;
  completedSteps: string[];
  connectorsConfig?: Array<{
    provider: string;
    flowType: "A" | "B" | "C";
  }>;
  creamyJobId?: string;
  normalizerJobId?: string;
  createdAt?: string;
  completedAt?: string;
}

SyncJob Type

interface SyncJob {
  jobId: string;
  connector: string;
  phase: "creamy" | "needed" | "delta";
  status: "pending" | "running" | "completed" | "failed";
  progress: {
    total?: number;
    processed?: number;
    percentage?: number;
    stage?: string;
  };
}

Frontend Implementation

import {
  initializeSpine,
  getOnboardingState,
  completeOnboarding,
  subscribeToProgress,
} from "@/api/workspace";

// Check onboarding state
const { onboarding } = await getOnboardingState();

// Initialize Spine (Phase 5)
const { tenantConfig, syncJobs } = await initializeSpine({
  domain: "SALES",
  industry: "technology",
  department: "Sales",
  connectors: [
    { provider: "salesforce", flowType: "A" },
    { provider: "hubspot", flowType: "A" },
  ],
});

// Subscribe to progress updates
const unsubscribe = subscribeToProgress(
  (jobs) => {
    jobs.forEach((job) => {
      console.log(`${job.connector}: ${job.progress.percentage}%`);
    });
  },
  (error) => console.error(error)
);

// Complete onboarding (Phase 6)
const { redirectUrl } = await completeOnboarding({
  preferences: { theme: "light" },
});

// Redirect to workspace
window.location.href = redirectUrl;

Domain Resolution

Use CaseDepartmentDomain
personal*PERSONAL
workSALESSALES
workMARKETINGMARKETING
workREVOPSREVOPS
workCUSTOMER_SUCCESSCUSTOMER_SUCCESS
workENGINEERINGPRODUCT_ENGINEERING
workPRODUCTPRODUCT_ENGINEERING
workITPRODUCT_ENGINEERING
workOPERATIONSCUSTOMER_SUCCESS
workSUPPLY_CHAINPROCUREMENT
workSERVICE_OPSSERVICE
workFINANCEFINANCE
workHRCUSTOMER_SUCCESS
workLEGALCUSTOMER_SUCCESS

Base URL: https://gateway.dev.integratewise.ai
Auth: Authorization: Bearer $INTEGRATEWISE_API_TOKEN + x-tenant-id: $INTEGRATEWISE_TENANT_ID

Auth Endpoints (Clerk):

EndpointURL
Sign Inhttps://accounts.integratewise.ai/sign-in
Sign Uphttps://accounts.integratewise.ai/sign-up
OAuth Authorizehttps://integratewise.ai/clerk/oauth/authorize
OAuth Tokenhttps://integratewise.ai/clerk/oauth/token
User Infohttps://integratewise.ai/clerk/oauth/userinfo