Does anyone open a testimonials page?
Think about who reaches it. To land on a testimonials page, a visitor has to pick that item from your menu, so they already wanted reassurance enough to go looking for it. Everyone else came to find out what you do, what it costs and how to book, and they meet your customers' words only if those words are on the way.
So put the quotes where those visitors already are. A separate page is still worth having as the full list, the place your section and your rating badge link to. It just should not be the only place your customers' words appear.
Where should the testimonial section go?
Right before the moment of decision, which on a service site is the contact or booking form. We read the home pages of the 27 website templates we publish on 6 November 2026. Twelve of them have a testimonials section, and in 11 of those 12 it sits two sections above the last section of the page, which holds the form. In the twelfth, Goldleaf, the quotes share that last section with the form. In 8 of the 12, a section about prices or fees comes earlier on the page.
The order is the same story each time. First what you do, then how it works and what it costs, then other customers saying it went well, then the answers to the last few questions, then the form. A visitor who has just read the price and is wondering whether you are worth it reads the quotes at the right moment.
On a product page the logic is the same, but the decision point is the buy button, so reviews of that product go near it. Our guide on showing reviews on your homepage covers the home page of a shop.
How many testimonials should the section show?
Between three and six. Our 12 templates show between 1 and 6 quotes each, 5 in the middle of the range, and none shows more than 6 on the home page.
Pick the number with the layout in mind. In our test, Formgong's grid fitted 3 cards per row in a 960-pixel column, so 3 or 6 fill whole rows. On a 375-pixel phone it showed one card per row, and five short reviews made a block 1,044 pixels tall, more than a whole phone screen. If most of your visitors are on phones, three is often enough on the home page, with a link to the rest.
What goes on each testimonial card?
The quote, the name and one short line that places the person: the service they had, their town, their company. Stars if you collect them, and the date. A photo helps only if it is the customer's own and they agreed to it. A stock photo beside a real quote suggests the person in it said those words.
Keep the quote short on the card. If a customer wrote a long paragraph, the sentence with the specific detail is the one to show, with the full text one click away. Our testimonial examples show what a strong quote has in it, and testimonial questions help you get those quotes in the first place.
What should the full testimonials page have?
The full page is for the visitor who wants more proof, so give them enough to check and a way to find people like themselves.
- One line at the top saying what the page is: “What customers said after a repair, newest first”. No paragraph about how much you value feedback.
- Groups or a filter by service, product or type of customer once you have more than a dozen, so a landlord can find other landlords. Formgong's widget can filter the list by an answer to a customer question, such as the service someone had.
- Every quote dated, newest first, with the lukewarm ones left in. A page of nothing but five stars makes a careful reader wonder which ones you removed.
- A mix of formats if you have them: mostly short quotes, a few videos, one longer story about a single customer.
- One button after the strongest quotes that leads to your form or booking page, so a convinced visitor does not have to find the menu again.
- Real text, not pictures of text. Screen readers and search engines can read words on the page; a screenshot of a review they can't.
Keep the design quiet. The quote should be the largest text on each card, the name and second line smaller, with enough space between cards that each one reads as a separate person. If you are a US clinic or dentist, get each patient's written authorization before their words go on any page; our article on testimonial questions explains why.
What does a testimonial section look like on a phone?
Longer than you expect. We built a plain test page with Formgong's widget in a grid, a carousel and a rating badge, fed by the 5 approved reviews of our demo shop Glyna, and measured it in Chromium at desktop width and at 375 by 812 pixels.
| Check | Desktop | Phone |
|---|---|---|
| Cards per row | 3, each 312 px wide | 1, 343 px wide |
| Height of the grid with 5 reviews | 608 px | 1,044 px |
| Space above the first quote (average, rating bars, sort menu) | 249 px | 295 px |
| Carousel with the same 5 reviews | 524 px tall, 3 cards in view | 558 px tall, 1 card in view and 67 px of the next |
| Rating badge | 35 px | 35 px |
| Sideways scrolling of the page | none | none, the page stayed 375 px wide |
The number to notice is the 295 pixels on the phone. With five or more approved reviews, the widget puts the average, five rating bars and a sort menu above the first quote. On a reviews page that is what people want: they can see the spread and jump to the three-star reviews. On a home page, a third of the phone screen goes to the summary before anyone reads a word a customer wrote.
Two layouts get around it. A rating badge, 35 pixels tall, linking to your full reviews page takes almost no room. A carousel keeps the section to one row of cards, though the summary still sits above it and the phone shows one card at a time; our article on the review carousel covers when that works and when people skip it.
If a carousel moves by itself, give people a way to stop it. The W3C's accessibility guidelines, WCAG 2.2 success criterion 2.2.2, which we read on 7 November 2026, say that moving content that starts on its own, lasts more than five seconds and sits next to other content needs a way to pause, stop or hide it. Formgong's carousel does not move unless you add data-autoplay; with it, there is a Pause button, the row stops while the pointer or keyboard focus is on it, and it stays still for visitors who have asked their device for reduced motion.
Will a testimonials page show stars in Google?
Usually not, if the reviews are about your own business. Google's review snippet documentation, last updated 8 September 2026 and read on 7 November, says that when the business being reviewed controls the reviews about itself, its pages that use LocalBusiness or Organization structured data are not eligible for review stars, whether the reviews are in the page's own markup or come through an embedded widget. That rule names local businesses and organizations; reviews of a product you sell, marked up as a Product on its own page, are not covered by it.
The page still has search value as ordinary text. Customers describe your service in the words other people search with, such as the town, the problem and the type of job, so keep the quotes as text on the page and give the page a plain title such as “Customer reviews of Smith Plumbing”.
How do you know if the section works?
Count enquiries, not time on page. Note the date you add or move the section, then compare form submissions in the four weeks before and the four weeks after, at the same time of year if you can. A small business rarely has the traffic for a proper A/B test, so a before-and-after count is the realistic check, and one change at a time is what makes it mean anything.
Will a testimonial widget slow the page down?
Check the weight before you add one. On 6 November 2026, Formgong's widget script was 88,954 bytes, sent compressed as about 27,000, and kept by the browser for an hour; the review data for our five test reviews was 1,087 bytes. The script loads with defer, so it runs only after the browser has read the rest of the page's HTML. It also draws inside its own shadow root, which keeps your site's CSS from breaking the cards while still using your font and text colour.
Whatever tool you use, open your browser's developer tools, go to the Network tab, reload the page and filter by the widget's domain. You will see how many files it fetches and how big they are.
Building the section with Formgong
Paste one div and one script tag where the section should go; the testimonial widget page has the code. Set data-limit to the number of quotes you want, add data-layout="carousel" for one row, or use the rating badge with data-href pointing at your full reviews page. Until a review is approved the widget shows nothing, or only a Write a review link if you turned that on, so an empty section never fills with placeholders.
The widget has no setting to hide the average and rating bars. If you want quotes only, the same reviews are in a public JSON file you can draw yourself, as explained in our guide to adding reviews to a website.
Where do your testimonials sit?
If you have moved your testimonials around and seen a difference in enquiries, we would like to know where they ended up. Write to support@formgong.com.
Frequently asked questions
Do I need a separate testimonials page?
It helps as the full list, but only visitors who go looking will find it. Put three to six quotes in a section on the pages where people decide, and link that section to the full page.
Where should testimonials go on a website?
Just above the contact or booking form, after the section about what you do and what it costs. On a shop, near the buy button of the product they are about.
How many testimonials should I show?
Three to six in a section. On phones, where each quote takes a full row, three is often enough, with a link to the rest.
Will testimonials on my site show stars in Google?
Not for reviews of your own business. Google's guidelines make pages with LocalBusiness or Organization markup ineligible for stars when the business controls its own reviews, even through a widget.
Should testimonials be in a carousel or a grid?
A grid shows every quote without clicks. A carousel saves height, but on a phone only one card is fully in view at a time, so many visitors will see just the first.
Sources and documentation
Official references for this guide: Formgong: testimonial widget. Reviews widget, where data is stored.
Related guides
- Lovable form submissions to email and Telegram
- HTML contact form without a backend: a working example
- How to send website form submissions to Telegram
- Contact form not sending email? Check where it stops
- Managing website leads in Telegram without a CRM
- Form backend for Lovable, Bolt, v0, Cursor
- Telegram bot for a contact form: build or skip?
- GDPR form backend: 7 checks before you choose
- Lovable form not sending email? 6 fixes
- Netlify Forms not working? React and Bolt fixes
- Stop contact form spam without a CAPTCHA
- GitHub Pages contact form: a working setup
- Mailto Form in HTML: Why It Fails and What to Use
- HTML form to Google Sheets: 2 free methods
- Webflow form submission limit: what to do at 50
- Turnstile vs reCAPTCHA vs hCaptcha for forms
- Contact Form 7 and Elementor forms to Telegram
- Squarespace contact form not sending email?
- Shopify contact form: where do messages go?
- Google Form to Telegram: free Apps Script way
- Wix contact form not sending email? Fixes
- EU / GDPR Formspree alternatives compared
- HTML form action attribute explained
- How do HTML forms work? The HTTP request
- Types of Injection Attacks on Web Forms (2026)
- Indirect Prompt Injection in MCP
- MCP Rug Pull Attack: Detect Tool Changes
- Form without a backend: 7 ways that work
- Thank-you page after form submission (HTML)
- Indirect Prompt Injection Examples (2023–2026)
- Indirect Prompt Injection via Email
- What Is Tool Poisoning in MCP?
- WordPress contact form without a plugin
- Send email from frontend JavaScript
- How to Prevent Indirect Prompt Injection
- Honeypot Form Field: How to Add One That Works
- Contact Form with File Upload (HTML, No PHP)
- Angular contact form without a backend
- Send form submissions to Slack or Discord without Zapier
- Verify a form webhook signature (HMAC-SHA256)
- Contact forms that send nothing: 793 AI-built sites tested
- v0 contact form that actually sends: 3 ways
- How we tested AI-built contact forms, and 12 bugs we hit
- Cloudflare vs Netlify free plan: hosting that never pauses
- EmailJS 412 “Gmail_API: Invalid grant”: reconnect Gmail
- Resend “You can only send testing emails”: verify a domain
- Supabase Edge Function blocked by CORS policy: 3 causes
- Formspree “Form not found” and other errors: fixes
- Web3Forms errors: “Invalid access key” and 403 explained
- How to add customer reviews to your website for free
- Getform not working? “This form has been deleted” and more
- Next.js contact form not working? 6 errors, reproduced
- Webflow form not sending email? What to check, tested
- FormSubmit not working? “This form needs Activation” fix
- Contact form “TypeError: Failed to fetch”: causes and fixes
- WooCommerce product enquiry form
- Contact Form 7 vs WPForms
- Gravity Forms alternative free
- WordPress contact form block
- 535-5.7.8 Username and Password not accepted (Gmail)
- 535 5.7.3 Authentication unsuccessful: Office 365 SMTP
- Nodemailer “Missing credentials for "PLAIN"”: the fix
- Nodemailer “Greeting never received”: port 465 fix
- Nodemailer SSL “wrong version number”: the port fix
- Nodemailer “self-signed certificate in certificate chain”
- Nodemailer ECONNREFUSED 127.0.0.1:587: missing SMTP host
- SendGrid “authorization grant is invalid”: 401 fix
- Mailgun 401 Forbidden: why the API rejects your key
- “Edge Function returned a non-2xx status code”: the fix
- Next.js “Body exceeded 1 MB limit”: Server Action fix
- Unexpected token '<', "<!DOCTYPE "... is not valid JSON
- “TypeError: Body is unusable”: body has already been read
- Turnstile “timeout-or-duplicate” and other siteverify errors
- Turnstile vs hCaptcha vs reCAPTCHA: speed and size tested
- Judge.me reviews not showing on Shopify: how to fix it
- Judge.me review carousel not showing: how to fix it
- Yotpo reviews not showing on Shopify? Check the app embed
- Loox reviews not showing on product page: how to fix
- Shopify reviews not showing: what to check first
- How to show reviews on Shopify
- GDPR for website forms: what each type of form needs
- WooCommerce reviews not showing: how to fix it
- Stamped.io reviews not showing on Shopify: how to fix it
- Etsy reviews not showing: why and what to do
- Trustpilot widget not loading: how to fix TrustBox
- Yotpo problems in 2026: what merchants report
- Contact Form 7 “error trying to send your message” fix
- Elementor form “Your submission failed because of an error”
- Framer form not sending email or not working: what to check
- Carrd contact form not working: plans, spam and errors
- Google review link not working: what customers see and why
- tawk.to widget not showing on your website: causes and fixes
- How to add questions and answers to your product page
- “Failed to send a request to the Edge Function”: fixes
- Next.js “Failed to find Server Action”: what it means
- Brevo “unauthorized: Key not found” 401: the fix
- Amazon SES “Email address is not verified”: the fix
- Shopify contact form not working: how to fix it
- Judge.me alternative for WooCommerce after the 2025 shutdown
- Free WooCommerce review plugins compared on the free version
- WooCommerce review reminder emails without a paid plugin
- Add Voice Recording to a Website Form
- Contact Form 7 spam: how to stop it
- WPForms not sending email: how to fix it
- Contact form emails going to spam: how to fix it
- HTML form not submitting: how to fix it
- Contact form not working: how to find the fault
- Webflow form spam: how to stop it
- Website form to Notion: how to set it up
- Website form to WhatsApp: what works and what does not
- What 1-star reviews say about AI support chatbots
- Which free form backend gives you the most submissions?
- Elfsight reviews widget not showing? Check the view limit
- Next.js contact form backend vs Server Actions
- Review stars not showing in Google search results
- How to stop duplicate form submissions
- How to see which form leads came from ChatGPT
- What happens when a form webhook fails
- When to send a review request email after an order
- How to collect video testimonials for free
- Add contact form sign-ups to Mailchimp or Klaviyo
- How to migrate from Formspree without losing submissions
- How to get a Google review link for your business
- What is a headless form backend?
- Is it safe to put a form access key in your HTML?
- AI chatbot that answers only from your website
- Minified React error #441 in Next.js
- Squarespace product reviews after Judge.me
- Accessible contact form checklist for WCAG 2.2
- How to ask a client for a testimonial by email
- How to respond to negative reviews, with examples
- 429 Too Many Requests on a contact form
- MCP server for forms in Cursor and Claude
- Can you offer a discount for a review?
- Do EU stores have to say if reviews are verified?
- Webflow form backend options compared
- How to add review schema JSON-LD to a product page
- How to turn a customer review into an Instagram post
- How to make a QR code for Google reviews
- Live chat or chatbot for a small business website
- Why people abandon your contact form halfway
- Which form backend do AI assistants pick? 54 answers
- PHP mail() not sending email, even when it returns true
- What “Failed to fetch” means, tested in three browsers
- 405 Method Not Allowed when you submit a form
- Send a contact form to more than one email address
- What is review syndication, and who needs it?
- How to save HTML form data to a database
- NetworkError when attempting to fetch resource
- Send product reviews to Google Merchant Center
- PHPMailer not working on a live server
- AI review reply generator: does it help?
- React 19 contact form with useActionState
- Astro Actions or a form backend?
- Is no-reply@wixsiteautomations.com legit?
- Where to find the Judge.me review widget code
- AI review summaries: what shoppers actually see
- Photo reviews for WooCommerce, and the GPS inside them
- Review request email templates you can copy
- Reviews in AI search: what ChatGPT and Perplexity cite
- Lead capture form with UTM tracking, built and tested
- Form design best practices, with our own form data
- Client intake form template with file upload
- What is social proof? Meaning and examples
- What is user-generated content (UGC)?
- Benefits of negative reviews for your store
- How to get your first reviews as a new store
- How to use customer reviews in your marketing
- How to get more customer reviews
- React form validation without a library, tested
- jQuery submit form with validation
- reCAPTCHA v3 setup with the server score check
- Shopify social proof that shoppers can check
- HTML file input: accept, multiple, capture and size checks
- How to add hCaptcha to a form, with the server check
- How to add invisible reCAPTCHA to a form
- Bug report form template with browser details
- What the FTC fake reviews rule bans for online stores
- How to show reviews on your homepage
- Do reviews increase sales? What the studies show
- HTML input types and what each one sends
- HTML textarea, tested in a real form
- HTML dropdown menu in a form, tested
- Do reviews help SEO? What Google says and shows
- How to add a review carousel people can read
- Product review examples that help shoppers decide
- Which trust badges actually mean something
- Customer satisfaction survey with CSAT and NPS
- JavaScript FormData and what fetch actually sends
- JavaScript form validation without a library
- Server-side form validation and what it catches
- Email validation in JavaScript, tested on 33 addresses
- Zod form validation with FormData, tested
- Store reviews vs product reviews
- How to send review requests through Klaviyo
- How to tag customer reviews by topic and mood
- Custom review form questions worth asking
- Online reputation management for small businesses
- HTML radio button groups and what they send
- HTML label tag and what screen readers hear
- HTML autocomplete attribute, tested with Chrome autofill
- HTML fieldset and legend, and what disabled leaves out
- HTML button tag and what a form button sends
- Vite contact form that still works after the build
- How to test a contact form, end to end
- How to embed a Google Form, and what it loads
- Customer feedback questions that get real answers
- How to convert a file to base64 in JavaScript
- FilePond with a form backend, and when to skip it
- Bootstrap form validation and server errors
- Tailwind form validation, tested in three browsers
- Donation form in HTML, and where the payment goes
- How to ask for a review in person or by text
- Which review sites matter for your business
- What are customer reviews, and which kinds count
- Online review statistics, checked at the source
- Best review app for Shopify and WooCommerce
- Why Gmail sends your self-hosted mail to spam
- htmx contact form that sends to another domain
- AI form builders tested, from prompt to sent form
- Headless WordPress forms with Contact Form 7, tested
- React Hook Form watch vs useWatch, and what gets sent
- Elfsight widget not working? It vanishes when views run out
- Jotform not sending emails? Check Jotform's bounce list
- Typeform not working? A white box means a blocked script
- Positive review response examples that don't sound copied
- How to remove a Google review when you can't delete it
- Google reviews not showing up? 8 causes to check in order
- Is buying Google reviews illegal? Even a review swap counts
- Which reviews can you hide? A review moderation checklist
- Average star rating: what 4.8 from 5 reviews means
- Reviews on a product page: where and how many to show
- SaaS testimonials: 3 of 27 had a number in them
- Do reviews reduce returns? Not when they're too good
- Testimonial examples for business: what makes one believable
- Testimonial questions to ask clients, by type of business
- Testimonial advertising rules: what the FTC requires
- Form submission canceled because the form is not connected
- Input type date format dd/mm/yyyy: what you can change
- How to disable textarea resize, or allow only vertical
- How to prevent Enter from submitting a form
- form.submit() vs requestSubmit(): what submit() skips
- Custom HTML checkbox CSS that doesn't break required
- How to reset a form after submit, and what reset() keeps
- Input type number maxlength not working? What to use
- How to create an HTML form, step by step
- Best form builder: free plans and branding, checked
- Best WordPress contact form plugin: 10 free ones compared
- How to increase form conversion rate: start with the count
- Form backend vs form builder: which one do you need?
- WordPress contact form not sending email? 3 plugins tested
- Contact Form 7 webhook? Turning it on switched our email off
- Gravity Forms webhook: what it sends and the URLs it rejects