Features · reports and exports
Analytics reports and exports: only from days that add up
Analytics reports and exports that refuse to send a wrong number. Daily and weekly mail, branded client reports with a PDF, and every table as CSV or JSON.
Analytics reports and exports are how figures leave the dashboard: mails on a schedule, PDFs for clients, and files for a spreadsheet or a script. Skald builds every one from verified, whole days, and holds a report back when its sums do not reconcile. Part of Skald features.
30-day free trial · no card · we set it up within one working day · free to self-host
- 1 Oct 08:00 Northwind monthly · September · schedulesent to 3
- 1 Sep 08:00 Northwind monthly · August · schedulesent, 2 Aug listed as withheld
- 24 Aug 10:12 Northwind monthly · Month to date · a personsend now, sent to 3
- 1 Aug 08:00 Northwind monthly · July · scheduletried again 08:30, sent
Sample history. Every send listed: when, who started it, the period, and whether it went.
[01] four ways out
Four ways to get your analytics out of Skald
A mail for you, a report for a client, a file for a spreadsheet, or a command for a script. Every one is built from the same checked days.
What do you need? pick one
The daily and weekly mail
Branded HTML figures after each morning run, and on Mondays, to up to 20 confirmed recipients. Preview it exactly as it would go now. Figures only, never an address or a journey.
Settings › Mail · Daily mail: on · Weekly mail: on · 3 recipients confirmed → sent after the morning run
Client reports with a PDF attached
A branded mail with a PDF, weekly, monthly or every 1 to 92 days. Your agency's name, colour and logo, the sections you pick, and only verified, whole days.
Northwind monthly · Last month · Summary, Sources, Top pages, AI and bots, Leads → goes on the 1st at 08:00
Export menu and the report builder
Every table on a tab as a ZIP of CSV files, the tab as JSON, a printable report you can save as a PDF, or the report builder for several tabs at once.
Export › Tables on this tab (ZIP) → one CSV per table, with the filters on screen
Exports from the shell
For a script or a cron job on the server: skald export writes CSV or JSON from verified days, and skald report writes one HTML page or a ZIP of CSV files.
skald export --table pages --format csv → verified days only, withheld days marked
[02] the mail
Daily and weekly analytics mail, held back when a day is wrong
The daily mail goes after each morning's run, the weekly one on Mondays. A mail that would include a withheld or partial day is held back, not sent wrong.
Recipients confirm first
Every new address gets one mail with a confirm link, and nothing else until it is used. Nobody is put on a list without agreeing.
Preview
See the daily or weekly mail exactly as it would go now, from the same checked days. Nothing is sent, and no mail server is needed.
Test mail
Send a short test through your mail settings to yourself or a confirmed recipient, three in ten minutes at most.
Two notices
One short failure mail when the morning run fails, naming the step. A line when a newer Skald is out, red for a security release.

[03] client reports
Branded client reports, a mail with a PDF
Make a report per site in Settings › Reports: a name, up to 20 recipients, when it goes, the period, and the sections.
- Summary
- Where visitors came from
- Top pages
- Countries and cities
- AI and bots
- Leads
- Search Console
- Notes and footer
Periods: last week, last month, or month to date. Agency branding covers every report of every site in your organisation: your name in the header and the From name, a brand colour band, and a PNG or JPEG logo up to 256 KB. The site's own logo sits on the left.
[04] figures you can stand behind
A PDF report made on the server, from checked days only
The PDF is an A4 vector file with tables, bars and logos, made on your server with no browser. It carries the same figures as the mail, and the same checks.
Verified days only
A withheld, partial or not-recorded day is listed by date and drawn as a pale stub, never counted as zero.
Counted again
Before a report goes, its sums are counted a second time from the stored days. If they disagree, it is not sent, and the reason is recorded.
Send now and history
Send now goes to confirmed recipients, three by hand in ten minutes. History lists every send: when, by whom, the period, to whom, and whether it went.
Pause and retry
Paused keeps a report but stops its schedule. A failed send is tried once more 30 minutes later, then waits for its next day.
[05] files
Export to CSV, JSON or a printed report
Every export follows the filters and period on screen. Exports hold counts, paths and names, never anyone's address or browser string.
- Export what you seeone table, as CSV
- Tables on this tab (ZIP)every table, CSV
- This tab as JSONtables and totals
- Print this tabSave as PDF
- Report builderseveral tabs at once
The report builder takes several tabs, the period, a page group and filters, then prints or downloads them together.
[06] from the shell
Analytics exports from the command line
On the server, the same figures are one command away. Both commands use verified days only and refuse to write a report whose sums do not reconcile.
$ skald export --table pages --format csv $ skald report --from 2026-10-01 --to 2026-10-07 --format html --out r.html
The HTML report is one self-contained page to print as a PDF; csv-zip adds a README naming the days recorded, partial, withheld and missing.
What it does not do
- Sending needs a mail server in Settings › Mail. Without one, reports can be made, previewed and downloaded, not sent.
- Branding is for client reports: name, colour and logo. The mail still comes from the server's own address, and the dashboard keeps Skald's look.
- An SVG logo cannot travel in a mail or a PDF, so the site's letter is shown instead.
- Search Console figures are Google's, final days only, and never added to Skald's own.
- A recipient gets nothing until they confirm. Mails never carry an address or a journey.
keep reading
More on analytics reports and exports
questions
Analytics reports and exports FAQ
Straight answers, including what Skald does not do.
Can Skald send a branded report to my clients?
Yes. Client reports are a mail with a PDF attached, weekly, monthly or every few days at a time you set in the site's time zone. Your agency's name is in the header and the mail's From name, with your brand colour and logo. The mail is still sent from the server's own address.
What is in a client report?
The sections you tick: a summary (visitors, pages read, visitors from AI, leads, returning visitors and visitors per day), where visitors came from, the top 10 pages, countries and cities, AI and bots, leads, Search Console, and your own notes and footer.
What happens if a day in the report did not add up?
It is listed by date under the summary, drawn as a pale stub in the chart, and never counted as zero. Before a report goes, its sums are counted a second time from the stored days; if they disagree, or no day of the period is verified, the report is not sent and the reason is recorded.
Can I export the data to CSV?
Yes. Export what you see above any table downloads its matching rows as CSV. Export in the top bar gives every table on the tab as a ZIP of CSV files, the tab as JSON, a printable report, or the report builder for several tabs at once. Exports hold counts only, never an address.
Who receives the daily mail?
Up to 20 addresses you add in Settings › Mail. Each one first gets a mail with a confirm link, and nothing else until it is used. The daily mail goes after each morning's run, the weekly one on Mondays, and a mail that would include a withheld or partial day is held back.
Do I need a mail server for reports?
To send them, yes: set one in Settings › Mail. Without it, reports can still be made, previewed and downloaded as a PDF, and the page says why they are not sent.
$ tail -f access.log | skald
See what AI does with your site. Free for 30 days.
No card. We set up hosted Skald for you within one working day, or you self-host it free. Every line of your log, sorted and added up.