Client Onboarding Studio

Gather business details, prepare billing, and queue a production site build in one guided flow.

@{{ message }}

Choose A Template

Templates are loaded from /api/v1/templates. Select one to continue.

Loading templates...

@{{ templateError }}

@{{ t.name }}

Category: @{{ t.category || 'general' }}

@{{ t.description || 'Production-ready starter template.' }}

Business Information

@{{ errors.email }}
@{{ errors.company_name }}
@{{ errors.business_type }}
@{{ errors.location }}
@{{ form.data.logo ? 'Uploaded: ' + form.data.logo : 'No file uploaded' }}
@{{ form.data.hero_image ? 'Uploaded: ' + form.data.hero_image : 'No file uploaded' }}

AI Assist

Describe the business in plain text. AI will extract structured data and auto-fill matching fields.

No AI messages yet.
@{{ msg.role === 'user' ? 'You' : 'AI Assist' }} @{{ msg.text }}

Latest AI follow-up: @{{ aiReply }}

Domain & Plan

If blank, the system uses the client UUID domain.

@{{ plan.label }}

@{{ plan.price }}

@{{ plan.note }}

Billing

Prepare the checkout order before final submit.

Open VivaWallet Checkout

@{{ billing.message }}

Review & Queue Build

This calls POST /api/v1/onboarding and dispatches BuildSiteJob.

Client + Business

Email
@{{ form.email || '-' }}
Company
@{{ form.company_name || '-' }}
Type
@{{ form.data.business_type || '-' }}
Location
@{{ form.data.location || '-' }}
Phone
@{{ form.data.phone || '-' }}

Template + Provisioning

Template
@{{ selectedTemplateName }}
Plan
@{{ form.plan_id || '-' }}
Domain Input
@{{ form.domain || '(auto UUID)' }}
Logo
@{{ form.data.logo || '-' }}
Hero
@{{ form.data.hero_image || '-' }}

Build Status

Auto-refreshes every 5 seconds until terminal state.

Site ID
@{{ status.site_id }}
Domain
@{{ status.domain || '-' }}
Status
@{{ status.state || 'unknown' }}
Last Check
@{{ status.last_checked || '-' }}
Deployed At
@{{ status.deployed_at || '-' }}