The 90-day report is what gets your retainer renewed. Most agencies underinvest in it and lose contracts they should have kept.
Content results follow a curve, not a line. Month 1 and 2, almost nothing ranks. Month 3 the first cohort of articles starts appearing on page 2 and 3. Month 4-6 is where rankings climb and traffic compounds. Most clients, if left to their own interpretation, conclude the program is "not working" around month 2 or 3 and start looking for the exit.
Your job is to make the results visible before the client has time to form that conclusion. That is what the 90-day report does.
The volume and scope of what was produced. Total posts, total words, pillars covered, new internal links created, featured images produced.
Pull from: your CMS, your internal tracker, or a custom dashboard.
Framing: "In the last 90 days we published X articles across Y pillars, adding Z internal links to strengthen topical authority."
Where the content is showing up in Google. Organic traffic change, keywords ranking in top 100 / top 10 / top 3, impressions, average position, click-through rate.
Pull from: Google Search Console (free), supplemented by Ahrefs or Semrush for competitor benchmarks.
Framing: "Organic traffic grew X%. We now rank for Y keywords in the top 10, up from Z at the start. Our average position improved from A to B."
What the traffic is actually producing for the business. Organic conversions, attributed revenue or pipeline, cost per lead compared to paid channels.
Pull from: GA4, the client's CRM, or attribution tool (Hyros, Dreamdata, etc.)
Framing: "Organic search generated X conversions and Y in attributed revenue this quarter. That is a cost-per-lead of $Z, compared to $AA on paid."
What you are doing next. Optimization targets, new content priorities, articles in production, expected ranking trajectory.
Pull from: your keyword map, your editorial calendar, and recent GSC data showing which articles are close to top-10 rankings.
Framing: "Next quarter we expand into pillar X, optimize Y articles currently on page 2 of Google, and ship Z new pieces targeting high-commercial-intent keywords."
Template: "In the last 90 days we published X articles, grew organic traffic by Y%, added Z keywords to the top 10, and generated $AA in attributed revenue through organic search."
That one sentence does the work of convincing the CFO or founder that the retainer is producing returns. Everything else in the report is supporting evidence.
Keep it short. 4-6 pages maximum. A long report implies you are padding. A short, data-dense report implies you are confident in the results.
Delivery: PDF plus a 30-minute review call. Never just email the PDF and hope. The call is where clients ask questions, voice concerns, and ultimately decide whether to renew. Always schedule the call within 5 business days of sending the report.
Pulling this report manually takes 2-4 hours per client per month if you know your way around GSC, GA4, and whatever CRM holds conversion data. For 5 clients, that is 10-20 hours every month just on reporting. For most agency owners, this is where reporting quality slips first: the temptation to copy last quarter's report and update the numbers is enormous, and the consequences (skipped insights, missed trends, generic narratives) show up 2-3 months later when a client churns.
A proper production system pulls GSC and GA4 data via API on a schedule, generates a branded PDF automatically, and flags narrative changes (new top-10 keywords, ranking losses, traffic spikes) for you to highlight in the call. That is what RankStack's reporting layer does. The report goes from a 3-hour manual pull to a 20-minute review and personalization.