Ask your happy customers for a testimonial, and show the ones you approve

Send one link. Customers write a few lines and tick a box agreeing that you may publish them. You approve or hide each one, and a single script tag shows the approved ones on your site. It runs on your own server with the data in one file, so there are no tiers, no seat fees and no testimonial caps. Read the source or deploy it below.

The wall your visitors would see sample data

These three are invented to show the layout. Nobody said them. Your wall only ever contains what your customers submitted and you approved.

Why use this instead of what you do today

TodayCatchTestimonial Keeper
Testimonial.to, Senja, Shoutout and similarPaid tiers cap testimonials, forms or the widget; the data lives with themUnlimited, one JSON file you own, no fee
A Google Form and copy-pasteNo approval flow, no consent record, no widgetConsent stored per entry, approve/hide, embeddable wall, CSV export
Screenshots of emailsNo permission on record, awkward to updateCustomer-written words shown only after you approve

Honest limits: text only (no video), one admin key, no import from review sites, and it cannot prove a submitter is a real customer.

Run it yourself

git clone https://github.com/Duncan-Haywood/oss-monorepo && cd oss-monorepo/ventures/testimonial-keeper
ADMIN_KEY=$(openssl rand -hex 16) PUBLIC_URL=https://proof.example.com COMPANY_NAME=Acme node server.mjs

# share:   https://proof.example.com/t/default      (approve at /admin)
# embed:   <script src="https://proof.example.com/embed.js" data-form="default" defer></script>

One-click Render deploy and Docker are in the README.

Related tools

Grow with Cancel Flow to keep subscribers and Feedback Board to collect feature requests, and Review Reply Desk to answer the public reviews you get on Google.

Questions

Do customers have to agree before I publish?

Yes. The form has a required consent tick and the agreement is stored with each testimonial. Nothing is public until you approve it, and the text is never edited.

Where does the data live?

In one JSON file on the server you deploy in your own account. The author runs nothing in between and never sees your customers.

Can a testimonial hijack my page?

No. The embed renders inside a shadow root using textContent only, so a testimonial can never inject markup or restyle your page.

Does it support video?

Not yet. It is text and an optional 1-5 rating, which keeps it small enough to read in an evening.

Is it a review site?

No. It collects words from your own customers for your own site. Do not mark them up as independent third-party review ratings.