Type your numbers and get a client-ready monthly report that makes an argument instead of dumping forty metrics. Built on a five-question structure, it computes the engagement rate and the change since last period for you, then exports as Markdown, plain text, or a clean PDF.
Report details
1 · What we set out to do
2 · What happened — per channel
Outlier note (optional)
4 · What it earned
5 · What's next — and what you need
Northwind Analytics — Social Media Report
May 2026 · Prepared by Lumen Social
1. What we set out to do
May was the launch of the “data without dashboards” campaign — establish the product point of view on LinkedIn and test whether short Instagram explainers could feed demo signups.
2. What happened
LinkedIn
Metric
May 2026
Previous
Change
Posts published
12
10
+20%
Reach
38,200
31,000
+23%
Engagement rate
2.92%
2.64%
+0.3 pp
Saves + shares
64
41
+56%
Link clicks
430
300
+43%
Follower change
+260
+180
—
Why: The two “anti-dashboard” carousels drove most of it — together they out-commented everything we’ve posted this year, which is why reactions and comments jumped while post count barely moved.
Instagram
Metric
May 2026
Previous
Change
Posts published
9
8
+13%
Reach
22,400
24,100
−7%
Engagement rate
7.29%
6.12%
+1.2 pp
Saves + shares
306
220
+39%
Link clicks
140
120
+17%
Follower change
+95
+120
—
Why: Reach dipped on fewer Reels, but saves climbed 40% — the explainer format is landing even though it isn’t pushing many clicks yet.
Engagement rate = (likes + comments + saves + shares) ÷ reach × 100, per channel against that channel's own reach.
Outlier note
May 14 LinkedIn carousel reached 14,900 (3.4× our median) after a mid-size account reshared it — included in totals, set aside when reading the per-post averages.
4. What it earned
Source
Sessions
Demo signups
LinkedIn organic
430
38
Instagram organic
140
7
Total
570
45
Session-to-demo signup rate: 7.89%
5. What's next — and what we need from you
June carries the campaign into a three-part “rebuild your weekly report” series on LinkedIn, with Instagram repurposing each part as a 30-second explainer.
Decision needed: We’d like to test one boosted LinkedIn post (€200) against the organic baseline — approve by June 6?
An export is not a report
Most social media reports are written to prove work happened: pages of screenshots, a number for everything the platform exports, a “highlights” slide that’s really the three least embarrassing metrics. The client skims it, says “looks good,” and the relationship quietly weakens at renewal — because a data dump gives them nothing to renew. A report is different in kind, not degree. It makes an argument: here’s what we set out to do, here’s what it earned you, here’s what we’re doing next and why. Clients renew arguments; nobody renews a spreadsheet. This tool is opinionated on purpose — it only lets you build the second kind.
The form is organized as five questions, answered in order. Answer them honestly and you have a report that reads in two minutes and survives being forwarded to the client’s boss.
1
What we set out to do
One short paragraph naming the month’s focus in plain words. This is the bar everything below gets measured against — if you can’t write it, the numbers underneath are decoration, because there was nothing to measure them toward.
2
What happened
The numbers block: a fixed set of metrics per channel, each shown against the previous period. The tool computes the engagement rate and the change for you. The discipline that makes this section trustworthy is keeping the metrics the same every month— a report whose metrics shift is a report that can’t be compared.
3
Why it happened
Two or three sentences of real analysis per notable movement, entered as the “why” line on each channel. “Engagement rose because the two carousels out-saved everything this quarter” is analysis; “engagement was strong” is weather reporting.
4
What it earned
Tracked sessions and the conversions the client actually counts — signups, leads, sales. This is the section the client’s boss reads, and the one most reports fudge. It only works if your links were tagged before the month started.
5
What’s next — and what we need from you
Next period’s focus plus one decision, phrased as a question the client can answer in a single email. Reports that end with a decision get replies; reports that end with a chart get silence.
The numbers block: fewer metrics, attached to their method
The fastest way to lose a client’s trust is to be asked “how is this calculated?” in a meeting and not have a crisp answer. So the report prints the engagement-rate formula directly under the numbers — the method travels with the metric. The default block covers what an organic retainer needs: posts published, reach, engagement rate, saves and shares (the high-intent signals, kept separate from vanity likes), link clicks, and follower change last, as context rather than a headline.
Two rules keep it honest. Freeze the window— calendar month or trailing 30 days, but pick one and never switch, because a window that moves is a number that can’t be compared. And pair every rate with an absolute: a rising engagement rate on collapsing reach is a shrinking account wearing a flattering metric, which is exactly why the tool shows the rate and the reach it was earned on side by side. To pressure-test a channel’s engagement rate against platform benchmarks before it goes in the report, run it through the engagement rate calculator, which uses the same formula and hands you a methodology line to paste.
The earned section is won before the month starts
Question four — what did it earn— can’t be reconstructed after the fact. If the links you posted in May weren’t tagged, May’s traffic is an undifferentiated blob labeled “social / referral” in analytics, and no amount of reporting effort will split it into which campaign worked. The fix is unglamorous and done in advance: every outbound link gets UTM parameters before publishing, with one campaign name shared across channels and sources and mediums from a fixed vocabulary so they land where you expect in GA4’s default channel groupings. The UTM builder generates the whole channel set at once; the GA4 setup guide turns those tagged links into the saved exploration this section pulls from. Enter the sessions and conversions per source, and the tool totals them and computes the conversion rate.
Compare to a baseline, not to a borrowed benchmark
The report compares each channel to its own previous period, never to another channel and never to a generic industry table — a 1.2% rate on X by impressions and a 4% rate on Instagram by reach aren’t on the same scale, so putting them next to each other invents a story that isn’t there. For a new client with no history yet, build a trailing 90-day baseline over the first few months and measure against that. It’s the only benchmark that can see your niche, your audience size, and your content mix — the three things that make borrowed benchmarks useless.
One more honesty habit the tool is built for: annotate outliers, don’t erase them.A post went viral or a post flopped — note it in the outlier field, show the average with and without it, and move on. Clients forgive variance; they do not forgive discovering three months later that “average” quietly excluded the bad weeks.
From numbers to sent in about thirty minutes
Run with discipline, the monthly report is an assembly job, not a writing job. Pull the platform numbers into the form (the metrics and window never change, so neither does the query). Add the campaign sessions and conversions, already clean because the links were tagged on the way out. Write the focus paragraph, the why-lines, and the decision question — the only real writing in the document. Then copy the report as Markdown into your own template, or hit Print to save a one-page PDF. The expensive version of this job is the day spent reverse-engineering untagged links every month; set the vocabulary once and the report becomes the easiest argument you make all month.
Frequently asked questions
What should a monthly social media report include?
Five answers, not forty metrics: what you set out to do, what happened (a fixed numbers block of five to seven metrics, each shown against last period), why it happened (a sentence or two of analysis per notable movement), what it earned (tracked sessions and conversions), and what's next plus the one decision you need from the client. This generator is built around exactly that structure — you fill the five sections, it does the engagement-rate and change-percentage math, and it assembles a document you can send. Everything else most reports include is padding between the client and the argument.
How is the engagement rate calculated?
Engagement rate = (likes + comments + saves + shares) ÷ reach × 100, computed per channel against that channel's own reach — and the formula is printed under the numbers block so the “how is this calculated?” question takes four seconds to answer in a meeting. Each platform is compared only to its own previous period, never cross-compared, because a rate on impressions and a rate on reach aren't on the same scale. If you want to vet a single channel's number against industry ranges first, the engagement rate calculator does that with platform-specific benchmarks.
Is my data uploaded anywhere?
No. The entire tool runs in your browser — you type the numbers, the report is assembled on your device, and nothing is sent to a server. There's no login, no account, and no storage; close the tab and the data is gone. That's also why the export is copy-and-download rather than a saved dashboard: the document is yours to paste into Google Docs, Notion, an email, or a slide, wherever the client actually reads it.
Can I export the report as a PDF?
Yes, two ways. “Print / PDF” opens your browser's print dialog scoped to just the report, so “Save as PDF” gives you a clean one-pager. Or copy the report as Markdown and paste it into Google Docs or Notion, format it to your brand, and export the PDF from there — which is usually what agencies want, since the report lands in their own template. You can also download the raw Markdown file or copy a plain-text version for email.
How is this different from exporting analytics from each platform?
An export shows data; a report makes an argument. Platform analytics hand you every metric the API returns with no history, no context, and no point of view — the client skims it, says “looks good,” and nothing changes. This tool forces the opposite: a focus statement the numbers are measured against, period-over-period change on every metric, a why-line for each movement, the conversions the work actually produced, and a decision to reply to. It's the difference between proving work happened and showing what it earned.
Do I need the previous period's numbers?
They're optional but worth it. A metric without history is trivia — “4.8% engagement” means nothing until you know last month was 3.9%. Each channel has a collapsible “previous period” section; fill it and the report shows the change column and the engagement-rate movement in percentage points. Leave it blank and the report still generates cleanly, just without the comparisons. If you're starting fresh with a client, build a trailing baseline over the first few months and compare against that instead.