Executive Dashboard
High-level overview of agency performance.
Gross Revenue
$791
Setup fees + appointments
Gross Profit
$429
Revenue − all ad spend
Profit Margin
54.2%
Profit ÷ Revenue
Active Clients
3
Out of 3 total
Avg Rev/Client
$264
Revenue ÷ active clients
Revenue Growth
Net Whop revenue · All Time
Clients Signed
New clients by Client Since date · All Time
Gross Profit Trend
Revenue minus B2B + B2C ad spend · All Time
Revenue vs Total Ad Spend
Gross revenue compared with all ad spend · All Time
BROAD
AD SPEND
$362
LEADS
22
BOOKED
15
SHOWED
6
CLOSED
0
BOOKING RATE
68.2%
Booked ÷ Leads
SHOW RATE
40%
Showed ÷ Booked
CLOSE RATE
0%
Closed ÷ Showed
COST PER LEAD
$16.45
Spend ÷ Leads
COST PER BOOKING
$24.13
Spend ÷ Booked
COST PER SHOW
$60.32
Spend ÷ Showed
COST PER CLOSE (CAC)
$0.00
Spend ÷ Closed
Ad-Level Breakdown
Performance of each individual ad in this ad set.
| Ad Name | Status | Spend | Leads | Booked | Showed | Closed | CPL | CPBA | CPSA | CAC |
|---|---|---|---|---|---|---|---|---|---|---|
| A5 (Selfie Video) | $287.38 | 17 | 11 | 4 | 0 | $16.90 | $26.13 | $71.84 | — | |
| A4 (Person Marker) | $23.77 | 0 | 0 | 0 | 0 | — | — | — | — | |
| A6 (UGC Video) | $42.89 | 5 | 4 | 2 | 0 | $8.58 | $10.72 | $21.45 | — | |
| A3 (Testimonial) | $0.48 | 0 | 0 | 0 | 0 | — | — | — | — | |
| A2 (Graphic Designer) | $3.13 | 0 | 0 | 0 | 0 | — | — | — | — | |
| A1 (Tombstone) | $4.29 | 0 | 0 | 0 | 0 | — | — | — | — |
Client Fulfillment
B2C campaign performance across all active clients.
Total B2C Spend
$0
Across all B2C campaigns
Total Shows Generated
0
$0.00 Average Cost Per Show
Appointment Revenue
$0
From showed appointments
Delivery Profit
$0
B2C Revenue - B2C Spend
Delivery Profit Margin
0%
Delivery Profit ÷ Delivery Revenue
Active Clients 3
| Client | Status | Client Since | B2C Spend | Shows | Revenue | Profit | Details |
|---|---|---|---|---|---|---|---|
Melvin Morales Countertops · Boston, Massachusetts |
Onboarding | Jun 19, 2026 | $0 | 0 | $0 | $0 | Details |
Jo&Je Kitchens and Countertops LLC Countertops · Milwaukee, Wisconsin |
Onboarding | Jun 19, 2026 | $0 | 0 | $0 | $0 | Details |
Granite Men LLC Countertops · Denver, Colorado |
Onboarding | Jun 19, 2026 | $0 | 0 | $0 | $0 | Details |
Past Clients 0
| Client | Status | Client Since | B2C Spend | Shows | Revenue | Profit | Details |
|---|---|---|---|---|---|---|---|
| No past clients yet. | |||||||
Transactions
Recent payments and revenue history.
Total Volume
$0
Maximum
Successful Payments
0
Cleared via Whop
Failed Payments
0
Declined or unsuccessful
Refunds
0
$0 returned
| Date | Client | Type | Amount | Status |
|---|
Architecture & Data
How your data flows from Meta, GHL, Whop, and Make into this dashboard.
Data Flow
→
⚡ Make.com→
⛁ Supabase→
▲ This App
→
⚡ Make.com→
⛁ Supabase
→
⚡ Make.com→
⛁ Supabase
Supabase is the single source of truth. The app only ever reads from Supabase — so a Meta or GHL outage never breaks your dashboard. Make.com keeps Supabase fed on a schedule and via real-time webhooks.
Database Tables
How Data Gets In
1
Meta ad data → meta_metrics
Make.com pulls spend, leads, impressions, CPL per campaign & ad set every few hours and writes to meta_metrics \u2014 split by B2B (acquisition) and B2C (fulfillment) account.
2
GHL appointments → appointments / leads
When a contact books or shows in GHL, a webhook → Make → writes to appointments and leads, so booked/showed counts stay current.
3
Revenue → transactions (dated)
Each cleared Whop payment writes one dated row to transactions (client_id, type, amount, created_at). Appointment payments build each client's revenue ledger; setup fees count toward Executive revenue only.
4
You add clients by hand
Anything not auto-synced (a new client, a negotiated setup fee) you add on the Clients page. It saves straight to Supabase.
5
Date range filter
Every figure carries a date (transaction created_at, meta_metrics date). The top-bar picker (Maximum / 24h / 7d / 30d / Custom) filters the whole tracker to that window. Clients & Pipeline show current state and ignore the range.
Settings
Connect Supabase, confirm billing rules, and wire Meta/GHL/Whop data.
Sample data
The app is showing realistic demo numbers so you can see how every page calculates. Clear it when you're ready to use your own data — connecting Supabase with live rows clears it automatically.
1. Connect Supabase
Find these in Supabase → Project Settings → API. Never paste a service-role or secret key here. Add Supabase Auth before hosting this tracker publicly.
Make Refresh Connection
Paste the custom webhook URL for the Make refresh scenario. The top-right Refresh Data button will trigger it on demand.
Not configured
2. Run this SQL
Paste into Supabase → SQL Editor → Run. Creates all tables.
3. What I need from you
4. Data map