Dashboard
Welcome back, Vik. Here's what's happening.
← Live site
This Month Revenue
Loading…
Sessions Booked
Discovery Calls
Mailing List

Upcoming Sessions

Next 7 days
ClientServiceDate & TimeRateStatus
Loading…

Email Activity

Email TypeSentOpen Rate
Booking Confirmation1894%
24hr Reminder1588%
1hr Reminder1576%
Post-Session Follow-up1261%
Newsletter14243%
✓ 0 bounces · 0 unsubscribes this month
Bookings
All sessions and discovery calls
ClientServiceDate & TimeDurationRatePaymentMeet LinkStatus
Loading…
Email Templates
Edit and preview all automated emails
Available tokens:   {{client_name}}  {{session_type}}  {{date}}  {{time}}  {{duration}}  {{meet_link}}  {{amount}}  {{reschedule_link}}  {{cancel_link}}
📩 Confirmation
⏰ 24hr Reminder
🔔 1hr Reminder
🌱 Post-Session

Confirmation Email

Sends immediately on booking

Include reschedule link

Clients can reschedule directly from the email

Include cancel link

Shows cancellation policy inline

Add to mailing list on booking

Only if client opted in during booking

Live Preview

24-Hour Reminder

Sends 24hrs before session

Include Meet link

Include reschedule link

1-Hour Reminder

Sends 1hr before session

Post-Session Follow-up

Sends 2hrs after session end

Invite to mailing list (if not already subscribed)

Sends a single invite, never repeats

Session Types

Free Discovery Call

Entry point — no payment required
Active

Career Coaching (60 min)

Primary service — sliding scale
Active

Extended Session (90 min)

For deeper therapeutic or coaching work
Active
Availability

Weekly Template

Set your default available hours. Changes take effect immediately.

Click slots to toggle. Changes here update what clients can book in real time.

Timezone:

Buffer between sessions

15 min gap after every session

Limit bookings per day

Max 5 sessions per calendar day

One-off Availability

Open specific times on days that aren't normally available.
Loading…

Block Time

Close off specific times — holidays, personal appointments, or anything not in your calendar.
Loading…
Mailing List
142 subscribers
Total Subscribers
142
Added from Bookings
48
Avg Open Rate
43%

Capture Points

Where subscribers are added automatically

Booking form opt-in checkbox

Shown during booking — pre-checked by default

Footer mailing list signup

Standalone name + email form on the website

Post-session follow-up email invite

Single invite sent to clients not yet subscribed

Automation Flows

What happens automatically when someone subscribes

Subscribedbooking or form
📩
Welcome emailinstant
✉️
Added to listin Resend
🌱
Newsletterfortnightly

Recent Subscribers

NameEmailSourceSubscribed
Priya M.priya@email.comBooking9 Jun 2025
Sasha W.sasha@email.comBooking8 Jun 2025
Anonymoushello@gmail.comFooter form7 Jun 2025
Integrations

Connected Services

Stripe
Payment processing — sliding scale, card storage, refunds
Not connected
Resend
Transactional email — confirmations, reminders, follow-ups
Not connected
Google Meet (via Jitsi)
Auto-generates unique video links per booking — no client account needed, unlimited duration
Auto-configured
Kit (ConvertKit) — optional
Sync mailing list subscribers to a dedicated email marketing platform
Optional

Video Call Platform

Comparison for your use case (solo, 90-min sessions)

Google Meet

Free with Google account
No time limit (1-on-1)
Client doesn't need account
Familiar, trusted brand
Works in browser
Need Google Calendar API to auto-generate links
More API setup required

Zoom (Free)

Free with limits
Unlimited 1-on-1 calls
Most familiar brand
Client needs Zoom account
Download required (mobile)
40 min limit if 3+ people
API requires paid plan for auto-links
Clients
6 clients · CRM
Note: This CRM is for administrative contact management only. Clinical session notes must be kept in a compliant system (e.g. Halaxy, SimplePractice) under Australian Privacy Principles.
All (6)
Active (4)
Leads (1)
Concession (1)
Inactive (1)
👤

Select a client

Click any client to view their profile,
session history and notes.

Setup Guide
What you need to do — in order
Time estimate: ~3 hours total. Steps 1–3 take about 30 min each. Step 4 (backend deploy) takes 1–2 hours if you're comfortable with code, or hand this document to a developer.
1

Create a Stripe account Free

Go to stripe.com → Sign up → Complete business verification (takes ~10 min, requires ABN and bank account for payouts). Once verified, go to Developers → API Keys and copy your Secret Key and Publishable Key.

# Your Stripe keys will look like this: STRIPE_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxxxxxx STRIPE_PUBLISHABLE_KEY=pk_live_xxxxxxxxxxxxxxxxxxxx

In Stripe, enable Payment Element (for card forms) and set up a Webhook pointing to your backend URL at /webhooks/stripe — this is how your system knows when a payment succeeds.

2

Create a Resend account Free — 3,000 emails/month

Go to resend.com → Sign up → Go to Domains → Add vikashan.com.au. Resend will give you 3 DNS records to add to your domain registrar (Namecheap, GoDaddy, etc.). This verifies you own the domain and dramatically improves email deliverability. Paste them in, wait 10 minutes, click Verify.

# DNS records to add (example — Resend will give you the exact values): # Type: TXT Name: resend._domainkey Value: [from Resend dashboard] # Type: TXT Name: @ Value: v=spf1 include:resend.com ~all # Type: TXT Name: _dmarc Value: v=DMARC1; p=none;

Once verified, go to API Keys and create a key. Store it in your backend .env file.

RESEND_API_KEY=re_xxxxxxxxxxxxxxxxxxxx FROM_EMAIL=hello@vikashan.com.au
3

Create a Supabase database Free tier

Go to supabase.com → New project → Copy your Project URL and anon key. This is your database. You'll need three tables: bookings, subscribers, and blocked_times.

-- Run this in Supabase SQL Editor: CREATE TABLE bookings ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, client_name text, client_email text, session_type text, session_date date, session_time time, duration_mins int, meet_link text, amount_cents int, tier text, stripe_payment_id text, status text DEFAULT 'pending', mailing_opt_in boolean DEFAULT false, notes text, created_at timestamptz DEFAULT now() ); CREATE TABLE subscribers ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, name text, email text UNIQUE, source text, subscribed_at timestamptz DEFAULT now() );
4

Deploy the backend to Vercel Free hosting

Your backend needs 5 API routes. Deploy these as Vercel serverless functions (Node.js) — no server to manage, free hosting, deploys in seconds from GitHub.

# /api/create-booking POST — saves booking, generates meet link, charges Stripe # /api/send-confirmation POST — fires confirmation email via Resend # /api/send-reminder POST — triggered by cron job 24h + 1h before session # /api/webhooks/stripe POST — listens for payment.succeeded events # /api/subscribe POST — adds email to subscriber list

The meet link is generated automatically — no external API needed:

// Auto-generate a unique Jitsi room link per booking const roomId = crypto.randomUUID().substring(0, 8); const meetLink = `https://meet.jit.si/vikashan-${roomId}`; // e.g. https://meet.jit.si/vikashan-a3f9c12b // Unique per session, works immediately, no API key needed

Set your environment variables in Vercel dashboard under Settings → Environment Variables. Add your Stripe keys, Resend key, and Supabase URL + key.

5

Set up reminder cron job Vercel Cron — free on hobby plan

Add a vercel.json file to your project with a cron job that runs every 15 minutes, checks for sessions in 24h or 1h, and fires reminders.

{ "crons": [{ "path": "/api/send-reminder", "schedule": "*/15 * * * *" }] }

The reminder endpoint queries Supabase for upcoming sessions, checks if a 24h or 1h reminder hasn't been sent yet, and fires the email via Resend. Mark reminders as sent so they don't repeat.

6

Optional: Connect Kit (ConvertKit) for newsletter

If you want a more powerful newsletter tool (sequences, tagging, automation), connect Kit. When someone subscribes (via booking opt-in or footer form), your backend calls the Kit API to add them to your list. Free up to 10,000 subscribers

// Add subscriber to Kit list await fetch('https://api.kit.com/v4/subscribers', { method: 'POST', headers: { 'Authorization': `Bearer ${KIT_API_KEY}` }, body: JSON.stringify({ email_address: email, first_name: name }) });