# How to share HTML reports with your team

Publish an HTML report with its images and charts, check who can open it, and refresh it at the same URL.

Source: https://staging.publidock.com/blog/share-html-reports-with-your-team

Published: 2026-10-09
Topic: Guides

An HTML report already contains the work: the numbers, the charts and the explanation. Sharing it should let someone read that work in a browser, without asking them to download a file or run your project.

Publidock publishes the exported file or folder at a URL. You can replace the report at that address when the next export is ready, and choose who can open it. Here is a workflow for a weekly report, a client deliverable or an internal dashboard.

## Check the report before uploading

Open the export locally and follow its links. If it is one self-contained HTML file, upload that file. If it refers to a stylesheet, images or other pages beside it, upload the whole folder or a ZIP containing those files.

For example, a report might have this layout:

```text
report/
  index.html
  styles.css
  charts/revenue.html
  images/region-map.png
```

Keep the folders intact. A reference to `images/region-map.png` only works when that image is present at the same relative path. A path such as `C:\Users\analyst\report\image.png` points to your computer and will not work for a viewer. Change it to a relative path before publishing.

Browser pages can load outside services, but a viewer needs access to those services too. An export that relies on your logged-in notebook session or a local server needs adjustment first. Publidock serves static files; it does not run Python, database queries or server code.

For a report built in an analysis tool, follow the [Jupyter notebook export guide](/blog/share-jupyter-notebook-as-html) or the [Quarto publishing guide](/blog/publish-quarto-html-report) before uploading.

## Publish and choose the audience

Sign in and drop the file, folder or ZIP into Publidock. The browser publishing flow lets you inspect a preview before choosing **Go Live**. Confirm that its charts, links and supporting files work, and select the intended sharing rule before making it live. If an upload is held for review, wait for its status to clear before sending the URL as a finished deliverable.

**New sites start with link sharing. Anyone who has the address can open published content.** In the browser flow, set the audience before Go Live. Automated API or MCP uploads can publish immediately, so configure the required rule before uploading confidential material through those routes. Use sample data while checking the workflow.

Choose a rule that matches the report:

- **Link sharing** for material that anyone with the URL may read.
- **Company-domain sharing** for people using the approved company identity.
- **Named people** for an explicit list of colleagues or clients.
- **Password sharing** when a password and expiry fit the handoff.

Available rules depend on the plan; [pricing](/pricing) explains the options. Search-engine exclusion is separate from access control. A link that is not indexed can still be opened by anyone who obtains it.

Test the rule with a viewer account or a signed-out browser. Being able to open a page as its owner does not tell you what a client will see.

The [guide to restricting HTML site access](/blog/restrict-access-to-published-html) explains which rule fits each audience and how to test it.

## Keep one URL for the next report

When the report changes, open the existing site and publish a new version. Keep the files in the same structure and check that the new version is live. An update preserves the site's address and sharing rule, so the link in your team's conversation can stay current.

Create a separate site when the audience or purpose changes enough to deserve another address. For a normal weekly refresh, update the original site. Version history keeps the previous uploads available according to the plan's retention rules.

## If something is missing

- A broken image usually means a missing file or a path that still points to your computer.
- An empty chart can mean its data or JavaScript did not travel with the HTML. [Exporting Plotly to a self-contained file](/blog/share-interactive-plotly-charts) is one way to avoid that dependency.
- A page that loads but cannot fetch data may need different API permissions or an allowed browser origin at the external service.
- A report that requires a running application server needs an application host rather than a static-file publish.

For a step-by-step path check, see [fixing missing images and CSS after publishing](/blog/fix-missing-images-and-css-in-html-uploads).

Start with [one report](/login), verify its audience, then reuse its address. The [publishing documentation](/docs#how) covers the browser, CLI and HTTP API routes to the same workflow.
