Client Portal Setup

Connect your Supabase project to get started. This only needs to be done once.

🔑 Supabase Credentials
Found in your Supabase project → Settings → API
📋 Required Database Tables

Run this SQL in your Supabase SQL Editor (Database → SQL Editor → New Query):

-- Companies table
CREATE TABLE companies (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  name TEXT NOT NULL,
  domain TEXT NOT NULL UNIQUE,
  logo_url TEXT,
  contact_name TEXT,
  contact_email TEXT,
  website TEXT,
  phone TEXT,
  notes TEXT,
  created_at TIMESTAMPTZ DEFAULT now()
);

-- Requests table
CREATE TABLE requests (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  company_id UUID REFERENCES companies(id) ON DELETE CASCADE,
  requester_email TEXT NOT NULL,
  requester_name TEXT NOT NULL,
  category TEXT NOT NULL,
  title TEXT NOT NULL,
  description TEXT NOT NULL,
  priority TEXT DEFAULT 'medium',
  status TEXT DEFAULT 'new',
  email_updates BOOLEAN DEFAULT true,
  admin_note TEXT,
  eta DATE,
  page_url TEXT,
  screenshot_url TEXT,
  created_at TIMESTAMPTZ DEFAULT now(),
  updated_at TIMESTAMPTZ DEFAULT now()
);

-- Storage bucket for logos and screenshots
INSERT INTO storage.buckets (id, name, public)
VALUES ('portal-assets', 'portal-assets', true)
ON CONFLICT (id) DO NOTHING;

-- Row Level Security (allow all for anon key — restrict in production)
ALTER TABLE companies ENABLE ROW LEVEL SECURITY;
ALTER TABLE requests ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Allow all companies" ON companies FOR ALL USING (true) WITH CHECK (true);
CREATE POLICY "Allow all requests" ON requests FOR ALL USING (true) WITH CHECK (true);
CREATE POLICY "Allow storage uploads" ON storage.objects FOR ALL USING (true) WITH CHECK (true);
Your company is identified by the domain in your email.
Admin access →
Hello!
Your Requests

Loading…

Submit a Request
✏️Website Update
🐛Bug / Error
📄New Page
📧Email Setup
🔍SEO / Content
🎨Design Change
🌐Domain / Hosting
💬Other
All Requests

Loading…

Companies
Appearance
🏷️ Branding
Shown in the topbar and login screen heading.
🖼️
Upload portal logo
Replaces text in topbar & login. PNG/SVG recommended.
Logo height: 36px
🎨 Colours
Buttons, links, focus rings.
🖼️ Login Background
✏️ Typography
LIVE PREVIEW
Client Portal
Enter your work email to access your company's portal.
Sheridan Funerals Content
Changes go live on the website instantly.
Pricing Packages
Disclaimer Text
Settings
Admin Password
📧 EmailJS Configuration

Used to send notification emails to you on new submissions, and status update emails to clients. Get your keys at emailjs.com.

Found in EmailJS → Account → API Keys
Sends to you when a client submits.
Sends to the client when you change their ticket status.
Supabase Connection

Current project: