Sample report · Advisory clients
What your report looks like.
Most marketing reports tell you what happened. This one tells you how sure we are, where every number came from, and what happens next. Below: three pieces rebuilt from a real monthly report, with the client taken out.
Illustrative sample, client details removed
Piece 1 · Top of every report
Data currency: read before quoting.
Before a single chart, the report says what was pulled today, how, and what wasn't. A number with no date and no source doesn't get quoted in a board meeting.
Data currency · read before quoting
- New today: month-to-date paid search, read through the platform's own API. The latest three days are still filling in, so the return ratio will rise as it settles.
- Store revenue: manual export from the store platform, pulled on the 5th. The store platform is the system of record. Analytics is not.
- Not re-pulled today: two social platforms (no logged-in session this run) and the marketplace (latest is the monthly export). Their figures carry the older date.
- Rankings: rank tool out of API credits this week. Latest ranks are from a manual read; analytics organic traffic is the live search signal.
- Still not measurable: AI-assistant mentions, phone calls, one ad account not yet linked. Marked "awaiting data," never estimated.
Piece 2 · The scoreboard
Every lane, graded in one glance.
One card per lane. A grade, the number that earned it, the reason in plain words, and the next move. Leadership reads this page and nothing else if that's all they have time for.
Web revenue
RampingConversion rate up 18% as low-quality traffic faded. The store platform is the system of record, not analytics.
Next: Automate the monthly store export so this stops being a screenshot.
Marketplace
RampingListing fixes went live mid-month. Returns on the first fixed listing fell by three quarters.
Next: Run the same fitment fix across the highest-volume kits.
Paid search
Warming upTwo new campaigns are in their learning period. Seasonal campaigns are carrying the account.
Next: Review the new campaigns mid-month. Audit which conversions count as purchases.
Product feed
Warming upMost blocked items are made-to-order products showing out of stock. That's an inventory rule, not a feed fault.
Next: Fill missing prices at the source and name one owner for the price field.
SEO and AI visibility
Warming upVisits from AI assistants up 43%. Organic sessions flat while a 20-page product pilot settles.
Next: Add the next category's terms to tracking. Read the pilot in four weeks.
Social and content
RollingRe-cuts of old video drew a fraction of the views of new footage. Cadence still lumpy.
Next: Reconnect one disconnected profile. Shoot new footage over re-cuts.
Leads (sister brand)
RollingLeads fell less than traffic. Paid sessions from unmanaged legacy ads fell; organic held.
Next: Re-link the ad account or pause it. Merge a duplicate form event.
Measurement
Needs a jumpUnchanged from last month. Bidding is steering on less than half of reality.
Next: Purchase-tag wiring audit before the platform migration.
Piece 3 · Platform watch
Google-side, or ours?
Before a swing goes in the story, we check whether the platform caused it. Credit and blame both wait until this table is filled in.
| Signal | What we see | Could be Google-side? | Status |
|---|---|---|---|
| Product feed eligibility | An overnight drop of about ten products recovered on its own over three days, with no change on our side. | Likely Google-side: consistent with a re-crawl. The out-of-stock block is our inventory data. | Updated |
| Analytics revenue capture | Analytics logged under half of the revenue the store platform recorded. Direct sessions up sharply at low engagement. | Partly possible: bot filtering can shift Direct. The undercount is most likely our tag wiring. | Watch |
| Ads vs analytics conversions | Ad platform conversion value about 28% above analytics revenue. Two purchase actions both counted as primary. | Not Google. Configuration. Mark the duplicate secondary and re-baseline. | Fix queued |
| Spam update window | A confirmed two-week spam update overlapped the reporting period. Tracked terms held or rose. | Yes. Ranking swings inside this window are not test results. | Finished |
| Shopping reporting change | Google re-cut free-listing reporting, retroactively. Free-listing clicks dropped and ad-attributed clicks rose overnight. | Yes, confirmed. Compare eligibility counts (ours) separately from performance counts (theirs). | Google-side |
| Core updates | No broad core update announced this period. | Don't read normal ranking wobble as an algorithm change until one is announced. | None logged |
The rule: any swing bigger than 20% either way that doesn't match a change we made gets checked against Google's own status pages, known-issues lists, and release notes before it goes in the narrative. If Google caused it, it's logged here with the date. If not, it goes to a root-cause pass.
Also in every report
The parts that make it usable, not just accurate.
Where we were, where we are
The executive summary starts from the baseline and shows the distance covered, sourced, before the honest read.
What we did, tested, and learned
Why we did it, what we tested (anything counts as a test), what worked, where we go next, and what to ignore.
Done, in progress, blocked, next
Every open item in one table, with a name on anything waiting on a decision.
How every number was pulled
Platform API, connector, derived, or manual export, listed per channel. Gaps flagged as awaiting data.
Want this for your business?
Reporting you can quote without a footnote.
Start with the audit to see what your data can support today. Advisory clients get this report every month.