Product images
Each product can have one image. It's shown on the storefront catalog, on
the storefront product page, in the dashboard inventory list, and in the
/dashboard/orders/new product picker.
Formats and size
| Formats | JPG, PNG, WebP, AVIF |
| Max size | 5 MB |
| Max images per product | 1 |
Uploads outside that list fail with a clear error:
- "Only JPG, PNG, WebP, and AVIF images are allowed."
- "Image too large. Maximum size is 5 MB."
The 5 MB cap is per file, not per month — no image quota on any plan.
Upload
Product images are uploaded as part of the Add product or Edit product form.
- From Inventory, open or create a product.
- In the form, pick a file from the Product image field.
- You'll see a live preview next to the chooser before you save.
- Hit Save — the file is uploaded and associated with the product.
URLs are public and stable
Once saved, every product image has a public URL. Two practical consequences:
- The URL is public. Anyone with the URL can view the image. This is fine for product photography — it's the same as images on any e-commerce site — but don't upload anything here you wouldn't be comfortable with a customer seeing.
- URLs don't rotate. Once saved, the URL for a given image doesn't change. You can reference product image URLs from external systems (e.g. a marketplace listing tool) without worrying about them breaking.
- Old images are cleaned up automatically. When you replace or remove a product's image, the old file is deleted in the same step. No orphans to clean up on your side.
Replacing or removing an image
From the edit form:
- Replace — pick a new file. The preview updates. On save, the new image is uploaded and the old one is deleted.
- Remove — click Remove image under the preview. The image is cleared on save and the old file is deleted.
Setting an image via the API or CSV
Neither the REST API nor the CSV import accept file uploads directly. Both set
the imageUrl field, which should be an already-public URL. The intended
flow:
- Host the image somewhere (your CDN, S3 bucket, or any other
GET-able URL). - Send the URL in the
imageUrlfield when creating or updating the product.
If you want Distribu to host the image, use the dashboard form — it's the only entry point that performs the actual upload. There's no public image-upload endpoint today.
Next: Stock tracking.
