Why testimonials belong above the fold
Social proof is one of the highest-leverage things you can add to a SaaS landing page. Visitors who see real customer quotes convert at significantly higher rates than those who don't — particularly when the testimonial appears near your primary CTA rather than buried in the footer.
The problem is that most testimonial tools make embedding feel like a project. You sign up, navigate an unfamiliar dashboard, copy a block of script tags, paste them somewhere, and then wonder why the widget looks broken. It doesn't have to be that way.
The 2-line embed
With Tarvio, adding a testimonial widget to any page takes exactly two lines: a plain <div> with a data-tarvio attribute to mark where the widget should appear, and a <script> tag to load the runtime.
<div data-tarvio="YOUR_WORKSPACE_SLUG"></div>
<script src="https://www.tarvio.io/widget.js" defer></script>
That's it. No React dependency. No build step. No iframe. The widget scans the DOM for any element with a data-tarvio attribute and initialises itself — it works in any environment that renders HTML.
Your workspace slug is the short identifier in your collection link. Copy both lines directly from your Tarvio dashboard under the Embed tab — the slug is already filled in for you.
Next.js — paste into any component
Next.js is the most common framework for SaaS landing pages, so here's the exact pattern. Load the script once in your root layout, then drop the <div data-tarvio> wherever you want the widget to appear:
// app/layout.tsx — load the runtime once
<script src="https://www.tarvio.io/widget.js" defer />
// app/page.tsx — place the widget wherever you need it
export default function LandingPage() {
return (
<section>
<h2>What our customers say</h2>
<div data-tarvio="your-workspace-slug" />
</section>
)
}
Because it's a plain div, there are no TypeScript complaints and no special JSX configuration needed. The defer attribute on the script tag means it loads after the page HTML is parsed, so the widget initialises without blocking render.
The script also uses a MutationObserver to watch for elements added after the initial page load, so it works correctly with client-side navigation in Next.js App Router without any extra wiring.
Webflow — add a custom code block
In Webflow, open the page you want to edit, then add an Embed element (found in the Add panel under Components). Paste both lines into the code block and click Save & Close:
<div data-tarvio="YOUR_WORKSPACE_SLUG"></div>
<script src="https://www.tarvio.io/widget.js" defer></script>
If you plan to embed on multiple pages, add the <script> tag once in your site-wide Custom Code (Site Settings → Custom Code → Footer Code) and only place the <div data-tarvio> element on each individual page.
Framer — use the Embed component
Framer's native Embed component accepts raw HTML. Select the frame where you want the widget, insert an Embed component, and paste in the same two lines. The MutationObserver in the widget script handles Framer's dynamic rendering without any extra configuration.
For a reusable pattern, create a Framer component that wraps the embed — that way you can drop it onto any page in your project without re-pasting.
Where to place your testimonial widget for maximum conversion
Placement matters as much as content. A few patterns that consistently perform well on SaaS landing pages:
- Just below the hero CTA — visitors who are on the fence about clicking your CTA see real names and faces validating the decision.
- Adjacent to the pricing section — social proof at the moment of price-resistance reduces friction.
- Above the footer CTA — if you have a repeated CTA at the bottom of the page, a testimonial block directly above it gives the final nudge.
Avoid putting testimonials only in the footer. Most visitors never scroll that far, and those who do are already committed or already gone.
Collecting testimonials is just as easy
Embedding is only half the story. Tarvio gives you a public collection link you can send to customers — they submit text or video directly in the browser, no account needed. You approve them in the dashboard, and they appear in your widget automatically.
The free tier includes up to 15 approved testimonials and a fully functional embed. No credit card, no time limit. If you want unlimited testimonials, all widget layouts, branding removal, CSV bulk import, or priority support, the Pro plan is $12/mo.