Why email and PDF fail
An interactive dashboard is HTML plus JavaScript: charts that animate on load, filters that re-render the view, tooltips, drill-down. Email bodies strip scripts as a security measure and most providers block .html attachments. PDF export rasterizes the dashboard into a frozen image: the filters become decorative, the charts become screenshots, and the entire point of an interactive view disappears. If the dashboard was worth building interactively, it is worth delivering as a live page.
Option 1, host on LiveSend
Three steps:
- Export the dashboard as a single .html file (inline the CSS and JS, or reference them from a public CDN).
- Upload the file to LiveSend. The product returns a permanent URL.
- Toggle on view notifications. Add a password if the data is confidential. Send the URL.
Each view is logged with timestamp, optional viewer email, country, and time spent on the document. You can update the dashboard later without changing the URL. Trade-offs: 3MB (6MB for Pro) cap per HTML file (covers most dashboards once assets are externalized), small watermark on the Free plan (removable on Pro), no custom domain yet.
Option 2, deploy on Vercel or Netlify
If the dashboard is part of a real project (recurring deliverable, custom domain, a backend you control), deploy it. Vercel, Netlify, and Cloudflare Pages all handle static dashboards with their free tiers and give you a real CDN, a custom domain, and full deployment control. Cost: Git workflow, project config, and you build per-recipient tracking yourself.
Option 3, Notion embed or Google Sites
Both Notion and Google Sites let you embed HTML, but with restrictions. Notion strips most scripts and limits iframe origins. Google Sites allows an iframe to an external page but adds its own chrome around it. For a dashboard that depends on JavaScript, these are usually the wrong answer. They can work as a wrapper that embeds an externally hosted dashboard (e.g. a LiveSend URL) inside a Notion page, but they are not the host themselves.
Option 4, send the .html file directly
When it works: the client is technical, the file is fully self-contained (no external CDN, no API calls), and they will open it in a browser by double-clicking. When it fails: the client uses Gmail (which blocks the attachment), uses Outlook with strict filters (same), the file references external assets, or the client tries to open it on a phone (where double-clicking an .html from email is awkward).
Pre-flight checks before you send
- Open the hosted URL in an incognito window. The dashboard should render with no errors and no auth prompts.
- If the dashboard hits an API, make sure that API is reachable from the open internet (or the client's network).
- Check on mobile if the client may open it on a phone. Most data tables and chart libraries need explicit responsive handling.
- If the data is confidential, set a password. If there is a deadline, set an expiration.
Picking the right option
One-off client delivery, single HTML file, want it tracked: LiveSend. Recurring dashboard tied to a real backend or custom domain: Vercel or Netlify. Wrapping the dashboard inside a wider page or documentation: embed an externally hosted URL into Notion or Google Sites, do not host it there.