Your landing page probably has a testimonials section. The question is whether any of it is real.
If you built your first SaaS with Lovable, Bolt, v0, Cursor or Claude Code and asked for "a complete landing page", the AI may have filled that section with friendly quotes from people who do not exist. Something like "This changed how our team works!" - Sarah K., Product Lead (a made-up example, which is exactly the point). It looks finished, so it ships.
That is a problem. Visitors have seen those quotes a hundred times and skip them, and made-up customer quotes on your own site are not a gray area in places like the US and UK. This guide shows you how to replace placeholder proof with real testimonials from your first users, in 7 steps, with templates you can copy.
Quick note: this is practical advice, not legal advice. The rules below come from official FTC, UK legislation, Trustpilot, Product Hunt and Google pages. If you sell elsewhere, check local rules too.
First, two words you will see a lot
- Testimonial: a quote you put in your own marketing (landing page, pricing page, ads, emails). The US FTC describes it as an advertising message that people are likely to believe reflects the real opinion or experience of someone who used the product.
- Review: something a user posts on a platform built for reviews, like Trustpilot, Product Hunt or an app store.
The difference matters. The FTC says a business that puts testimonials on its own website is "disseminating" them, not just hosting them, so if they are fake or false, the business can be liable.
Step 1: Delete every fake or placeholder quote today
Before you collect anything, clean up what is already there. Search your project for typical placeholder content:
grep -rniE "testimonial|lorem|john doe|jane doe|trusted by|loved by|happy customers|rating" \
--include=*.tsx --include=*.jsx --include=*.ts --include=*.html --include=*.vue \
--exclude-dir=node_modules --exclude-dir=.next --exclude-dir=dist .
Then ask your AI tool to do a proper sweep, because invented proof also hides in hero text ("Join 10,000+ founders") and logo strips:
Audit this project for invented social proof. Find every testimonial, customer
quote, reviewer name, avatar, star rating, company logo strip, and user or
customer count ("10,000+ users", "trusted by teams at...").
For each one, list the file and line, and tell me whether it looks like
placeholder content. Do not invent replacements. Remove the placeholder items
and leave a single TODO comment where the testimonials section was. If a
number or logo might be real, ask me instead of deleting it.
Zero testimonials is fine for now. An honest "Free while in beta, built by one developer" beats a page full of Sarahs.
Why this is step one: the FTC's Consumer Reviews and Testimonials Rule (in effect since October 21, 2024) bans fake or false consumer testimonials and lets courts impose civil penalties for knowing violations. In the UK, the Digital Markets, Competition and Consumers Act 2024 made submitting or commissioning fake reviews a banned practice from 6 April 2025, and its definition of "writing" includes "creating by any means". AI-generated quotes are still invented quotes.
Step 2: Find the people who have actually had a win
You do not need paying customers to get your first testimonials. You need people who used your product and got something out of it. Good sources:
- Beta testers and early free users
- People you helped one-on-one over email, chat or a call
- Users who did your product's main action several times (they keep coming back for a reason)
If your app runs on Supabase or Postgres, a query like this finds your most active recent users. It is a hypothetical example, so rename the tables and columns to match your app:
-- Hypothetical example: "reports" is whatever your main action creates
select p.email,
count(*) as actions_last_30_days,
max(r.created_at) as last_active
from reports r
join profiles p on p.id = r.user_id
where r.created_at > now() - interval '30 days'
group by p.email
having count(*) >= 3
order by actions_last_30_days desc
limit 20;
What about friends and family? You can include them, but the relationship has to be clear. The FTC's Endorsement Guides say an ad with a relative or employee as the endorser is misleading unless that connection is made clear. So "My brother, who runs a bakery, uses it for invoices" is fine. Presenting your brother as a random customer is not.
Step 3: Save the nice things people already said
The easiest source of testimonials is your inbox. Support replies, DMs, comments and call notes often already contain the sentence you need, like "oh wow, that took 2 minutes instead of an hour".
Start a simple "proof log" and paste every piece of positive (and negative) feedback into it with the date and where it came from. It can be a spreadsheet or a JSON file in your repo:
[
{
"id": "t-001",
"name": "Priya",
"role": "Freelance designer",
"quote": "I sent my first invoice in under five minutes.",
"source": "support email",
"said_on": "2026-10-12",
"permission": "pending",
"show_name": true,
"show_photo": false,
"show_company_logo": false,
"incentive": "none",
"relationship": "none"
}
]
(Priya is a made-up example to show the format.)
Capturing feedback people gave on their own has a bonus. The FTC's FAQ notes that if you tell people in advance their comments might be featured in your ads, that chance of being featured can itself count as a benefit worth disclosing (for example, "Customers were told in advance they might be featured"). Unprompted feedback first, permission second, is the cleanest path.
Step 4: Ask at the right moment, in one short message
Ask right after a specific win: their first export works, a support issue gets solved, they come back for the third time this week. Keep the ask tiny. People ignore requests that feel like homework.
Template A: they already said something nice
Subject: Can I quote you?
Hi [first name],
Thanks again for your note on [date]. You wrote:
"[their exact words]"
Would you be OK with me putting that on the [product] website with your
first name and role ("[role]")? Happy to change the wording or leave your
name off. A simple yes or no is perfect.
[your name]
Template B: they are active but have not said anything yet
Subject: 3 quick questions about [product]
Hi [first name],
You've been using [product] for a few weeks, so I'd love your honest take.
Reply with a sentence for each, good or bad:
1. What were you doing before [product]?
2. What changed after you started using it?
3. What almost stopped you from trying it?
Thanks, this really helps me improve it.
[your name]
Template B does not mention quoting, so the feedback stays unprompted. If an answer is quotable, follow up with Template A. It also asks for criticism, on purpose. The FTC's FAQ says only asking customers you expect to be happy can be misleading if it substantially skews the picture. Trustpilot is stricter: invite everyone "consistently and fairly", at the same point in the journey, whether their experience was good or bad. On your own landing page you choose which quotes to show, but do not present a best-case result as normal (see Step 5).
Step 5: Edit lightly and get a clear yes in writing
You can fix typos and trim a long message down to its strongest sentence. You cannot change what it means. Send the final version back to the person and get approval before it goes live.
Rules of thumb:
- Keep their meaning. The FTC says a business shouldn't write the text of a testimonial unless it has a reasonable basis to believe the text truthfully reflects that person's experience. Drafting from their own words and asking for approval is the safe version of this.
- Ask separately for name, photo and company logo. A happy user does not mean their employer agreed to appear on your site.
- Be careful with big numbers. If a quote says "this saved me 10 hours a week", the FTC says readers will usually assume that is a typical result. "Results may vary" does not change that. Either have proof that most users get similar results, or clearly state what users generally get. With five users, the simpler move is to prefer quotes about the experience ("I sent my first invoice in five minutes") over quotes that promise outcomes.
-
Record the yes. Update your proof log:
"permission": "yes - email 2026-10-14".
Step 6: Know the incentive and review-site rules
Thinking of offering a free month for a testimonial? Here is what the official sources say:
| Where | Can you offer an incentive? | Key rule |
|---|---|---|
| US (FTC) | Yes, if not tied to a positive opinion | Disclose it clearly. Paying for 5-star reviews is banned even with a disclosure. |
| UK (DMCC Act) | Only if made obvious | Commissioning a review that hides that it was incentivised is a banned practice. |
| Trustpilot | No | No discounts, promo codes, prize draws or freebies for reviews. No selective invites. |
| Product Hunt | No | No asking for or incentivizing upvotes, no mass messaging. |
For a first SaaS, the simplest policy is: no incentives at all. Just ask honestly and say thank you. If you do offer something, say so right next to the quote, for example "Got 1 free month for sharing feedback". The FTC says a disclosure behind a link or hover is avoidable, which means it is not clear enough.
Step 7: Show them well and keep them fresh
Display tips:
- Put proof next to decisions. Under the signup button, on the pricing page, next to the feature the quote talks about.
- Show specifics. First name, role, date and the concrete thing they did. "I sent my first invoice in five minutes" beats "Amazing product!!!"
- Real screenshots work. A public post or email (with permission, private details blurred) feels more real than a styled quote card.
- Do not add star-rating markup to hand-picked quotes. Google's review snippet guidelines say rating markup is for an aggregate evaluation by many people that users can see on the page, that you should not aggregate reviews from other websites, and that fake or undisclosed incentivized reviews are not allowed. A handful of quotes you picked is not that, so skip the schema.
When you are ready to build the section, give your AI tool strict instructions so it cannot slip invented quotes back in:
Build a testimonials section that reads ONLY from data/testimonials.json.
Show an item only if "permission" starts with "yes". Show the name only if
show_name is true, and the photo only if show_photo is true. If "incentive"
is not "none", show it as visible text under the quote (not a tooltip).
If "relationship" is not "none", show that too. If there are fewer than 2
approved items, hide the whole section. Never add placeholder or example
testimonials, names, avatars, logos, star ratings or user counts.
Then refresh your proof log every month or two. The FTC notes that if your product has changed, it's best to get new endorsements, and a quote that implies someone still uses your product is only fine while you have good reason to believe they do.
Common mistakes to avoid
- Shipping placeholder quotes "for now". Now becomes forever.
- Inviting only your happiest users to review sites. Trustpilot forbids it.
- Polishing a quote into marketing copy. It stops sounding like a person, and may stop being what they said.
- Using a company logo because one employee likes you. Get separate permission.
- Hiding the disclosure. Small grey text behind a link does not count.
- Waiting for big review sites first. Start with quotes on your own site from people you have talked to.
Action summary
Do these in order this week:
- [ ] Run the grep and the AI audit prompt, then remove every placeholder quote, logo and fake count
- [ ] List 10 to 20 people who had a real win (beta users, people you helped, your most active users)
- [ ] Start a proof log and paste in every piece of feedback you already have
- [ ] Send Template A to anyone who already said something nice
- [ ] Send Template B to active users at their next win
- [ ] Get a written yes, and record name, photo and logo permission separately
- [ ] Decide your incentive policy (simplest: none) and write it down
- [ ] Rebuild the testimonials section from the JSON file using the strict prompt
- [ ] Put a monthly reminder in your calendar to refresh old quotes
Three real sentences from three real users will do more for your signup page than a wall of invented praise. Ask at the right moment and keep it honest.
Top comments (0)