Sharing and embedding
Share a dashboard internally, by link, or embedded in your own product.
Four ways to share, in increasing order of exposure. Pick the least exposed one that works.
| Mode | Audience | Admin approval per person | Consumes a seat |
|---|---|---|---|
| Project members | Named members | On invite | Yes |
| Team | Anyone signed in | On invite | Yes |
| Link | People you approve, individually | Yes, on every first open | No |
| Embed | Your product’s users | No — your app vouches for them | No |
Share with members
The default. Add people to the project with a role; the dashboard follows — see Roles.
Link sharing
Share → Create link produces a URL for the dashboard. The link is an invitation, not access: the first time someone opens it, they are asked to identify themselves and their request goes to a team admin. Nothing renders until an admin approves that person.
You send the link
Anywhere you like — email, Slack, a message. The URL alone reveals nothing.
They open it and request access
They see the dashboard’s name and an access request form, not the data.
An admin approves or declines
The request appears in Needs attention and by email. Approving grants that individual access to that dashboard.
They see the dashboard
Subsequent visits go straight through, for that person only.
| Option | Effect |
|---|---|
| Expiry | 24 hours, 7 days, 30 days, or never |
| Lock filters | Viewers cannot change the filter state |
| Allow export | Permits CSV and image download |
| Auto-approve domain | Requests from a named email domain skip manual approval |
Forwarding does not grant access
If a recipient forwards the link, the next person gets their own approval prompt — they do not inherit the first person’s access. That is the point of per-person approval: the URL is not the credential.
Auto-approve is the one setting that removes the gate
An auto-approved domain means anyone with an address at that domain sees the dashboard without a human deciding. Use it for your own domain, never for a customer’s or a public mail provider.
Revoke an individual’s access from Share → Access, or invalidate the link entirely with Share → Reset link. Every approval, decline, and revocation is written to the audit trail.
Embedding
Embeds render a dashboard inside your own product, scoped per end user. Chartizer verifies a signed token, so your users never need Chartizer accounts.
Create an embed key
Settings → Embeds → New key. You get a key ID and a signing secret — the secret is shown once.
Sign a token on your server
Include the dashboard, the viewer’s identity, and any attributes your row-level rules need.
import jwt from "jsonwebtoken";
const token = jwt.sign(
{
dashboard: "weekly-dealers",
user: { id: "dealer-4471", email: "ana@dealer.example" },
attributes: { region: "EU", dealer_id: "4471" },
filters: { range: "last_90d" },
lock_filters: ["dealer_id"],
exp: Math.floor(Date.now() / 1000) + 600,
},
process.env.CHARTIZER_EMBED_SECRET,
{ keyid: process.env.CHARTIZER_EMBED_KEY_ID }
);
Render the iframe
<iframe
src="https://embed.chartizer.com/v1/dashboard?token=TOKEN"
width="100%"
height="720"
frameborder="0"
allow="clipboard-write"
></iframe>
Restrict the domains
List the origins allowed to frame your embeds. Requests from anywhere else are refused.
Sign on the server, always
The signing secret must never reach the browser. Anyone holding it can mint a token for any dashboard and any set of attributes — including another customer’s.
Keep token lifetimes short
Ten minutes is plenty. The iframe requests a fresh token on reload, and short expiry limits the damage of a leaked URL.
Scheduled delivery
Send a dashboard on a schedule instead of asking people to visit it.
| Channel | Format |
|---|---|
| PNG plus optional CSV attachment | |
| Slack | Image and link to a channel |
| Webhook | JSON payload of the underlying data |
{
"dashboard": "weekly-dealers",
"schedule": { "cron": "0 8 * * 1", "timezone": "Europe/Riga" },
"filters": { "range": "last_7d" },
"recipients": ["team@acme.example"],
"format": "png+csv"
}
Scheduled sends run as their creator
Recipients see what you can see, not what they can. Row-level rules do not apply to a broadcast email. For per-recipient scoping, use an embed.
Auditing
Share → Activity lists every link created, rotated, and opened, with timestamps and IP ranges. Embed token issuance is logged under the embed key. Both feed the team audit trail.