Guide

How to share an HTML report or dashboard with a client

Updated 30 October 2026

Export the report to one HTML file: fig.write_html() in Plotly, jupyter nbconvert --to html for a notebook. Publish it with npx ashare-cli publish report.html and open it only to the people who should see it: your company by email domain, the client’s email, or anyone with a password. The client opens the link, signs in with a code from their email and can comment on the text.

Export the report to HTML

Plotly

write_html saves a figure as an HTML file that opens in any browser and stays fully interactive.

Python
fig.write_html("report.html", include_plotlyjs="cdn")

By default the file carries its own copy of plotly.js, about 3 MB of it. With include_plotlyjs="cdn" the page loads plotly.js from the CDN instead and the file is about 3 MB smaller, but the reader needs the internet to see the chart. Documents on ashare may load scripts from CDNs, so either file works there. ashare takes one page up to 5 MB, so a large figure with plotly.js inside may need the CDN option. include_plotlyjs="directory" expects plotly.min.js in the same folder: publish that folder and it goes up as a site.

Jupyter

Terminal
$ jupyter nbconvert --to html --no-input --embed-images analysis.ipynb

A dashboard of several files

If the export is a folder with index.html, CSS, scripts and data files, publish the folder. It goes up as a small site: pages link to each other and assets load. Up to 200 files and 25 MB in all.

Why an attachment is awkward

A public link solves the first problem and keeps the third one: whoever has it gets in.

Publish it with access

Create a key on ashare.net/me/api, then:

Terminal
$ npx ashare-cli login
$ npx ashare-cli publish report.html --title "Q3 churn analysis"
$ npx ashare-cli share <id> anna@client.com

A new document is private: only you open it. share adds the client’s email and sends them a letter with the link. The other ways in:

Who should open itHow
One client, or a few peopleshare <id> anna@client.com ben@client.com, up to 100 emails
Your whole team--visibility company: everyone who signs in with an email on your company domain
Anyone you give the password to--visibility public --password <password>
For a limited time--expires 14d; after that the link shows “Link expired”

Company documents need an organization on ashare. If nobody on your domain has one yet, signing in with a company email creates it, with a 30-day trial. A notebook or a script can run these commands too, and agents publish the same way over MCP: see CLI and Connect your agent.

What the client sees

  1. They open the link, type their email and the 6-digit code from the letter. No account or password to create.
  2. The report works as it did on your machine: the charts are interactive, the scripts run.
  3. They select a sentence or a number and comment. You get an email about new comments.
  4. You fix the report and publish a new version at the same link: npx ashare-cli update <id> report.html. A link with ?v=2&diff=1 shows them what changed.

For a private or company document you see who opened it, how many times and when: npx ashare-cli views <id> or the document page. If the client should not see earlier drafts, hide the version history and readers get only the current one.

When something else fits better

ashare.net: your agent publishes HTML or Markdown and you choose who opens it: your company, specific emails or a password. Readers comment, the agent fixes the document.

Connect your agent