ipinternalpage
Use caseUpdated

Share private HTML reports without building a hosting stack.

internalpage turns a generated HTML file into a private URL for your Google Workspace team, so analysts, engineers, and founders can share finished reports without exposing them on public static hosting.

Upload self-contained .html and .htm files
Protect every view with Google sign-in
Share one stable internal URL
Update reports from the dashboard, API, or CLI

Why generated HTML reports are awkward to share

A notebook export, ETL summary, model evaluation, or finance dashboard often ends up as a single HTML file. Emailing it produces stale copies, public hosting is too open, and building an internal application adds deployment work that the report itself does not need.

  • Attachments split one report into many uncontrolled copies
  • A public bucket or static host exposes the URL without an identity check
  • A full portal needs routing, authentication, hosting, and ongoing ownership

A private link replaces attachments and ad hoc hosting

Upload the HTML file, choose a readable slug, select the audience, and share the viewer URL. internalpage checks the viewer's Google identity before serving the page, while the same slug can receive later report versions.

  • Workspace-wide sharing for team reports
  • Selected-email sharing for narrower review
  • Version replacement without sending a new link every time
Publish a recurring report
npx @internalpage/cli publish ./report.html --slug weekly-metrics

Choose the access scope before you publish

The right access scope follows the report's audience. A company-wide operating report can use workspace access, while a finance review or customer-specific artifact should use a narrower selected-email list.

  • Workspace access: recurring reports intended for the whole internal team
  • Selected emails: sensitive or cross-functional review with a known audience
  • Separate page slugs: reports that need distinct access rules or retention decisions

Google SSO protects delivery to authorized viewers; it does not make secrets safe to embed in HTML. Remove tokens and credentials before publishing.

Report workflows that fit well

Private HTML report sharing works best when the output is generated elsewhere and teammates mainly need to read, review, or archive it in a browser.

  • Weekly product, sales, or finance metrics exports
  • LLM evaluation and model comparison reports
  • Data quality, ETL, and experiment summaries
  • Backoffice audits and incident review timelines

A practical publish-review-update loop

Treat the private page as the stable destination and the local HTML file as the generated input. Publish, verify access from a signed-out browser, share the URL, then publish to the same slug when the source changes.

  • Verify the page title, charts, and assets after the first publish
  • Test both an authorized and unauthorized Google account for sensitive reports
  • Keep one stable slug for each recurring report series
  • Use recent view logs as an operational signal, not as proof that the content was read
Update the same private page
npx @internalpage/cli publish ./report.html --slug weekly-metrics

When a static report is not enough

Use a full application host when viewers must edit data, run long-lived server processes, or depend on a private backend at runtime. internalpage is intentionally optimized for publishing finished browser-viewable artifacts.

  • Database writes and complex form workflows need an application backend
  • Live operational dashboards may need a runtime with data-source credentials
  • Static snapshots remain useful when reproducibility and a stable review link matter more than live interaction
FAQ

Common questions

Can internalpage host dynamic JavaScript apps?

internalpage is optimized for static internal pages and generated artifacts. Use a full app host when the page needs a backend, live database writes, or complex runtime services.

Do viewers need internalpage accounts?

Viewers sign in with Google. Access is checked against workspace membership or selected email grants before the private page is served.

Can I update the report from CI?

Yes. Use a personal API token or the CLI to replace the latest page version from a script while keeping the same private URL.

Should I use workspace access or selected-email access?

Use workspace access for reports intended for the whole team. Use selected-email access when the audience is known and narrower, such as finance, customer, or incident reviews.