Skip to content
  1. Extras
  2. PageBuilder
  3. Section catalog
  4. Free
  5. Testimonials

Testimonials

Social proof: client quote, name, role, and avatar. Multiple testimonials render in a grid.

What testimonials add

  • Quote, name, and photo in one card
  • Multiple reviews without a custom snippet
  • Pairs well with stats and CTA blocks

Typical placement

  • Homepage: trust block after product copy
  • Landing page: reviews before the lead form
  • About page

Page examples

Fields in the inspector

Testimonials repeater: Quote, Name, Role, Photo. Photo is optional but helps trust.

Similar sections

  • Logos for “trusted by” without quotes
  • Team for staff bios, not client quotes

Block parameters

ParameterValue
keytestimonials
LayerFree
Categorysocial proof (social)
Chunkpagebuilder_testimonials
Requires

Inspector fields

Fill these fields in the section inspector. Field types are documented in the field types reference.

Title (title)

Type text. Optional.

Testimonials (items)

Type repeater. Required. Repeatable rows. "Add" button in the inspector.

Each row:

FieldTypeLabelRequired
quotetextareaQuoteyes
nametextNameyes
roletextRoleno
avatarimageAvatarno

Site output

pb-testimonials grid: blockquote, author line, avatar partial.

Section data

Example payload after save. Media, video, and map values may be enriched on output:

json
{
  "title": "Section title",
  "items": [
    {
      "_rowId": "00000000-0000-4000-8000-000000000001",
      "quote": "Great service, I recommend it to colleagues.",
      "name": "Jane Doe",
      "role": "Director, Example LLC",
      "avatar": {
        "url": "assets/images/example.jpg",
        "id": 12,
        "filename": "example.jpg",
        "extension": "jpg",
        "title": "example.jpg",
        "width": 1920,
        "height": 1080,
        "type": "image"
      }
    }
  ]
}

Chunk template

Fenom chunk pagebuilder_testimonials:

fenom
<section class="pb-section pb-section--testimonials pb-testimonials{if $cssClass} {$cssClass|escape}{/if}" data-pb-section="testimonials"{if $id} id="pb-{$id|escape}"{/if}>
  <div class="pb-section__inner pb-testimonials__inner">
    {if $title}
      <h2 class="pb-heading pb-testimonials__title">{$title|escape}</h2>
    {/if}
    <div class="pb-testimonials__grid">
      {foreach $items as $item}
        <blockquote class="pb-testimonials__item">
          {if $item.avatar}
            {include 'pagebuilder_partial_image' image=$item.avatar alt=$item.name class='pb-testimonials__avatar'}
          {/if}
          <p class="pb-testimonials__quote">{$item.quote|escape}</p>
          <footer class="pb-testimonials__footer">
            <div class="pb-testimonials__author">{$item.name|escape}</div>
            {if $item.role}
              <div class="pb-testimonials__role">{$item.role|escape}</div>
            {/if}
          </footer>
        </blockquote>
      {/foreach}
    </div>
  </div>
</section>

JSON definition

core/components/pagebuilder/sections/testimonials.json

See also