Why This Exists
The Client Portal Strategy
Dental clinic owners paying AUD 1,500–4,000 per month need to feel that investment every time they think about it — not just once a month on a call. The client portal is how we make that happen. It replaces the "trust me, it's working" approach with a permanent, live window into exactly what their money is doing.
Beyond retention, the portal is a sales tool. When a prospect sees a demo of what their dashboard would look like from day one, it closes deals. It signals that QuadGrowth is a professional, tech-forward agency — not a freelancer with a spreadsheet.
Built in three phases: an MVP that works from the first client, a full platform once we have real data to display, and a premium tier that turns QuadGrowth into a genuine SaaS product.
Beyond retention, the portal is a sales tool. When a prospect sees a demo of what their dashboard would look like from day one, it closes deals. It signals that QuadGrowth is a professional, tech-forward agency — not a freelancer with a spreadsheet.
Built in three phases: an MVP that works from the first client, a full platform once we have real data to display, and a premium tier that turns QuadGrowth into a genuine SaaS product.
CEO Summary
The client portal is our retention engine and our best sales asset. A clinic owner who logs in weekly and sees their leads, bookings, and revenue growing does not cancel. One who gets a PDF once a month might. Phase 1 costs us almost nothing to build and makes every client feel like they are on a premium product. Phase 3 is where QuadGrowth becomes a platform business, not just an agency.
Phase 1
The MVP — Build Now
Eight features a clinic owner needs from day one. All data is entered manually by your campaign manager via Airtable — no complex integrations required. The goal is to make every client feel the service is worth the fee from the moment they log in. Build time: 1–2 weeks. Cost: negligible.
Phase 1 — MVP
Core Dashboard
The eight features every client needs from day one. Campaign manager populates data manually. No API integrations required at this stage.
When to build
Before first client
Overview / KPI Summary
The first screen a client sees. Big numbers: total leads this month, confirmed bookings, estimated revenue added, cost per lead. A simple trend arrow showing up or down vs last month.
Why it matters: clinic owners are busy. If the first screen doesn't answer "is it working?" in 5 seconds, they won't read further.
⚙ Tech
Static numbers updated by campaign manager in Airtable. Portal reads from Airtable API. No live ad platform integration at this stage.
Live Lead Feed
A table of every enquiry: name (or anonymous ID), suburb, date received, source channel (Google / Meta / referral), and current status — New, Contacted, Booked, or Lost.
Why it matters: this is the most powerful trust signal we have. Seeing real names and dates makes the service tangible.
⚙ Tech
Airtable "Leads" table synced to portal. n8n automation creates a new record whenever a lead form is submitted on the landing page.
Monthly Reports
A card per month showing the campaign manager's written summary: 3 wins this month, 1 challenge, next month's focus. Clean, readable, permanent record. Downloadable as PDF.
Why it matters: gives the relationship history and context. A new practice manager who joins mid-contract can immediately understand what's been done.
⚙ Tech
Campaign manager writes the report in a simple form inside the internal admin panel. Stored in Airtable. Rendered as formatted cards in the portal.
Campaign Status
A clear status panel for each active campaign: Google Ads (Live / Paused / Setup), Meta Ads (Live / Paused / Not active), Google Business (Optimised / Action needed), Landing Page (Live / Pending).
Why it matters: reassures clients that their campaigns didn't just "stop" between calls. Proactively surfaces any issues.
⚙ Tech
Status flags set manually by campaign manager. Later in Phase 2, Google Ads API can automate campaign status detection.
ROI Calculator
Simple interactive widget: "If each new patient is worth AUD [X] per year and we've brought you [Y] patients, estimated revenue added = [Z]." Uses their actual lead and booking data — not a generic estimate.
Why it matters: turns the monthly fee into a number that looks small next to the revenue generated. Strongest retention tool we have.
⚙ Tech
JavaScript calculation using Airtable-stored patient lifetime value (set at onboarding) × confirmed bookings count. Updates live as new bookings are logged.
Next Strategy Call
The date and time of the next scheduled strategy call, with a direct booking link to reschedule if needed. Name and photo of their campaign manager. A brief note on what the call will cover.
Why it matters: keeps the relationship visible. The campaign manager doesn't feel abstract — they have a face, a name, and a scheduled time.
⚙ Tech
Calendly integration for live booking links. Campaign manager details stored in Airtable client record. Call agenda set manually by campaign manager.
Package & Account Info
Their current package (Starter / Growth / Scale), monthly fee, contract start date, next renewal date, and their campaign manager contact details. Clean and factual.
Why it matters: removes ambiguity. Clients always know exactly what they are on and when their next renewal is — no surprises, no awkward conversations.
⚙ Tech
Pulled from Airtable client record set at onboarding. Package name, fee, dates — all stored at contract sign. Editable by admin only.
Journey Timeline
A visual timeline showing where the client is in the QuadGrowth process: Onboarding → Setup → Launch → Month 1 → Month 2 → Consistent Growth. Current stage highlighted. Key milestone dates shown.
Why it matters: especially valuable in months 1–2 when results are still building. Reminds clients they are in the right phase, not behind schedule.
⚙ Tech
Phase set manually at onboarding, auto-advances by date after setup period. Visual component only — no external API needed.
Phase 2
Full Platform — After First Clients
Once you have real client data flowing, these eight features turn the portal into a genuinely powerful reporting platform. Most require API integrations — Google Ads, Google Business Profile, Google Analytics 4. Build time: 4–8 weeks. Requires developer.
Phase 2 — Full Platform
Data-Driven Reporting
Live integrations with Google Ads, Meta, and Google Business Profile. Real-time data, automated reporting, and geographic visualisation. Requires developer resource.
When to build
After 3–5 clients
Suburb Lead Heatmap
A visual map showing which suburbs the clinic's leads are coming from. Darker = more leads. Helps the client understand where their catchment area actually is vs where they assumed.
Why it matters: clients love seeing their suburb "light up." Creates a shareable moment. Also useful data for targeting decisions.
⚙ Tech
Lead suburb data from Airtable mapped using Mapbox or Google Maps JS API. Colour intensity from lead count per suburb. Updated daily via n8n sync.
Ad Creative Gallery
A gallery of every ad currently running for the client — image/copy previews, platform (Google/Meta), impressions, clicks, click-through rate, and conversion rate per creative.
Why it matters: makes the work visible. Clients often don't know what their ads look like. Seeing them builds confidence and trust in the campaign.
⚙ Tech
Google Ads API + Meta Marketing API for creative assets and performance stats. Campaign manager uploads creative previews; stats auto-populate from API. Refreshed daily.
Local Competitor Snapshot
How the client's clinic ranks locally vs 3–5 nearby competitors: Google rating comparison, review count, estimated search visibility, website quality score. Updated monthly.
Why it matters: competition is a powerful motivator. Showing a client they are ranked #3 in their suburb motivates them to invest more and stay longer.
⚙ Tech
Outscraper API pulls competitor data monthly. Visibility score estimated from keyword rank tracking (DataForSEO or SERPWatcher API). Stored in Airtable, refreshed monthly via n8n.
Google Business Profile Monitor
Live feed of new Google reviews — star rating, review text, date, and whether it's been replied to. Profile health score: completeness of photos, hours, services, posts.
Why it matters: negative reviews that go unanswered kill new patient conversions. This keeps the client aware and enables fast response.
⚙ Tech
Google Business Profile API (My Business API) for review data. Profile completeness scored against a checklist of required fields. Webhook triggers Slack alert for new 1–3 star reviews.
Conversion Funnel
A visual funnel: Impressions → Clicks → Landing Page Visits → Lead Form Submissions → Bookings Confirmed → Attended. Conversion rate at each stage. Drop-off points highlighted.
Why it matters: shows the client exactly where in the funnel we are optimising. If the booking rate is low, it's a clinic-side issue, not a campaign issue — the data proves it.
⚙ Tech
Google Analytics 4 for page-level events. Airtable for lead-to-booking tracking. Attended count entered manually by campaign manager. Funnel built in custom JS using GA4 + Airtable data.
Keyword Rank Tracker
How the clinic ranks on Google for key search terms in their suburb: "dentist [suburb]", "dental clinic [suburb]", "emergency dentist [suburb]" etc. Position shown weekly with trend arrows.
Why it matters: local search position is a core deliverable. Showing rank improvements over time is evidence of work done even when leads are slow.
⚙ Tech
DataForSEO or SERPWatcher API. 5–10 target keywords tracked weekly per client. Results stored in Airtable, displayed as sparkline charts in the portal.
Ad Budget Tracker
Monthly ad spend vs planned budget. Amount spent to date this month, amount remaining, estimated spend at current pace. Breakdown by platform (Google vs Meta).
Why it matters: clients want to know their ad budget is being used, not banked. Transparency on spend builds trust and pre-empts "where did my money go" conversations.
⚙ Tech
Google Ads API + Meta Marketing API for spend data. Budget set in Airtable client record by campaign manager. Spend vs budget calculated and displayed daily.
Messaging Centre
A direct comms thread between the client and their campaign manager inside the portal. Campaign manager can post updates, flag issues, share wins. Client can ask questions without emailing.
Why it matters: centralises the relationship. Instead of scattered emails and Slack messages, everything lives in one place attached to the client record.
⚙ Tech
Simple threaded message store in Airtable or Supabase. Campaign manager posts via internal admin panel. Client reads and replies in portal. Email notification on new message via n8n.
Phase 3
The Full Works — Premium Platform
This is where QuadGrowth becomes a platform, not just an agency. Twelve features that create deep lock-in, support premium pricing, enable scale package upsells, and open the door to a white-label product for partner agencies. Build time: 3–6 months. Dedicated developer or small team required.
Phase 3 — The Full Works
Premium SaaS Platform
Deep AI integration, multi-location support, patient reactivation tools, white-label capability, and automated case study generation. This is where QuadGrowth becomes a product company.
When to build
At 10–15 clients
AI Growth Assistant
A chat interface clients can use to ask questions about their campaign. "Why did leads drop this week?" "What's my CPL trend?" "How am I doing vs last month?" Powered by Claude API with their data injected as context.
Why it matters: makes the data feel intelligent and personal. Replaces one-off emails to their campaign manager with instant answers.
⚙ Tech
Claude API with client's Airtable data assembled as context on each query. Uses tool use to query live metrics. Guardrails prevent off-topic or harmful responses. Logged for campaign manager review.
Multi-Location Dashboard
For Scale package clients with 2+ locations: a single unified view showing performance across all locations, with drill-down per clinic. Aggregate KPIs plus per-location breakdown.
Why it matters: makes the Scale package feel meaningfully different from Growth. A dentist group with 3 clinics genuinely needs this and will pay for it.
⚙ Tech
Each location stored as a separate Airtable client record linked to a parent group record. Portal aggregates across all linked records. Separate Google Ads MCC (manager account) for multi-location ad management.
Review Manager
Clients can read, flag, and draft replies to Google reviews directly in the portal. AI drafts a suggested reply — AHPRA-compliant, no clinical outcome references — which the client can edit and post.
Why it matters: removes the barrier of logging into Google. AI replies ensure consistency and compliance. A sticky feature that clients use weekly.
⚙ Tech
Google Business Profile API for reading and posting reviews. Claude API drafts replies with AHPRA advertising guideline constraints in the system prompt. Post action goes via GBP API after client approval.
Patient Reactivation Tool
A campaign builder for re-engaging lapsed patients. Client uploads a de-identified list of patients overdue for a check-up. QuadGrowth builds a targeted campaign to get them back in the chair.
Why it matters: every dental clinic has hundreds of lapsed patients. Reactivation is the fastest, cheapest way to fill slots — and it's something we can charge for as an add-on.
⚙ Tech
Client uploads CSV of lapsed patients (anonymised). n8n pipeline builds a custom Meta audience from the data. Campaign manager builds and activates the reactivation campaign. Results tracked in Airtable.
PDF Report Generator
One-click branded PDF of the client's monthly performance. QuadGrowth header, their clinic name, all KPIs, funnel data, key wins, and next month's plan. Client can share with their business partner or accountant.
Why it matters: makes our reporting portable and shareable. When a client shows their accountant how well the marketing is performing, it reinforces the decision to keep paying.
⚙ Tech
Puppeteer or WeasyPrint renders a hidden high-fidelity HTML report page to PDF. Triggered by client button in portal. Stored in Supabase Storage, emailed as link. Full QuadGrowth branding applied automatically.
Referral Program
Clients who refer another dental clinic get a credit towards their next month's fee. In-portal referral link generator, tracking dashboard showing referral status and credit earned.
Why it matters: turns happy clients into a sales channel. A referred lead from an existing client closes at 3–5× the rate of a cold lead. Practically free acquisition.
⚙ Tech
Unique referral code generated per client stored in Airtable. Landing page referral code capture. n8n checks referral status and triggers credit when referred client signs and pays month 1. Displayed in portal dashboard.
Appointment Slot Tracker
Client manually logs (or syncs) their weekly appointment capacity and bookings filled. Dashboard shows capacity utilisation trend over time — the headline metric that proves the whole service is working.
Why it matters: this is the metric we talk about in sales ("60% to 95% in 6 weeks"). Having it tracked in the portal makes that claim provable and client-owned.
⚙ Tech
Client enters weekly slots available and slots booked via a simple portal form (or syncs via Cliniko / Nookal API if available). Capacity % calculated and displayed as a trend chart using Chart.js.
Contracts & Invoices
Full document history: signed contract, all invoices, payment status. Client can download any document at any time without emailing. Invoice auto-generated monthly and attached to their record.
Why it matters: removes admin friction. Clients never need to "find the email" for their invoice again. Also reduces payment disputes — they can see exactly what was agreed and when.
⚙ Tech
Contracts stored in Supabase Storage, signed via DocuSign webhook. Invoices generated via Stripe or Xero API. Stored and linked in Airtable client record. Portal displays status and download links.
Content Approvals
Campaign manager submits new ad creatives (image + copy) for client review before going live. Client sees the ad exactly as it will appear, approves or requests changes with a comment. Approval tracked with timestamp.
Why it matters: removes the "I didn't know that was going live" conversation. Creates a documented approval trail — important for AHPRA compliance.
⚙ Tech
Creative submitted via internal admin panel to Airtable. Client notified by email. Portal shows pending approvals with approve/reject/comment. Approval status synced to campaign manager's Airtable view. AHPRA compliance checklist attached to each creative submission.
Case Study Auto-Builder
At the 60-day mark, the portal auto-generates a draft case study from the client's actual data: before/after capacity, leads generated, estimated revenue added. Campaign manager reviews and publishes (with client consent).
Why it matters: we talk about case studies in every sales call. Automating their creation means we actually produce them. Each one becomes a sales asset used for months.
⚙ Tech
n8n trigger at day 60 pulls all client metrics from Airtable. Claude API drafts the case study using a structured template. Campaign manager edits in admin panel. Requires explicit written consent from client before any external use. AHPRA check: no clinical outcome testimonials.
Benchmark Comparisons
Anonymous benchmarks showing how the client compares to similar QuadGrowth clients: average CPL, average leads per month, average capacity utilisation. Client's position shown relative to the anonymised group.
Why it matters: benchmarks create competitive context. A client at 70% capacity who sees the average is 88% is motivated to invest more. Also reinforces the network effect of QuadGrowth's data.
⚙ Tech
All client KPIs stored in Airtable. Benchmark aggregation query runs weekly, stores anonymous averages by package tier and suburb type. Individual client data is never exposed — aggregate only. Displayed as percentile charts in portal.
White-Label Option
Partner agencies can access QuadGrowth's platform under their own brand. Custom domain (portal.theiragency.com.au), their logo, their colours. QuadGrowth powers the backend, partner owns the client relationship.
Why it matters: opens a B2B revenue stream. A dental marketing agency in Queensland could use QuadGrowth's infrastructure and pay a per-client SaaS fee. No additional delivery work required from us.
⚙ Tech
Multi-tenant architecture with per-partner branding config stored in database. Custom domain support via Vercel or Cloudflare. Partner admin panel for client management. Requires multi-tenant rebuild of auth and data access layer. Significant engineering investment.
Build Guide
How to Build It — Priorities & Tech
A practical guide for whoever is building the portal. What to build first, what data source it needs, and how complex it is. Phase 1 requires no back-end engineering — a campaign manager can populate everything manually via Airtable.
| Feature | Phase | Data source | Complexity | Why first |
|---|---|---|---|---|
| Overview / KPI | MVP | Airtable (manual) | Low | First screen. Must be compelling from day one. |
| Live Lead Feed | MVP | Airtable via n8n | Low | Most powerful trust signal. Automated from landing page form. |
| ROI Calculator | MVP | Airtable (manual + JS) | Low | Justifies the fee. Strongest retention tool in Phase 1. |
| Campaign Status | MVP | Airtable (manual) | Low | Reassures clients between calls. 15 min to update. |
| Monthly Reports | MVP | Admin form → Airtable | Low | Replaces email PDF. Permanent, shareable record. |
| Journey Timeline | MVP | Airtable (manual) | Low | Critical in months 1–2. Manages expectations proactively. |
| Next Call Panel | MVP | Calendly API | Low–Med | Humanises the relationship. Campaign manager visible. |
| Package Info | MVP | Airtable (manual) | Low | Removes ambiguity. Set once at onboarding. |
| Conversion Funnel | Phase 2 | GA4 + Airtable | Medium | Separates campaign performance from clinic-side booking rate. |
| Ad Creative Gallery | Phase 2 | Google Ads API + Meta API | Medium–High | Makes invisible work visible. High trust value. |
| GBP Monitor | Phase 2 | Google Business Profile API | Medium | Reviews directly impact new patient conversions. |
| Keyword Tracker | Phase 2 | DataForSEO / SERPWatcher | Medium | Proves local search work is delivering ranking improvements. |
| Budget Tracker | Phase 2 | Google Ads API + Meta API | Medium | Transparency on ad spend. Removes billing questions. |
| Suburb Heatmap | Phase 2 | Airtable + Mapbox | Medium | Visual wow factor. Easy to demo to new prospects. |
| Competitor Snapshot | Phase 2 | Outscraper + DataForSEO | Medium | Competition motivates investment. Strong retention lever. |
| Messaging Centre | Phase 2 | Airtable / Supabase | Medium | Centralises comms. Reduces email fragmentation. |
| AI Growth Assistant | Phase 3 | Claude API + Airtable | High | Premium differentiator. Reduces support load on campaign managers. |
| Review Manager | Phase 3 | GBP API + Claude API | High | Sticky weekly feature. AHPRA-compliant AI replies. |
| PDF Report Generator | Phase 3 | Puppeteer / WeasyPrint | Medium | Makes reports portable. Shared with accountants and partners. |
| Patient Reactivation | Phase 3 | Meta API + n8n + CSV | High | Fastest ROI for clients. Potential add-on revenue stream. |
| Slot Tracker | Phase 3 | Manual / Cliniko API | Medium | Tracks the headline KPI we sell on. Makes results provable. |
| Content Approvals | Phase 3 | Airtable + admin panel | Medium | AHPRA compliance trail. Removes "didn't know" disputes. |
| Referral Program | Phase 3 | Airtable + n8n + Stripe | Medium | Turns clients into salespeople. Lowest CAC of any channel. |
| Benchmark Compare | Phase 3 | Airtable aggregate query | Medium | Network effect. More clients = more valuable benchmarks. |
| Case Study Builder | Phase 3 | Airtable + Claude API | Medium | Automates sales content creation. Every client is a case study. |
| Contracts & Invoices | Phase 3 | Stripe/Xero + DocuSign | High | Removes all admin friction. Reduces payment queries. |
| Multi-Location View | Phase 3 | Airtable (grouped) | High | Unlocks Scale package value. Dental group clients. |
| White-Label Platform | Phase 3 | Multi-tenant rebuild | Very High | B2B SaaS revenue. Partner agencies. Major engineering investment. |