You shipped the thing. Users love it. Three of them emailed you saying so. Now you need those words on your landing page — and you're about to spend the next two hours copy-pasting them into a div with rounded corners.
The pain is documented.
Search "how to collect testimonials" on r/SaaS and you'll find the same conversation every month: someone asks what tool to use, six people recommend Testimonial.to or Senja, and the founder replies "that's $30/mo for a form and a grid."1 The thread ends with someone building it themselves in an afternoon — badly — and rebuilding it three months later when the HTML spaghetti breaks.2
The problem isn't collecting testimonials. It's that every tool in the space is priced for Series A companies, not solo founders running a $2k MRR product who need five quotes on a landing page.3
The evidence of demand.
The market is segmented wrong. Enterprise tools (Trustpilot, G2) serve companies with thousands of reviews. Mid-market tools (Testimonial.to, Senja) serve funded startups. Nobody serves the founder who needs five testimonials, a clean embed, and a $0 price tag.7
The proposed product.
A single deployable app with three surfaces:
- Collect page — shareable link (
yoursite.com/t/submit). Client fills in name, role, company, text, optional photo. Takes 30 seconds. - Wall of Love — public page displaying approved testimonials in a masonry grid. Shareable, SEO-indexed.
- Embed widget — single
<script>tag that renders a testimonial carousel or grid on any website. No iframes, no layout shift.
Competitive landscape:
The build flow.
- Collect form — Next.js route with server action writing to a JSON file (or Vercel KV for production).
- Admin — protected page listing pending/approved testimonials. One-click approve, edit, delete.
- Wall page — masonry grid, server-rendered, responsive.
- Embed — bundled JS widget served from
/embed.js. Drop a script tag, it renders.
Reasons this might not work.
R-01 — JSON doesn't scale. Past ~200 testimonials, file I/O gets slow. Mitigation: the target user has 5–50 testimonials. At scale, swap to SQLite or KV — a 30-minute migration.
R-02 — Embed scripts feel invasive. Some founders won't add a third-party script. Mitigation: offer a static HTML export as an alternative. Copy-paste, no script needed.
R-03 — "Free" kills the upgrade path. If the free tier does everything, nobody pays $9. Mitigation: free tier caps at 10 testimonials and includes a small "Powered by" badge. $9/mo removes the badge, adds unlimited testimonials, custom colors, and import from Twitter/Product Hunt.
- [1]r/SaaS + r/indiehackers — 'How to collect testimonials' — recurring thread, 340+ instances in 18mo2024–2026↗
- [2]Indie Hackers forum — 'I built my own testimonial wall and regret it' — 3 threads with 50+ replies each2025-03↗
- [3]Twitter/X indie maker threads — Recurring complaints about Testimonial.to pricing for small projects2025–2026↗
- [4]ahrefs keyword data — 'testimonial widget' + 'collect testimonials' + 'wall of love' combined 18.1k/mo2026-04↗
- [5]Shoutout pricing page — Cheapest dedicated testimonial tool at $19/moaccessed 2026-05-01↗
- [6]GitHub topic search — 'testimonial' — 2,400+ repos, mostly React components, not full products2026-04↗
- [7]Testimonial.to pricing — $50/mo starter tier, $150/mo for white-labelaccessed 2026-05-01↗
- [8]Senja pricing — $29/mo starter, $79/mo growthaccessed 2026-05-01↗
- [9]Product Hunt — 7 testimonial tools launched in 2025, average 200 upvotes, all $20+/mo2025↗
- [10]G2 reviews — Testimonial.to: 4.7/5, top complaint 'too expensive for what it does'scraped 2026-04↗
- [11]Hacker News — 'Show HN: I built a free testimonial wall' — 3 launches, none maintained past 6 months2024–2025↗
- [12]r/webdev — 'Best way to embed testimonials?' — monthly recurring question2024–2026↗