Exporting marketing-ready photos
Last updated: October 11, 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.”
Check the review is Cleared to use first. Exporting a photo doesn’t grant you the right to publish it — using a customer’s photo in an ad, email, or social post needs the customer’s permission. Use the rights badge and Request permission to feature before you put an exported photo in a campaign.
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 in the filter bar — 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 on each review card whose photos you want.
- Click the bulk-action dropdown in the list header 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 imported photos aren’t run through our photo analysis. You can still select them manually, but their
vision_analysiscolumns in the manifest will be empty. - No recorded video answers. Clips a customer recorded as a chat answer are never shown on your store, so they’re never exported either. Videos attached with the paperclip are.
- No video transcoding. Videos in the export are not re-encoded — a WebM clip may be repackaged so it plays and seeks smoothly, but the picture and sound are exactly what the customer recorded.
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 |
Book a demo