> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hiveku.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Add Customer Reviews & Testimonials

> Display social proof on your site with testimonials, star ratings, and case studies

Social proof is one of the highest-leverage conversion lifts available — studies consistently show sites with visible testimonials convert around 34% higher than those without. This guide covers three ways to add them.

<CardGroup cols={3}>
  <Card title="Easiest" icon="wand-magic-sparkles">
    Ask the AI assistant
  </Card>

  <Card title="Visual" icon="pencil">
    Drag a prebuilt section
  </Card>

  <Card title="Dynamic" icon="database">
    Pull from a database table
  </Card>
</CardGroup>

## Option 1: Ask the AI Assistant

<Steps>
  <Step title="Open the AI chat">
    Click the **AI** tab in your project.
  </Step>

  <Step title="Describe what you want">
    ```
    Add a testimonials section to my homepage with 3 customer quotes, 
    each with a name, company, and photo.
    ```

    Or paste real testimonials you already have.
  </Step>

  <Step title="Review and refine">
    The AI adds the section. Ask for tweaks — carousel vs grid, styling, layout.
  </Step>

  <Step title="Deploy">
    Click **Deploy**.
  </Step>
</Steps>

## Option 2: Use a Pre-Built Section

<Steps>
  <Step title="Open the visual editor">
    Click **Edit** on the page where you want testimonials.
  </Step>

  <Step title="Open the Sections panel">
    In the left sidebar, click **Sections**. Scroll to **Testimonials / Social Proof**.
  </Step>

  <Step title="Drag and drop">
    Drop the section where you want it. Most high-converting spots: above the fold, right before the CTA, on the pricing page.
  </Step>

  <Step title="Configure">
    Click the section to open the inspector. Replace the placeholder quotes with real ones. Upload customer photos.
  </Step>

  <Step title="Save and deploy">
    Click **Save**, then **Deploy**.
  </Step>
</Steps>

## Option 3: Dynamic from Database

If you have many testimonials or want customers to submit them, store testimonials in a table and render them dynamically.

<Steps>
  <Step title="Create the table">
    In **Database > Tables**, create `testimonials`:

    ```sql theme={null}
    CREATE TABLE testimonials (
      id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
      customer_name text NOT NULL,
      customer_company text,
      customer_role text,
      customer_photo_url text,
      rating integer CHECK (rating BETWEEN 1 AND 5),
      quote text NOT NULL,
      video_url text,
      featured boolean DEFAULT false,
      status text DEFAULT 'pending',
      created_at timestamptz DEFAULT now()
    );
    ```
  </Step>

  <Step title="Seed with real quotes">
    Add rows for every testimonial you already have. Set `status = 'approved'` and `featured = true` for your best ones.
  </Step>

  <Step title="Build the render component">
    Query approved testimonials:

    ```sql theme={null}
    SELECT * FROM testimonials 
    WHERE status = 'approved' 
    ORDER BY featured DESC, created_at DESC 
    LIMIT 6
    ```

    Render as a carousel or grid.
  </Step>

  <Step title="Deploy">
    Click **Deploy**. New testimonials added to the table appear on next page load.
  </Step>
</Steps>

## Testimonial Types

<Tabs>
  <Tab title="Quote cards">
    Short customer quote + name + photo + company. The most common and versatile format. Works well in grids of 3-6.
  </Tab>

  <Tab title="Star ratings">
    4.8 stars with a short quote. Great for product pages and above the fold. Pairs well with aggregated review counts ("4.8/5 from 342 reviews").
  </Tab>

  <Tab title="Video testimonials">
    Embedded video clips. Highest trust, lowest production rate — a single 30-second video often outperforms ten written quotes. Use Loom, YouTube, or Vimeo embeds.
  </Tab>

  <Tab title="Case studies">
    Longer-form success stories with specific metrics. Live on their own page. Link to them from testimonial sections. Best for enterprise B2B.
  </Tab>
</Tabs>

## Display Patterns

* **Carousel** — rotating, saves space, good when you have 5+ and want them all visible
* **Grid** — all visible at once, strong "social proof stacking" effect
* **Featured section** — hand-pick your best 3-5, give them prime real estate
* **Sprinkled** — one testimonial per section throughout the page, quotes reinforcing the claim right above them

## Collecting New Testimonials

Pair this page with automation that asks customers for reviews after purchase. See [Workflow: Auto-Request Reviews](/how-tos/workflow-request-reviews).

Flow:

1. Customer buys → workflow delays 3 days → asks for a review
2. Customer submits on `/reviews/new` → writes to `testimonials` table with `status = 'pending'`
3. You review pending testimonials in admin → mark `status = 'approved'` on the good ones
4. Approved testimonials render on the site

## Import from Google / Trustpilot

If you already have reviews elsewhere, pull them in:

* **Google Business Profile** — reviews API returns your recent reviews with star rating
* **Trustpilot** — public API, free tier covers low volume
* **Yelp** — Fusion API
* **Amazon** — Seller Central has review exports

Write a daily workflow that syncs new reviews into your `testimonials` table.

<Tip>
  Include specific numbers or outcomes in quotes ("saved me 10 hours a week", "2x our conversion rate"). Vague praise like "great product!" converts far worse than concrete, quantified claims. When collecting new testimonials, ask customers for specifics.
</Tip>

## Featured vs Recent

Two common display strategies:

* **Featured** — you pick the best, they stay put. More work to curate, better quality control.
* **Recent** — latest approved reviews show first. Less curation, always fresh, risk of a weaker review leading.

Hybrid: `ORDER BY featured DESC, created_at DESC`. Featured ones lead, recent ones fill in after.

## Verify It Worked

1. Add 3 test testimonials (or approve real ones)
2. Visit the live site and confirm they render
3. Test on mobile — long quotes often break layout there first
4. Click through any linked case studies to confirm URLs work

## Troubleshooting

<AccordionGroup>
  <Accordion title="Photos aren't loading">
    Check the image URLs. If you uploaded photos, confirm they're in project assets and the URL is the public CDN path, not a local path. Try opening the image URL directly in a new tab — if it 404s, the upload didn't land correctly.
  </Accordion>

  <Accordion title="Carousel isn't auto-advancing">
    Open the section's settings in the visual editor. There's usually an "auto-advance" toggle and a delay setting (default 5s). If it's enabled but still not moving, there may be a JS error — check browser console.
  </Accordion>

  <Accordion title="Draft or unapproved reviews showing live">
    Your query isn't filtering on status. Add the filter:

    ```sql theme={null}
    WHERE status = 'approved'
    ```

    And verify the render component uses that query.
  </Accordion>

  <Accordion title="Long quotes break the layout">
    Add a CSS `max-height` with overflow hidden and a "Read more" expand toggle. Alternatively, set a character limit in the form that collects testimonials (200-300 chars is plenty).
  </Accordion>

  <Accordion title="Google Review sync stopped working">
    The Google Business Profile API token expired, or the account lost access. Go to **Settings > Integrations > Google Business Profile** and reconnect. See [Connect GBP](/how-tos/connect-gbp).
  </Accordion>
</AccordionGroup>

## What's Next?

<CardGroup cols={2}>
  <Card title="Request Reviews" icon="star" href="/how-tos/workflow-request-reviews">
    Automate asking for reviews after purchase
  </Card>

  <Card title="Connect Google Business Profile" icon="google" href="/how-tos/connect-gbp">
    Sync your Google reviews into your site
  </Card>
</CardGroup>
