Who viewed my Claude artifact?
If you shared it with claude.ai's Publish button, you can't find out — the share link reports nothing back to you. No view count, no notification, no names; Anthropic's own artifacts documentation confirms that public artifact links carry no viewer identity and no gating for external readers. To learn who read something you sent, identity has to attach to the view before the page renders, which means hosting the HTML behind a gate — a guest list, or an email prompt on an open link — and reading per-reader analytics on the other side. Your reader never needs an account for any of it. This guide walks through how, including the cases where a free anonymous host is honestly all you need.
Why doesn't Claude tell me who opened my link?
Because for the AI labs, sharing ends at the URL. Publish, copy the link, done — there is no view count, no notification, and no record of who opened it. The link works. The silence afterward is yours to interpret.
The frustration isn't niche:
I just want to be able to create a React artifact prototype on claude.ai, then share it privately with a stakeholder (internal or external.)… Why is this shared artifact building not yet doable? This seems "so simple."
That's a Hacker News user asking for exactly the private stakeholder share the native button doesn't do. If the artifact is a demo for yourself, none of this matters. If it's a client report, a proposal, or an investor update, the native link sends it into a void.
Is a free HTML host enough?
Often, yes — and you should know that before reading further. GitHub Pages, Netlify, or an S3 bucket will put a self-contained HTML file at a URL for nothing. If you would never act differently based on who read it, use one of those and be done.
What free hosts won't do — often on principle, not as a missing feature — is tell you who. The ones that offer analytics at all count anonymous visitors by design: totals, uniques, maybe a country, never a name. Viewers are counted, not profiled. That's a coherent, privacy-first stance for general-purpose hosting. It also means the question this page answers is one they have deliberately chosen not to.
Who can tell me names today?
Data-room vendors, if you buy the room. Named-viewer tracking — every open tied to a person — has long existed inside virtual data rooms, priced and shaped for fundraises and M&A: dozens of documents, a deal team, permission tiers, NDAs. If that's the process you're running, that shape fits.
Between "nothing," "counted, not profiled," and "enterprise data room" sits the case that actually generates this search: one operator, one link that mattered, one recipient gone quiet. A consultant's findings deck. A founder's monthly update. A seller's pricing one-pager. You don't need a data room; you need to know whether the decision-maker opened the thing and got past page one. That middle is what Send Artifact is built for.
How do you attach a name to a view?
Identity enters at the door or not at all — nothing recovers it after an anonymous view. Send Artifact publishes your artifact to a stable URL (sendartifact.com/{handle}/{slug}) and puts one of three gates on it. Readers never create an account in any of them.
| Gate | Reader experience | What you learn |
|---|---|---|
| Guest list — emails or whole domains | One-time code, once per browser, good for 30 days | Verified identity; nobody off the list can open it |
| Verified email on an open link | Enter an email, confirm a one-time code, then it renders | A proven address for every reader |
| Email capture on an open link | Type an email; the page opens immediately | A self-reported address — useful, but treat it as a claim |
The guest list takes individual addresses or a whole domain: grant client.com and anyone at the client can open the link, nobody else can. The two email gates apply to open links when you want reach and names; capture is the lighter ask, verification is for when the answer has to be trustworthy. Access levels run private → guest list → anyone with the link → public, and you can move an artifact between them without the URL changing. An open link with no gate behaves like the free hosts: honest counts, no names.
What do per-reader analytics actually show?
Per artifact, you get views by day and by version, distinct viewer counts, and a row per reader where identity is known: the email — flagged as verified or self-reported, so you always know which kind of answer you're holding — plus active read time and max scroll depth. Active read time is time the page was actually in front of them, not time a background tab sat open. A median read time across all readers tells you whether the piece held anyone at all.
Two things keep the numbers honest. First, a view only counts when the page rendered in a browser — the fetches that Slack, Outlook, and iMessage make to build link previews are filtered out, and the count of ignored fetches is reported so you can see the filtering happen. Second, your own views are tagged with your role and excluded from the outside-reader totals, so rehearsing your own walkthrough five times doesn't flatter the chart.
Reading the rows is the point. Nine minutes at 100% the night before your renewal call means they came prepared — open with page six, not a recap. Twenty-two seconds at 12% is also an answer: the intro didn't earn the scroll, and "just checking in" won't fix that, but a sharper intro might. And because everything splits by version, when you republish after a meeting you can see whether anyone actually came back for the revision.
What happens after you know?
Readers can respond in place, too: anyone who can view the artifact can leave a comment pinned to the passage it's about, again with no account. Comments sit with you until you read them. When you decide the artifact should change, you point your agent at the feedback — the CLI's comments and resolve commands carry it both ways, so the agent can pull each thread, make the edits you asked for, republish to the same URL, and reply to the commenter with what changed. A comment never changes anything by itself; whether and when to act is always your call. Comments are on by default — for collateral where readers are an audience rather than reviewers, turn them off.
How do I set this up?
- Get the HTML out. Download the artifact from claude.ai, or if your agent built it, the files are already on disk. Artifacts are self-contained static files, 25 MB max.
- Publish. Every publish is private by default — it opens for nobody until you widen access:
ARTIFACT_API_KEY=… npx @sendartifact/cli publish ./report --slug q3-pricing-review
- Gate it. Invite the client's domain, or open the link with an email gate:
npx @sendartifact/cli access q3-pricing-review --visibility guests --grant client.com
# or: anyone with the link, but a verified email before it renders
npx @sendartifact/cli access q3-pricing-review --visibility link --require-email verified
- Send the link, then watch the manage page — or ask your agent for the analytics.
If you work in Claude Code or another coding agent, it can bootstrap itself from sendartifact.com/skill.md and run the whole loop through the CLI — npx @sendartifact/cli login to sign in, then publish, access, analytics, and comments as the work moves. If you'd rather not touch a terminal, there's a web drop-zone. Republishing the same slug updates the same URL in place — every version is retained, with rollback — so the link you sent last month always shows the current version, and the analytics tell you who came back for it.
What if I already sent an ungated link?
You can't recover identity retroactively — views that happened anonymously stay anonymous, on any platform. But you don't have to re-send anything: access is a property of the artifact, not the URL, so you can add a gate to the link that's already sitting in their inbox. From then on, new views arrive with names, and because analytics split by day and by version, you can see exactly where the before ends and the after begins.
The one order to avoid is the reverse: publishing open "for now" with a plan to tighten later leaves the artifact exposed in between. If it's sensitive, gate it before the first send — which is why publishes start private by default.
When don't you need any of this?
When silence is cheap. A teammate who'll reply in Slack either way, a portfolio piece where reach matters more than names, a throwaway demo — put those on a free host and move on. An email gate costs your reader one small step at the door, and that step is only worth charging when the answer matters to you.
The rule of thumb: gate the link when you'd change your next move based on who read it and how far they got. For everything else, a URL is enough, and URLs are free.
Questions: support@sendartifact.com.
Published 2026-08-27 · markdown twin at /guides/know-who-read-it.md · questions: support@sendartifact.com.