# Post-purchase review prompt appears within expected timeframe

- **Pattern:** `ab-001200` (`ecommerce-reviews.review-collection.post-purchase-prompt`)
- **Severity:** high
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001200
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001200)

## Why it matters

Review volume collapses without a post-purchase prompt because shoppers rarely return unprompted to write reviews, even when delighted. Relying on organic submissions means weeks of sales generate zero new reviews, aggregate ratings stagnate, and new products launch with empty review sections that suppress conversion. The 1-7 day window matters because sentiment fades fast; by week two, recall of product specifics drops and response rates crater.

## Severity rationale

High because missing prompts directly throttle review volume, which is the primary input to ratings-driven conversion lift.

## Remediation

Trigger a prompt 1-7 days after purchase from a transactional email job or a conditional render on `app/orders/[id]/page.tsx`. Send a templated email with a deep link to the review form, or render a `<ReviewPrompt>` component when the order is delivered:

```tsx
const daysElapsed = (Date.now() - order.created_at) / 86_400_000
if (daysElapsed > 1 && daysElapsed < 7) {
  return <ReviewPrompt productIds={order.product_ids} />
}
```

Queue the email job at checkout so it fires even if the user never returns to the site.

## Detection

- **ID:** `post-purchase-prompt`
- **Severity:** `high`
- **What to look for:** List all post-purchase touchpoints (order confirmation page, confirmation email, follow-up email, in-app notification). For each, classify whether it contains a review prompt with a link or CTA to the review form. Count the number of touchpoints that trigger a review prompt.
- **Pass criteria:** At least 1 post-purchase review prompt exists and is triggered within 1-7 days after purchase via email template, in-app notification, or conditional UI rendering on an order status page. The prompt must contain a working link or navigation path to the review form.
- **Fail criteria:** No post-purchase review prompt mechanism exists across any touchpoint, or the prompt logic is present but never triggered (dead code). Do not pass when only a generic "thank you" message exists without a specific review CTA.
- **Skip (N/A) when:** Search for order/purchase-related models and routes. If no purchase/order system exists or the review system is fully external (e.g., Yotpo or Judge.me handles all prompts), skip.
- **Detail on fail:** `"Checked 3 post-purchase touchpoints (confirmation page, confirmation email, order history). 0 of 3 contain a review prompt."` or `"Review prompt component exists at components/ReviewPrompt.tsx but is never imported or rendered."`
- **Cross-reference:** Related to `ecommerce-reviews.review-collection.submission-form-exists` (the form the prompt links to) and `ecommerce-reviews.moderation-trust.moderation-enforced` (prompted reviews still need moderation).
- **Remediation:** Set up a post-purchase prompt using email, in-app notifications, or a follow-up page in `app/orders/[id]/page.tsx`:

  ```tsx
  // app/orders/[id]/page.tsx
  export default async function OrderConfirmation({ params }) {
    const order = await getOrder(params.id)
    const daysElapsed = (Date.now() - order.created_at) / (1000 * 60 * 60 * 24)

    return (
      <div>
        {daysElapsed > 1 && daysElapsed < 7 && (
          <ReviewPrompt productIds={order.product_ids} />
        )}
      </div>
    )
  }
  ```

  Or send an email 3 days after purchase with a link to the review form.

Taxons: user-experience

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