Publish a weekly client report to one link that updates itself.
The client bookmarks one URL. Every week your agent, an n8n workflow, or a CI job renders fresh HTML and replaces the page in place, so the link you sent months ago still opens this Monday's numbers. Gate it with a passcode or their email domain; they never create an account.
No card · 3 pages free · about a minute
How do you send a client a report that stays current?
Publish the report once and send one link. Each week the agent renders fresh HTML and calls update_site on the same page, so the client's bookmark always shows the current numbers. No re-sending, no v3 attachments. Add a passcode or an email gate; the client never creates an account.
Why one link beats a weekly attachment
A weekly report sent as an attachment forks every week: report_final.pdf, report_final_v2, the one from the email thread the new stakeholder was not on. A single URL cannot fork. Whoever opens it sees the current version, and when someone asks in March what January looked like, you regenerate that view instead of excavating email.
This is the most common real workflow on Stacktree. Recurring client briefs are the biggest single category of pages people publish, ahead of one-off reports and audits, and the update-in-place primitive is why: the second send costs nothing, so the report becomes a place rather than a file.
What the client receives is a finished page, not a portal. See a live example report, a fictional monthly performance report published exactly this way, or browse the whole gallery.
Typical flow
- Monday, 8am: a schedule fires. Your agent (or an n8n workflow, or a GitHub Actions cron) pulls the week's numbers.
- It renders them as one self-contained HTML file: KPI band on top, channel table, what moved, what stalled.
- First run only: it publishes with
publish_htmland you send the returned URL to the client, with a passcode or gated to@client.com. Filing it under the client withclient: "Acme"puts it behind their space. - Every later run: it calls
update_sitewith the same site id. Same URL, new numbers. - You check the share-link records to see who opened it before the call.
Three ways to automate the schedule
From the agent itself. Any MCP client that runs on a schedule can own the whole loop: render, update_site, done. The agent keeps the site id from the first publish.
From n8n. The n8n-nodes-stacktree community node has publish and update operations. Schedule trigger, query node, LLM or code node renders the HTML, Stacktree node updates the page, Slack node tells the channel.
From CI. The GitHub Action pins the site id and replaces in place on every run:
- uses: stevysmith/stacktree-actions@v1
with:
file: dist/weekly-report.html
api-key: ${{ secrets.STACKTREE_API_KEY }}
site-id: ${{ vars.STACKTREE_SITE_ID }} Omit site-id on the first run, then pin the returned id so the URL stays stable.
What it costs, honestly
Free keeps 3 pages for 7 days each with passcodes included, which is enough to trial the loop for a week. A weekly link that must not die wants a page with no expiry, and that starts on Solo at $19 a month, which also adds the email-domain gate, open counts, and serving the report from your own domain instead of stacktr.ee.
Run it now
1. Paste one line into your agent
Fetch and follow https://stacktr.ee/prompt.md, then publish this week's report as a private link and update the same URL on every future run. Works in any agent that can fetch a URL. The instructions are plain Markdown you can read first.
2. Install once
npx stacktree-install Configures Claude Code, Cursor, Codex CLI, OpenCode, or Amp. On Claude.ai, add the connector URL https://api.stacktr.ee/mcp instead; one-click setup.
3. No signup: curl it
curl -X POST https://api.stacktr.ee/sites -F file=@weekly-report.html Publishes anonymously: a private URL that lives 24 hours, no account and no key. The response includes a claim token so you can keep the page and start updating it in place.
Frequent questions
Does the link change when I update the report? +
Does the client need an account to open it? +
How do I know they actually read it? +
Can I run this on the free plan? +
Related guides
- Send a client report as a link The one-off version of this workflow, and why links beat PDFs.
- Host an agent-built dashboard When the recurring thing is a dashboard rather than a document.
- Client spaces One address per client that every weekly report files behind.
- Publish from n8n The community node this workflow runs on when n8n owns the schedule.
- Example deliverables Live fictional reports showing the finished form.
- All workflows The other three recipes.
Sources and further reading
- stacktree-actions on GitHub ↗ The composite action: file or folder in, private URL out, site-id pinning for stable links.
- n8n docs: community nodes ↗ How to install n8n-nodes-stacktree, self-hosted or on n8n Cloud.
- Google: Gmail attachment limits ↗ The 25 MB cap that makes attachment-based reporting fragile in the first place.
Send the report once. Never send it again.
Publish this week's report free, no card. If the loop sticks, permanence starts at $19 a month.
Sign up free →