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
- Open the Reviews tab (BetterReviews admin → Reviews).
- 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.
- Tick the checkbox next to each review whose photos you want.
- 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_analysiscolumns 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:
- Open
manifest.csvin Google Sheets or Excel. - Sort or filter by
rating,content_type, or absence ofquality_issuesto find the photos you want for a campaign. - The
descriptioncolumn 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. - Pull the matching
{review_id}_{idx}.{ext}files for upload to Klaviyo, Mailchimp, Meta Ads, Pinterest, or wherever your campaign lives.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| ”Too many photos selected (max 200)“ | Selection includes more than 200 photos | Split into smaller batches |
| ”Export rate limit reached” | More than 5 exports in the last hour | Wait an hour, try again |
| ”Export failed: …” with no obvious cause | Transient R2 fetch error or one photo’s URL was invalid | Try again; if it persists, contact support with the review IDs |
| ZIP downloads but is empty | All selected reviews had no photos, or all photos had unsafe URLs | Check the manifest CSV — it shows which reviews resolved to zero photos |