ZyanDocs

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

Attaching is what mints the link, which is why the public-route QA check cannot pass before the first attach.

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 autopilot

decides whether next month's report writes itself.

SettingWhat it changesDefault
OffNo monthly drafts are generated for this website.Selected
Draft for reviewA draft is generated each month and waits in the review queue until you approve delivery.
Auto-attach after QAAttaches to the client portal as soon as delivery QA passes, and notifies the client. Account owner only to arm.
Generate on day of monthThe day, 1 to 28, the report is generated. Saves when you leave the field or press Enter.
Domain is a generic service termAllows 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.

CheckWhat it proves
Public report routeThe white-label link resolves
Client project report linkThe report is reachable from the client's project
Client Content Center linkThe report item exists in the client's Content Center
Portal report viewer routeThe in-portal viewer opens it
Mobile / iOS webviewThe 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.

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

ActionWhat happens
Refresh reportRegenerates a stored report with fresh data. Already-generated reports keep their stored layout until you do this
Regenerating an attached reportReplaces 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 madeThe 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

SymptomCauseFix
The monthly report never generatesThe mode is Off, the Reports lane is paused, or the scheduler parked it after three failuresSet the mode, resume the lane in Settings → Automation & budget, then use the month card's run button
The day of month will not saveThe value is blank or outside 1 to 28Enter a day between 1 and 28 and leave the field
A member cannot arm Auto-attach after QAArming it is account-owner onlyAsk the account owner
The public link shows not-foundThe report was never attached, was detached, or the link was opened on another workspace's hostAttach it, and share it on your own portal domain
Delivery QA shows QA blocked on an unattached reportThe public route check needs the first attachApprove and deliver; the attach-only checks resolve after
The client did not hear about a regenerated reportRegenerating an attached report deliberately does not re-notifyTell them yourself, or create a new report for the next period
The client cannot see SEO at allPortal SEO access is strictly opt-inTurn on Active SEO under Settings → Reporting & client