# Testimonials include full attribution

- **Pattern:** `ab-001749` (`marketing-conversion.trust-social-proof.verified-testimonials`)
- **Severity:** medium
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001749
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001749)

## Why it matters

A testimonial attributed to "— Mike" or "Happy Customer" reads as either lazy or fabricated, and visitors discount it accordingly. Full attribution — name, role, and company — converts a testimonial from ambient copy into verifiable social proof a visitor can actually go check, and the specificity itself signals that the customer was real enough to stand behind the quote publicly.

## Severity rationale

Medium because weak attribution reduces testimonial credibility without breaking the conversion path mechanically.

## Remediation

Update every testimonial entry to include the full name plus either role or company (ideally both). Refactor `components/testimonial-card.tsx` to accept structured attribution fields so weak placeholders are impossible:

```tsx
interface TestimonialProps {
  quote: string
  name: string      // "Jane Smith"
  role: string      // "Head of Marketing"
  company: string   // "Acme Corp"
  avatarUrl?: string
}
```

If real testimonials are still pending, use realistic placeholder attribution rather than first-name-only.

## Detection

- **ID:** `verified-testimonials`
- **Severity:** `medium`
- **What to look for:** Locate testimonial components or content in the codebase. For each testimonial block, check whether it includes: (1) The person's full name (first and last); (2) Their role or title; (3) Their company name. Also check whether a photo or avatar is included (not required, but a pass-plus signal). A testimonial with only a first name and "Happy customer" attribution is weak. A testimonial with "Jane Smith, Head of Marketing at Acme Corp" is strong.
- **Pass criteria:** Count all testimonials in the codebase and classify each by attribution level (name only, name+role, name+company, full). At least 50% of displayed testimonials include full attribution: a name AND either a role or a company (ideally both). Report the ratio: "X of Y testimonials have verified attribution."
- **Fail criteria:** No testimonials exist in the codebase, OR fewer than 50% of testimonials include a name and at least one of (role, company).
- **Skip (N/A) when:** No testimonial components or content found in the marketing pages.
- **Detail on fail:** Count and describe. Example: `"3 testimonials found. 0 include company attribution. Only first names used ('— Mike', '— Sarah')."` or `"Testimonial component renders attribution as 'Customer' for all entries — placeholder not replaced with real data."`.
- **Remediation:** Unattributed testimonials are barely better than no testimonials. The more specific the attribution, the more credible the testimonial. Update your testimonial content:

  ```tsx
  // components/testimonial-card.tsx
  interface TestimonialProps {
    quote: string
    name: string      // "Jane Smith"
    role: string      // "Head of Marketing"
    company: string   // "Acme Corp"
    avatarUrl?: string
  }
  ```

  If you're waiting on real testimonials, placeholder with realistic format (name, role, company) is better than lorem ipsum attribution.

Taxons: content-integrity

HTML version: https://auditbuffet.com/patterns/ab-001749
