Add tell.st to your website
Sign in and enter your domain in the dashboard. Choose a floating feedback button, a homepage badge, or a meta tag to verify ownership. These options can be combined.
<script defer src="https://tell.st/w.js" data-key="YOUR_WIDGET_KEY"></script>Your widget key is public. To manage feedback, verify your site and use your owner account or a private token with management permission.
Homepage badge
Place this badge in your homepage HTML, for example in the footer. It opens your feedback page and lets us verify ownership.
<a href="https://tell.st/YOUR_DOMAIN" data-tellst-key="YOUR_WIDGET_KEY" target="_blank" rel="noopener noreferrer"><img src="https://tell.st/api/badge/YOUR_DOMAIN?locale=en&style=pill" alt="Feedback · tell.st" height="30" /></a>Verification checks your homepage HTML. Adding a badge to a README or loading its image does not verify your website.
Verify with a meta tag instead
If you do not want to embed the widget, add the following tag to your homepage and verify your site from the dashboard.
<meta name="tell.st" content="YOUR_WIDGET_KEY" />Publish your chosen code in the root homepage HTML, then click Verify in the dashboard. Tags added only after JavaScript runs cannot be verified. Loading the widget or badge never claims a site automatically. Use the exact site address shown in the dashboard.
Complete your first feedback loop
- Open the feedback button and write your feedback. Marking a page element and adding an image are optional. Choose Public or Private before sending.
- If you posted anonymously, choose Get replies within 24 hours to verify your email, receive reply notifications, and keep access to private details across sessions.
- As the verified owner, reply in the dashboard and mark the feedback Completed when handled. Feedback emails and Webhooks are queued for processing every minute. Check delivery activity for provider acceptance and the reporter’s inbox for arrival.
- Check the flow on desktop and mobile. Keep synthetic checks separate from your first real visitor report, and remove test feedback when finished.
Read how public and private feedback, screenshots, backups and deletion requests are handled in our Privacy policy. For help with installation, email hello@tell.st. For privacy or data removal requests, email privacy@tell.st.
Customize the widget
Adjust its position, accent color, and button label to suit your site.
<script defer src="https://tell.st/w.js" data-key="YOUR_WIDGET_KEY"
data-variant="solid"
data-accent="#d63e2b"
data-position="bottom-right"
data-collapse="scroll"
data-delay="1000"
data-radius="pill"
data-label="Feedback"></script>- data-variant
- Visual surface style: solid (default brand fill), soft (warm light card with subtle border), dark (for dark-mode sites), outline (crisp bordered), or glass (frosted glass).
- data-accent
- A hex brand color (#rrggbb). Text contrast adjusts automatically on solid buttons.
- data-bg / data-color
- Optional exact hex background and text color overrides (#rrggbb) for the launcher button.
- data-position / data-offset
- Position: bottom-right (default), bottom-left, right-center, or left-center. Use data-offset (e.g. 72 or 24,72) to avoid sticky footers or corner buttons.
- data-collapse / data-collapse-offset
- Scroll behavior: scroll (default: shrinks to an icon when scrolling down and expands on scroll-up, top of page, or hover), edge (also tucks toward the screen edge), hide (hides while scrolling down), icon (always compact icon, expands on hover), or never. Set data-collapse-offset (default 64) for the scroll threshold in pixels.
- data-delay / data-trigger / data-entrance
- Appearance timing: data-delay sets the entrance delay in ms (default 1000; 0 for immediate). data-trigger accepts delay (default), scroll (wait until first scroll), or immediate. data-entrance accepts fade-up (default), scale, slide, or none.
- data-radius / data-size / data-shadow / data-icon
- Geometry & details: data-radius accepts pill (default), rounded (12px), sharp (4px), or a pixel value. data-size accepts sm, md (default), or lg. data-shadow accepts sm, md (default), lg, or none. data-icon accepts chat (default), sparkle, message, bulb, or none.
- data-mobile
- Mobile behavior: auto (default), icon (always compact icon on mobile viewports), or hidden.
- data-locale
- Use en (default) for English or zh for Simplified Chinese. Visitors can also change the language in the interaction space.
- data-label
- The text shown on the feedback button.
- Keyboard shortcut
- Press Alt + T to select an element.
If your site uses a Content Security Policy, allow https://tell.st in frame-src so the interaction space can open.
A conversation space for any website
Place tell.st/ before a domain or page address. No installation is needed to read or post feedback in its space.
https://tell.st/example.com
https://tell.st/example.com/pricingSubdomains share their main domain’s space, with filters for the host and page. Sites on shared hosting platforms, such as github.io and vercel.app, have separate spaces for each tenant.
Give your coding agent context
Add the tell.st server to your agent’s user-level MCP configuration once. When it needs account access, sign in on tell.st and approve the connection. You can reuse it across projects.
{
"mcpServers": {
"tell-st": {
"url": "https://tell.st/api/mcp"
}
}
}A connected agent can claim new spaces and manage feedback on sites you own. For scripts that need access to just one site, generate a separate site token in the dashboard.
- get_site_setup / verify_site_claim
- Get the installation code for the confirmed domain. After publication, verify the homepage and return the space link.
- list_site_pins
- Parse the returned text as JSON. The pins array holds this page of feedback. Pass nextCursor as cursor for the next page. Marked items can include a selector.
- get_pin_fix_prompt
- Get the feedback and available element, viewport, and diagnostic context.
- create_pin
- Create feedback and get its short ID, board URL and permanent link.
- resolve_pin / delete_pin
- A manage token can update or delete feedback. An update without a comment reports the number of queued emails. An update with a comment confirms the reply.
Work with your feedback
Public endpoints return public data. Include Authorization: Bearer YOUR_PRIVATE_API_TOKEN for authorized access to private reports and management actions.
Feedback lists return 25 items by default, up to 100 per request. Pass nextCursor as cursor to continue with the same filters. Exports return up to 100 items and provide the next page through the Link and X-Next-Cursor response headers.
/api/pins?domain=example.comSite information and feedback.
/api/pins/export?domain=example.com&format=mdExport Markdown, CSV, or JSON using the format parameter.
/api/pins/[shortId]Update feedback content, status, or visibility with permission.
/api/pins/[shortId]Remove feedback with permission.
/api/badge/[domain]An SVG badge for your website or README.
/api/og/pin/[shortId]A social preview image for a feedback link.