Clerk knows who your users are. Sutrena knows what they submit.
Updated March 2026
Clerk handles signup, login, MFA, user profiles, and sessions. Free up to 50,000 monthly active users. It has embeddable UI components for React and Next.js, plus a backend API. The thing is, auth is the part you do not want to build yourself. Clerk takes it off your plate.
Pass Clerk's user_id as a hidden field in your Sutrena form. Now every submission is linked to a specific user. You get per-user tracking, uniqueBy dedup on user_id, and filtered queries.
This works for feature voting, feedback, surveys -- anything where you need to know who submitted what. Clerk handles auth. Sutrena handles data. Your app just connects the two.
"use client";
import { useUser } from "@clerk/nextjs";
import { useState } from "react";
export default function FeatureRequest() {
const { user } = useUser();
const [status, setStatus] = useState<"idle" | "sending" | "sent">("idle");
async function handleSubmit(e: React.FormEvent<HTMLFormElement>) {
e.preventDefault();
setStatus("sending");
const formData = Object.fromEntries(new FormData(e.currentTarget));
const res = await fetch(
"https://sutrena.com/api/forms/frm_your_id/submit",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
...formData,
user_id: user?.id,
user_email: user?.primaryEmailAddress?.emailAddress,
}),
}
);
setStatus(res.ok ? "sent" : "idle");
}
if (!user) return <p>Please sign in to submit a feature request.</p>;
if (status === "sent") return <p>Thanks! Your request has been recorded.</p>;
return (
<form onSubmit={handleSubmit}>
<label htmlFor="title">Feature title</label>
<input id="title" name="title" required />
<label htmlFor="category">Category</label>
<select id="category" name="category" required>
<option value="">Select</option>
<option value="Integration">Integration</option>
<option value="UI/UX">UI/UX</option>
<option value="Performance">Performance</option>
<option value="New Feature">New Feature</option>
</select>
<label htmlFor="description">Description</label>
<textarea id="description" name="description" rows={4} required />
<button type="submit" disabled={status === "sending"}>
{status === "sending" ? "Submitting..." : "Submit Request"}
</button>
</form>
);
}
// Sutrena form fields (created via API):
// { "name": "title", "type": "text", "required": true }
// { "name": "category", "type": "select", "options": ["Integration", "UI/UX", "Performance", "New Feature"], "required": true }
// { "name": "description", "type": "textarea", "required": true }
// { "name": "user_id", "type": "hidden" }
// { "name": "user_email", "type": "hidden" }
//
// Set uniqueBy: "user_id" to allow one vote per user per form,
// or omit it to allow multiple submissions per user.Clerk: free up to 50,000 MAU. Sutrena Free: $0/month for 10 projects. Sutrena Builder: $9/month for 50 projects and 5,000 submissions per form. Sutrena Pro: $29/month for 200 projects and unlimited submissions. Total: $0/month for a free setup with user tracking. Most indie projects stay on Clerk's free tier and only pay for Sutrena when they outgrow the free plan.
Pass Clerk's user_id as a hidden field. It shows up in the dashboard, API responses, and CSV exports. You can filter by user_id in data tables.
Yes. Set uniqueBy to user_id. Same user submits again, Sutrena returns 409. Good for one-vote-per-user or single-response surveys.
The embed renders in an iframe, so it cannot access Clerk's session. For authenticated submissions, build a custom form that reads the Clerk user and POSTs to Sutrena directly, like the example above.
Create a bar_chart or pie_chart grouped by user_email. Or use a data_table with the user_email column.
Sutrena is the web runtime for AI agents. Three primitives — pages, forms, and dashboards — accessible through one API. Your agent creates web artifacts, humans interact with them, and your agent gets the data back. Framework-agnostic. Works from any MCP client or HTTP client.
1. Get a trial key (no auth, no signup)
curl -X POST https://sutrena.com/api/trial2. Create a form + dashboard from a template
curl -X POST https://sutrena.com/api/forms \
-H "Authorization: Bearer st_trial_xxx" \
-H "Content-Type: application/json" \
-d '{"templateId": "waitlist", "createDashboard": true}'Get a trial API key instantly with no signup, or create an account for the full experience.