Monthly Client Report — Template & Cadence
The monthly report is the single biggest churn-prevention tool you have. Clients don't cancel because the work is bad — they cancel because they forgot what they're paying for.
Send a report every month. Same day, same format. Even when there's nothing to report.
The cadence
- Send by the 5th of every month for the prior month
- Email format. NOT PDF (too formal, takes longer for them to open)
- Plain text or lightweight HTML
- Subject line:
[BusinessName] — [Month] report - Always end with a question that invites a reply
The standard report (everyone gets this)
Stackd ships a single $197/mo plan, so every client gets the same report shape. Adjust the depth based on what data you actually have for that client (some won't have GA4 set up at first; some won't have GBP managed by you yet).
Subject: [BusinessName] — March report
Hey [FirstName] —
Here's where things stand this month:
📈 Site this month
• Visits: 412 (vs February: 348, +18%)
• Top page: /menu — 247 views
• Top traffic source: Google organic (61%)
• Avg load time: 1.4s ✓
• Bounce rate: 38% (industry avg ~50%)
✏️ Changes I shipped
• Updated holiday hours for March
• Added new menu item: Spicy Teriyaki Bowl
• Replaced the team photo with the one you sent
• Compressed all photos (page size down 22%)
• Security patches applied (March 8, March 22)
🌐 Google Business Profile (if managed)
• Profile views: 1,847
• Direction requests: 89 (vs February: 73)
• Calls from listing: 34
• New reviews this month: 4 (avg 4.7★)
• I responded to 3 of them; one is waiting on a quick reply from you (link below)
🎯 Suggestion this month
Your Sunday hours show "closed" on Facebook but "10am-5pm" on Google — Facebook is wrong. I'll fix it this week. Bigger thing: you've gotten 4 5-star reviews mentioning the açaí bowls. **Worth featuring those more on the site.** I can mock up a small "fan favorite" section if you want, 30 min of my time, included.
Want any of that, or want me to dig into something specific?
— [YourFirstName]
The minimal report (when data is sparse)
If a client doesn't have analytics set up yet, or just signed up and there's no MoM comparison, run this lighter version. Send it anyway. The point of the report is contact, not data.
Subject: [BusinessName] — March report
Hey [FirstName] —
Quick monthly check-in:
✅ This month
- Site loaded fast (avg 1.3s on mobile, target <2s)
- 100% uptime
- Backups running daily, all good
- Security patches applied (March 8, March 22)
✏️ What I shipped
- Updated your Easter hours
- Replaced the team photo per your request
- Compressed all photos (page weight down 22%)
🎯 One suggestion
You should respond to that 4-star review from "Anna B" — quick reply, takes 2 min, looks great to future searchers. Want me to draft it?
That's it. Anything you want me to look at this month?
— [YourFirstName]
What to include vs. exclude
| Always include | Sometimes include | Never include |
|---|---|---|
| Site uptime / load time | Conversion rate (if you have form data) | Vanity metrics with no business meaning |
| Visits MoM | Branded vs. non-branded search split | Bounce rate without context |
| What you actually did this month | Detailed SEO ranking changes | "Engagement" numbers |
| One concrete recommendation | A/B test results | Empty platitudes ("things are looking great!") |
| GBP metrics (if managed) | Top performing content | Charts they have to interpret themselves |
The rule: every number you include should answer a question they'd ask. If they wouldn't ask it, don't include it.
What to do when there's nothing to report
This will happen. Quiet months. No traffic spikes, no major changes, no fires.
Send the report anyway. Format:
Subject: [BusinessName] — March report
Hey [FirstName] —
Quiet month. Quick recap:
• Site running clean — 1.3s loads, 100% uptime
• Updated [hours / one small thing]
• 287 visits, 3 calls from the site
• No critical issues
Honestly the most valuable thing I'd do this month is [specific thing]. Want me to?
— [YourFirstName]
Quiet reports are powerful. They prove you didn't forget about them, and they invite the next conversation.
How to source the metrics
| Metric | Where it comes from |
|---|---|
| Visits, sources, top pages | Google Analytics 4 (free), Cloudflare Web Analytics (free), or Plausible/Fathom |
| Avg load time, performance | PageSpeed Insights API or Lighthouse CLI |
| GBP views/calls/directions | Google Business Profile insights (free) |
| Search rankings | Free tier of Ahrefs Webmaster Tools or SerpRobot |
| Reviews | Manual count, or Birdeye/Podium at scale |
| Site health | Lighthouse, broken-link checker |
Time investment per report: ~15 minutes once you have a template. At scale, that's 1–2 hours of reporting per week for 20 clients. Worth every minute — it's your retention insurance.
The annual review
Once a year per client, do a longer 30-min call instead of just an email report. Prep:
- YoY comparison — visits, leads, calls
- What worked — list specific wins
- What didn't — what we tried that flopped
- Recommendation for next year — 2-3 strategic moves
- Pricing review — bring this up if you're going to raise prices
If they're up for it, this is also when you ask for:
- A written testimonial
- Permission to use their site as a case study
- Referrals to similar businesses
Annual reviews close ~80% of paid add-ons (e.g., a managed-ads add-on, a photo shoot, a multi-location expansion) when timed right.
A note on dashboards
You'll be tempted to build a fancy client-facing dashboard with real-time metrics.
Don't, for at least 12 months.
The reasons:
- Most owners never log in (industry data: <10% of dashboards get checked monthly)
- Building one costs you a week of dev time
- The monthly email achieves the same goal with 1% the effort
- It anchors them on "tools" instead of "results"
When you have 50+ clients and reporting becomes a bottleneck, build a dashboard or use a white-label tool (Whatagraph, AgencyAnalytics). Until then, send the email.
Tracking that you sent it
Add a column to your CRM:
- "Last report sent" (date)
- "Last report opened" (yes/no — if you have email tracking)
- "Reply received" (yes/no)
If a client hasn't replied to 2 reports in a row → send a check-in email or schedule a quick call. They're either too busy (fine), getting ready to cancel (act now), or not actually reading (problem to solve).