← All integrations

Framework integration

How to Add Testimonials to React

Any React app — Vite, CRA, Remix — can display Testivo testimonials either via the embed script or by fetching the JSON API and rendering your own components. Fetching the API keeps you in full control of markup and styling while still shipping AI-readable Review schema.

1. Collect your testimonials in Testivo

Before you embed, gather some proof. Share your Testivo collection link and customers leave a text, video, or audio testimonial in about 90 seconds — no account needed on their end. Approve the ones you like, then theme your wall (grid, masonry, carousel, or popup) and copy the embed.

2. Embed the wall on React

  1. Quick way: render the placeholder <div className="testivo-wall" data-slug="your-slug" /> and inject the embed script once (e.g. in a useEffect or your index.html).
  2. Custom way: fetch GET /api/embed/wall/your-slug in a useEffect (or your data layer) and map the JSON into your own card components.
  3. Add a Review JSON-LD <script> to the document head (via react-helmet or your meta layer) so search engines and AI bots read the ratings.

This is the snippet you'll paste:

<script src="https://testivo.tech/embed/wall.js" data-slug="your-slug" async></script>
<div class="testivo-wall" data-slug="your-slug"></div>
Tip for React: If your React app is client-rendered (SPA), crawlers may not run your JS — add the JSON-LD to the static index.html, or render testimonials server-side (Next.js/Remix) so the content is in the initial HTML. Testivo's hosted wall is always server-rendered as a fallback.

3. Bonus: your testimonials are AI-readable

Most React testimonial widgets render inside an iframe that Google and AI assistants can't read. Testivo's wall renders same-origin and ships Schema.org Review markup automatically — free, on every plan — so when a buyer asks ChatGPT, Perplexity, or Google's AI “is {your product} any good?”, your real customer proof is what they read. Here's the JSON-LD it generates for you:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Your Product",
  "review": [{
    "@type": "Review",
    "author": { "@type": "Person", "name": "Jane Doe" },
    "reviewRating": { "@type": "Rating", "ratingValue": 5, "bestRating": 5 },
    "reviewBody": "Testivo made collecting testimonials effortless."
  }],
  "aggregateRating": {
    "@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": 27, "bestRating": 5
  }
}

Testivo also publishes an llms.txt feed of your testimonials and allows AI crawlers (GPTBot, ClaudeBot, PerplexityBot) by default. No paid tier, no copy-paste schema snippet.

Frequently asked questions

How do I add Testivo testimonials to a Vite/CRA React app?

Render the .testivo-wall placeholder div and load the embed script, or fetch /api/embed/wall/:slug and render your own components. Both work; the API gives you full control of the markup.

Will testimonials in a client-rendered React SPA be seen by Google?

Client-only SPAs can be hard for crawlers. Put the Review JSON-LD in your static HTML, or render server-side, so the testimonials and ratings are visible without executing JavaScript.

Can I style the testimonials to match my React design system?

Yes — fetch the JSON API and render the testimonials with your own components and classes, so they inherit your design system exactly.

Add AI-readable testimonials to React — free

Collect your first testimonial in minutes. No credit card, schema included on every plan.

More integration guides