Updated June 10, 2026
Can a Drafty canvas show live data?
Quick answer
Yes — a Drafty canvas can show live data. Claude writes a script that pulls data from your source — BigQuery, a database, an API — and renders it into the canvas as HTML; a scheduled refresh re-runs it to keep the link current. The data is baked in at render time (a snapshot), so the numbers load instantly and no credentials ever live in the shared canvas. It's safe to hand the link to anyone.
Yes. A Drafty canvas is just an HTML page on a link, so it can show anything you can render — including data pulled from BigQuery, a database, or an API. Claude writes a script that fetches the data and renders it into the canvas, and a scheduled refresh keeps the link current.
Snapshot, not live-on-every-load
The data is baked in at render time — a snapshot — and refreshed on a schedule, rather than queried fresh on every page load. That's a deliberate choice, and it's the right one for a shared dashboard:
- It loads instantly. The numbers are already in the page; there's no query to wait on.
- It's cheap. The query runs once per refresh, not once per viewer.
- It's safe to share. Your data credentials never reach the browser — only the rendered result does. You can hand the link to anyone without giving them access to your data source.
For a dashboard you glance at through the day, "current within the last few minutes" is exactly what you want.
How the data gets in
The flow is the same one the CLI uses, with a data step on the front:
- Pull — Claude writes the query or API call against your source.
- Render — the result is turned into a self-contained HTML canvas (numbers, tables, charts).
- Push — the canvas is published to a link, exactly like any other canvas.
Because the credentials live with the script — not in the canvas — connecting a private source like a warehouse is just a matter of giving the script read-only access to it.
Keeping it current
A one-time render gives you a dashboard that's accurate as of now. To keep it that way, schedule the refresh so it re-runs on a timer. See how to keep a canvas updated automatically — it runs as a local cron with no Claude in the loop, so it's free even at a tight cadence.
For the full pattern, read How to make a Drafty canvas live.
Frequently asked
- Is the data live on every page load, or a snapshot?
- A snapshot, refreshed on a schedule — the numbers are baked into the canvas each time the refresh runs. That's deliberate: it loads instantly, the query runs once per refresh instead of once per viewer, and your data credentials never reach the browser. For most dashboards "current within the last few minutes" is exactly right.
- Where does the data come from?
- Anywhere your refresh script can reach — a BigQuery dataset, a Postgres database, a REST API, a CSV. Claude writes the query or fetch and the layout; the script renders the result into the canvas.
- Are my database credentials safe?
- Yes. The query runs wherever the refresh script runs (your machine, or a server), using credentials that stay there. Only the rendered result — the numbers and the chart — is pushed to the canvas. Nothing sensitive is ever embedded in the shared link.
- How do I keep it current?
- Schedule the refresh script with a local cron so it re-runs on a timer. See keeping a canvas updated automatically for the setup — it runs with no Claude in the loop, so it's free.
Related
- How do I keep a Drafty canvas updated automatically?Turn a canvas into a self-updating dashboard: Claude writes a refresh script once, and a local cron re-runs it on a schedule — with no Claude in the loop, so it's free.
- Push and pull Drafty canvases from the CLI and Claude CodeUse the Drafty CLI to push a file to a canvas and pull comments back, so Claude and your reviewers stay on the same page.
- What is Drafty?Drafty turns the HTML and Markdown files Claude and ChatGPT generate into a link anyone can open and comment on.
- GuideHow to make a Drafty canvas liveClaude writes the report once. A plain cron keeps it current, readers act on it with a click — and no model runs in either loop.