Widget
One script tag, two IDs, a signed user token. Star ratings, threaded reviews, reactions. Vanilla DOM, grayscale chrome that disappears into your product.
Star ratings, threaded reviews, reactions, and moderation — embedded in your product with two IDs and a signed JWT. Ship today. revws handles persistence, auth federation, and rendering.
Quickstart
Every product gets a public id (pub_…) and a signing secret (sk_…) in the dashboard. The secret stays on your server; rotate it any time.
Your users, your identity — revws never owns accounts.
# Your backend mints a short-lived JWT per signed-in user.
import jwt, time
token = jwt.encode(
{
"iss": "pub_...", # your product id
"sub": user.id, # YOUR user id
"name": user.display_name,
"exp": int(time.time()) + 600,
},
PRODUCT_SIGNING_SECRET, # sk_... from the dashboard
algorithm="HS256",
)The widget mounts, fetches the thread, and renders. Theme with one CSS variable.
<script src="https://cdn.revws.io/v1/widget.js"
data-product="pub_..."
data-page="<your page id>"
data-user-token="<signed JWT>"></script>
<div id="revws"></div>What we do
One script tag, two IDs, a signed user token. Star ratings, threaded reviews, reactions. Vanilla DOM, grayscale chrome that disappears into your product.
GET /v1/threads, POST /v1/reviews, POST /v1/reactions. For server-side rendering, custom UIs, mobile clients, and exports.
review.created, review.deleted — signed payloads so your policy engine can act on every event. Not live yet; moderation runs in the dashboard today.
< 30 KB
widget budget, gzipped
< 150 ms
p95 render target
0
revws accounts for your users
Pricing
Enterprise — contract pricing, per-workspace limits, priority support. Talk to us.
FAQ
Ready when you are
Private beta — keys granted within a day.