White-Label Setup Guide

A step-by-step guide to deploying your own branded instance of the platform. The interactive setup script handles most of this automatically -- this guide explains what each step does.

1. Prerequisites

  • Node.js 18 or higher
  • npm (comes with Node.js)
  • git
  • openssl (for generating secrets)
  • Supabase CLI (optional -- for automated database setup)
  • Vercel CLI (optional -- for automated deployment)

The setup script checks for these automatically and tells you what is missing.

2. Branding Configuration

  • Product name (e.g., "SalesFlow Pro")
  • Short name for compact UI elements
  • Product description and tagline
  • Company name and legal jurisdiction
  • Support email and notification email addresses
  • Data regulation statement (e.g., GDPR compliance text)
  • Landing page headline and description
  • Legal page effective date
  • Logo file path (copied into /public)
  • Colour preset: Blue (default), Green, Purple, or Orange

All values are stored in a single branding.ts file. The setup script generates this automatically from your answers. Template files for the landing page, dashboard, auth pages, and legal pages are copied into your project with branding placeholders replaced.

3. Environment Variables

  • NEXT_PUBLIC_SUPABASE_URL -- Your Supabase project URL
  • NEXT_PUBLIC_SUPABASE_ANON_KEY -- Supabase anonymous key
  • SUPABASE_SERVICE_ROLE_KEY -- Supabase service role key (server-side only)
  • NEXT_PUBLIC_UNIPILE_DSN -- Unipile API base URL
  • UNIPILE_API_KEY -- Unipile API key
  • OPENROUTER_API_KEY -- OpenRouter API key for AI features
  • RESEND_API_KEY -- Resend email API key
  • R2_ACCOUNT_ID -- Cloudflare R2 account ID (for video storage)
  • R2_ACCESS_KEY_ID -- R2 access key
  • R2_SECRET_ACCESS_KEY -- R2 secret key
  • R2_BUCKET_NAME -- R2 bucket name
  • R2_PUBLIC_URL -- Public URL for the R2 bucket

The setup script also auto-generates 4 secrets: CREDENTIALS_ENCRYPTION_KEY, CAMPAIGN_EXECUTION_SECRET, DISCOVERY_EXECUTION_SECRET, and UNIPILE_WEBHOOK_SECRET. These are written to .env.local automatically.

4. Supabase Setup

  • Create a new Supabase project at supabase.com
  • Copy the project URL and keys into your environment variables
  • Run "supabase link" to connect your local project to Supabase
  • Run "supabase db push" to apply all database migrations
  • Enable Email auth provider in Supabase Auth settings
  • Set the Site URL to your custom domain (e.g., https://salesflow.com)
  • Add your domain to the Redirect URLs list (e.g., https://salesflow.com/**)

If you do not have the Supabase CLI, you can apply migrations manually through the Supabase dashboard SQL editor by running each file in the supabase/migrations/ directory in order.

5. Deploy to Vercel

  • Push your repository to GitHub (or GitLab/Bitbucket)
  • Import the project in Vercel
  • Add all environment variables from .env.local to Vercel
  • Set the custom domain in Vercel project settings
  • Verify the deployment builds and runs correctly

The setup script optionally handles git init, first commit, remote push, and "vercel" CLI deployment for you. You can also deploy manually through the Vercel dashboard.

6. Go-Live Checklist

  • Supabase: Auth provider enabled, Site URL set, Redirect URLs configured
  • Unipile: Account connected, webhooks pointing to your domain
  • n8n: Campaign executor and discovery executor workflows configured
  • Vercel: Custom domain added, SSL verified, all env vars set
  • Resend: Sending domain verified, DKIM and SPF records configured
  • Cloudflare R2: Bucket created, public URL configured (if using video features)
  • Test: Send yourself an invite, log in, connect LinkedIn, run a test campaign

The n8n workflows need two Schedule Trigger nodes: one hitting /api/campaigns/execute every 5 minutes and another hitting /api/discovery/execute every 30 minutes. Both use Bearer token authentication.

Ready to Deploy?

Sign up to get the white-label package and we'll help you get set up.