Exporting marketing-ready photos

Last updated: May 2, 2026

The Export marketing photos bulk action on the Reviews tab packages selected review photos into a ZIP file along with a CSV manifest you can hand to your content or marketing team. It’s the fastest path from “this customer photo is great” to “this photo is in a Klaviyo email.”

Screenshot of the bulk-action menu open with Export marketing photos visible — manual capture, drop in here.

Selecting photos to export

  1. Open the Reviews tab (BetterReviews admin → Reviews).
  2. Optionally filter the list to Marketing-ready photos using the Photos filter at the top of the table — this narrows to reviews where BetterReviews has flagged at least one customer photo as good quality, product clearly visible, and well-lit.
  3. Tick the checkbox next to each review whose photos you want.
  4. Click the bulk-action dropdown at the top of the table and choose Export marketing photos.

You’ll see a “Preparing export…” toast for a few seconds while the server bundles the photos. When the ZIP is ready, your browser downloads it as marketing-photos-<date>.zip.

What’s in the ZIP

  • manifest.csv — one row per photo. Columns: review_id, rating, product_title, customer_name, content, content_type (lifestyle / product-shot), quality_issues (pipe-separated when present), description (BetterReviews’s AI description of what’s in the photo — handy for ad captions), photo_filename.
  • Photo files — one per photo, named {review_id}_{index}.{ext} (e.g. 42_1.jpg). The extension matches the photo’s actual format (jpg, png, webp, mp4, etc.); we never use the URL suffix.

Limits and rate limits

  • 200 photos per export. Larger selections hit a 422 error. Split into batches.
  • 5 exports per hour and 30 per day per store. Heavy use returns a 429 error — wait and try again. The limits are pretty high; you should only see them if a script is misbehaving.
  • Customer-deleted photos: if a customer requests deletion (GDPR) after you’ve downloaded a ZIP, those photos remain on your local copy. We delete them from our storage immediately, but a downloaded ZIP is in your possession — you’re responsible for honoring the deletion request on your local files.

What’s NOT in the ZIP

  • No customer email addresses. The manifest uses the public display name only — not the encrypted email we hold for review verification.
  • No reviews from imported platforms (Loox, Judge.me, Okendo) appear under the Marketing-ready filter, because those platforms don’t share photos with us in a way we can re-export. You can still select them manually, but their vision_analysis columns in the manifest will be empty.
  • No video transcoding. Videos in the export are the originals as the customer uploaded them.

Using the manifest

The CSV manifest lines up with the photo files via the photo_filename column. A typical workflow:

  1. Open manifest.csv in Google Sheets or Excel.
  2. Sort or filter by rating, content_type, or absence of quality_issues to find the photos you want for a campaign.
  3. The description column gives you a starting caption for each photo — drop the AI’s description of the photo into your ad creative as alt-text or copy seed.
  4. Pull the matching {review_id}_{idx}.{ext} files for upload to Klaviyo, Mailchimp, Meta Ads, Pinterest, or wherever your campaign lives.

Troubleshooting

SymptomCauseFix
”Too many photos selected (max 200)“Selection includes more than 200 photosSplit into smaller batches
”Export rate limit reached”More than 5 exports in the last hourWait an hour, try again
”Export failed: …” with no obvious causeTransient R2 fetch error or one photo’s URL was invalidTry again; if it persists, contact support with the review IDs
ZIP downloads but is emptyAll selected reviews had no photos, or all photos had unsafe URLsCheck the manifest CSV — it shows which reviews resolved to zero photos