Everything you need to collect testimonials, manage them, and embed social proof on any website. Set up in under 2 minutes.
Add a testimonial widget to any website with a single script tag. No build step, no dependencies, no configuration.
<div id="testimonialflow-widget"></div>
<script
src="https://testimonialflow-kappa.vercel.app/api/widget/YOUR_PROJECT_SLUG"
async
></script>Replace YOUR_PROJECT_SLUG with your project slug from the dashboard.
Share a collection link with your customers. They fill out a simple form with their name, role, testimonial text, and star rating.
https://testimonialflow-kappa.vercel.app/collect/YOUR_PROJECT_SLUGEach submission is saved and appears in your dashboard for review. Approve the ones you want to display publicly.
Tip: Include this link in your post-purchase emails, thank-you pages, or customer success follow-ups for the highest response rates. Need help crafting the ask? Try our email generator tool.
The widget renders approved testimonials as a responsive card grid. It works on any website — static HTML, WordPress, Shopify, Webflow, Squarespace, or any framework.
<!-- Add to any page, post, or widget area -->
<div id="testimonialflow-widget"></div>
<script src="https://testimonialflow-kappa.vercel.app/api/widget/YOUR_SLUG" async></script>Paste the same snippet into a Custom Code / Embed block.
All endpoints return JSON. No API key required for public endpoints. CORS is enabled for all origins.
/api/testimonials?slug=YOUR_SLUGFetch all approved testimonials for a project.
[
{
"id": "abc123",
"name": "Sarah Chen",
"role": "Founder, PixelCraft",
"text": "TestimonialFlow boosted our conversions by 23%.",
"rating": 5,
"approved": 1,
"created_at": "2026-04-01T10:00:00Z"
}
]/api/testimonialsSubmit a new testimonial.
{
"slug": "YOUR_SLUG",
"name": "Customer Name",
"role": "CEO, Acme Inc",
"text": "This product changed everything for us.",
"rating": 5
}/api/widget/YOUR_SLUGReturns a JavaScript snippet that renders a testimonial widget. Used via <script> tag.
These require authentication via the dashboard session cookie.
/api/projectsCreate a new project. Returns the project with its unique slug.
{
"name": "My SaaS Product"
}/api/testimonials/[id]Approve or reject a testimonial.
{ "approved": 1 } // or { "approved": 0 }/api/testimonials/[id]Permanently delete a testimonial.
Every project gets a public Wall of Love page — a beautiful, shareable testimonial showcase with SEO metadata and aggregate ratings.
https://testimonialflow-kappa.vercel.app/wall/YOUR_SLUGShare it on social media, include it in proposals, or link to it from your website. Each Wall of Love page includes JSON-LD structured data for rich search results.
See it in action: Live demo Wall of Love
Fetch testimonials from the API and render them with your own components for full styling control.
async function Testimonials({ slug }: { slug: string }) {
const res = await fetch(
"https://testimonialflow-kappa.vercel.app/api/testimonials?slug=" + slug
);
const testimonials = await res.json();
return (
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
{testimonials.map((t) => (
<div key={t.id} className="border rounded-lg p-4">
<div className="flex gap-0.5 mb-2">
{Array.from({ length: t.rating }).map((_, i) => (
<span key={i}>⭐</span>
))}
</div>
<p className="text-gray-700">{t.text}</p>
<p className="mt-2 font-semibold">{t.name}</p>
<p className="text-sm text-gray-500">{t.role}</p>
</div>
))}
</div>
);
}$0/mo
$9/mo
Sign up free. No credit card required. Set up in 2 minutes.
Get Started Free