Monthly SEO reports
Lock a baseline, generate the first report, run the monthly autopilot, pass delivery QA, and share a public white-label link with the client.
A monthly SEO report is the deliverable the client actually reads. Zyan generates it from the website's own performance data, holds it in a review queue, and — when you attach it to the client portal — mints a public, no-login link branded as your agency.
Reports live at ResultsReports on a website, and in the review queue under PortfolioReports.
Before you start
You need Search Console and Analytics connected for the report period, a locked reporting baseline, and a linked client portal for the website. Arming Auto-attach after QA is account-owner only.
Generate
A draft for the previous month, by hand or on the autopilot
Review
The preview renders in a sandboxed frame in the queue
Delivery QA
Five customer-facing routes are proved
Attach
The client is notified and the public link is minted
Your first report
Lock the baseline
The first-run card on the Reports view starts with Lock baseline. Pick the baseline date, then lock it.
Create and generate
Choose the month and generate the report. Generating spends AI credits.
Read the preview
The draft renders in a sandboxed frame. Read it as the client will.
Attach it to the client portal
Set the Portal date, which orders the report in the client's timeline, and attach. Sharing happens immediately on attach.
A baseline cannot be re-locked from the admin interface
Lock it against the month you are about to report on. If you lock it carelessly, every comparison afterwards measures from the wrong starting point and there is no in-app way to move it.
The monthly autopilot
SettingsReporting & clientMonthly report autopilotdecides whether next month's report writes itself.
| Setting | What it changes | Default |
|---|---|---|
| Off | No monthly drafts are generated for this website. | Selected |
| Draft for review | A draft is generated each month and waits in the review queue until you approve delivery. | — |
| Auto-attach after QA | Attaches to the client portal as soon as delivery QA passes, and notifies the client. Account owner only to arm. | — |
| Generate on day of month | The day, 1 to 28, the report is generated. Saves when you leave the field or press Enter. | — |
| Domain is a generic service term | Allows generic service words taken from the domain in reports and rank checks. Business-name keywords stay excluded. Owner only. | — |
Drafts always cover the previous calendar month. Generating one spends AI credits every month, so leave the mode Off for websites you do not report on.
Two owner-only controls on this panel
A member cannot arm Auto-attach after QA — the server refuses it — although they can switch away from it. Domain is a generic service term is owner-only as well.
If a scheduled run fails three times, the scheduler parks that report and stops retrying. Generate it by hand from the month card's run button to try again.
Review, approve, deliver
The review queue under Portfolio groups generated previews by month across every website.
Open the Portfolio scope, then Reports
Open the preview
It renders in a sandboxed frame, because an unattached report has no public link yet.
Read the QA pill
QA blocked, QA not checked, ready with warnings, or ready.
Approve and deliver
Approve & deliver attaches the report and notifies the client. Or delete a preview you are not going to send.
Delivery QA
Five customer-facing routes are proved before delivery.
| Check | What it proves |
|---|---|
| Public report route | The white-label link resolves |
| Client project report link | The report is reachable from the client's project |
| Client Content Center link | The report item exists in the client's Content Center |
| Portal report viewer route | The in-portal viewer opens it |
| Mobile / iOS webview | The link works in the native app's webview |
QA blocked on a brand-new report is expected
The Public report route check cannot pass before the first attach, because attaching is what mints the link. Read the preview, use Approve & deliver, and the attach-only checks resolve afterwards.
Public share links
Attaching mints two things: the share token, and the standalone report URL on your client-portal host. The page is no-login, renders the delivered report in a sandboxed frame, and carries your workspace's product name and accent.
Share links are bound to your portal host, and detaching kills them
A valid token presented on another workspace's host is treated exactly like a bad token. Always share the link on your own client-portal domain. Detaching a report deletes its token, and the link stops working for everyone who has it.
Client-visible report files also have a signed viewer link with print, open-in-new-tab and PDF download. The portal links there automatically; there is no login prompt.
Regenerating and refreshing
| Action | What happens |
|---|---|
| Refresh report | Regenerates a stored report with fresh data. Already-generated reports keep their stored layout until you do this |
| Regenerating an attached report | Replaces the delivered content, re-attaches automatically, keeps the same attach date and link, and does not re-notify the client |
| Evidence updated after the report was made | The report is flagged. Create a new report for the next period rather than reworking the old one |
The Results tab around reports
Results holds three sub-views. Performance charts search clicks, impressions, average position and sessions over a window you choose — Report month, ~28d, ~90d, Year or Baseline — with ranking exceptions underneath. Report month and Year stay greyed out until the underlying data exists. Local is the Map Pack grid. Reports is the list, with a month filter and columns for period, status, client portal state, QA and last update.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The monthly report never generates | The mode is Off, the Reports lane is paused, or the scheduler parked it after three failures | Set the mode, resume the lane in Settings → Automation & budget, then use the month card's run button |
| The day of month will not save | The value is blank or outside 1 to 28 | Enter a day between 1 and 28 and leave the field |
| A member cannot arm Auto-attach after QA | Arming it is account-owner only | Ask the account owner |
| The public link shows not-found | The report was never attached, was detached, or the link was opened on another workspace's host | Attach it, and share it on your own portal domain |
| Delivery QA shows QA blocked on an unattached report | The public route check needs the first attach | Approve and deliver; the attach-only checks resolve after |
| The client did not hear about a regenerated report | Regenerating an attached report deliberately does not re-notify | Tell them yourself, or create a new report for the next period |
| The client cannot see SEO at all | Portal SEO access is strictly opt-in | Turn on Active SEO under Settings → Reporting & client |