Any published site can save and read its own data with no server to run and no keys to manage. Use it for contact forms, waitlists, RSVPs, guestbooks, scoreboards, and more. Collecting data is available on Premium and Team.
You usually do not build any of this by hand. In the site's Data settings, pick a recipe (contact form, waitlist, RSVP, guestbook, shared counter, clock-in, or leaderboard). Thryvate sets up the data and hands you a snippet to drop into your page. Your AI assistant can do the same and even add it to the page for you.
Every published page has a small built-in helper called window.THRYVATE. If you are building the page yourself (or asking an assistant to), this is all it takes to save and read data. Data is grouped into named collections, and each saved item is a record.
// Save a record to a collection. The collection is created on the first save.
await window.THRYVATE.append('signups', { email: 'jane@acme.com' })
// Read records back, newest first.
const { records } = await window.THRYVATE.query('signups', { order: 'desc', limit: 50 })You can also filter, sort, and page through records, and fold a collection down to the latest entry per person, which is handy for things like an RSVP list that people can update.
For a leaderboard, guestbook, or comments, you often want to show who wrote each entry. Ask Thryvate who is viewing, and save that into the record yourself. On a private site this is the viewer's verified email; on a public site there is no identity, so entries stay anonymous.
// Show who did something: read the viewer, then store it in the record.
const me = await window.THRYVATE.viewer()
const entry = { score: 4200 }
if (me.kind === 'viewer' && me.id) entry.who = me.id
await window.THRYVATE.append('leaderboard', entry)Each collection has a setting for who can read it:
The site's own privacy still applies on top: on a private site, only people who passed the access gate can add or read entries. You can also pause a collection at any time to stop new entries.
Thryvate can learn the shape of your data from the entries that come in, and you can fine-tune it in the Data tab. If you want, you can require every entry to match a set of rules, so bad or incomplete submissions are rejected automatically.
Treat anything a visitor submits as untrusted. When you display stored values on a page, set them as plain text rather than raw HTML, so a value can never run as code. The ready-made recipes already do this for you.
This is meant for small, structured data and events, not large files: think form entries and scores, not video. Premium and Team include generous storage, and you get a heads-up before you reach a limit, so nothing is ever dropped silently.