Products are the heart of your catalogue. This page covers the dashboard product editor end-to-end: cover image, gallery, description, video, pricing, stock and the entry point into variants.
Video
Where to find your products
Open Dashboard → Products at /dashboard/products. Each product card shows:
Cover image thumbnail
A status badge — Active, Active – hidden or Draft
A star if the product is featured
Product name
Its category
Price, with the compare-price struck through when one is set
An Out of stock badge when a stock-tracked product hits 0
The slug is not shown in the list.
Quick actions on each card: Share, Preview in store, Edit and Delete. Delete is permanent — it only asks for a browser confirmation and there is no undo and no archive.
Filter by category, status or stock state, or search by name.
Bulk actions
Tick several products and the bulk toolbar appears with six actions:
Action | What it does |
Category | Add, replace or remove categories on the selected products. |
Price | Set a fixed price, or adjust by a percentage or a fixed amount (up or down). |
Stock | Set, increase or decrease stock. |
Status | Switch to Active, Active – hidden or Draft. |
Featured | Mark or unmark as featured. |
Delete | Permanently delete the selection. |
Two limits worth knowing: a bulk operation handles at most 100 products at a time, and bulk stock edits only apply to products using simple product-level stock — products on variant stock or combination stock are silently skipped and reported as skipped.
Creating a product
Click Add product at the top right (or go directly to /dashboard/products/create). The editor is split into cards:
Product images
Basic info — name and description
Pricing & stock — price, compare price, cost, SKU, weight, shipping dimensions, delivery insurance and fragile flags, and the stock-tracking switches
Category & status
Variants (Colours / Options)
Offers & bundles
Combination stock matrix — appears only when combination stock is on
⚠️ Warning — Two checks block the save
A new product cannot be saved without at least one image, and a compare price must be strictly greater than the price — an equal or lower compare price is rejected. Both checks run in the browser; the API and bulk import do not enforce them.
Cover image and gallery
Free stores can upload up to 8 photos per product. Pro, Unlimited and Enterprise are effectively unlimited (a 999 ceiling in the uploader). Accepted formats: jpg, png, gif, webp, heic, heif, avif, bmp, tiff.
Each file may be up to 20 MB. Uploads are automatically downscaled to a 2000x2000 maximum, converted to WebP, and a 400 px thumbnail is generated for cards and listings.
After uploading you can:
Drag-and-drop to reorder on desktop.
Long-press for ~250 ms on mobile to enter reorder mode (with a small haptic tick).
Click the
<or>chevrons on each image card to nudge it one slot left or right — useful when the drag is fiddly.Click the star on any thumbnail to make it the primary image.
The primary tile is pinned to the first slot automatically — drag-and-drop and the chevrons cannot move it, so there is nothing to lock or unlock. To change which photo leads, click the star on a different one.
The image order is what variants and the storefront gallery use. The first image is what shows up in ads and on category cards, so put your strongest hero shot there.
Categories
Tick one or more categories in the Category & status card. The picker is a flat, searchable checkbox list ordered by product count — sub-categories exist in /dashboard/categories, but they are not nested here.
DZBuild marks the first ticked category as primary automatically; there is no control to choose which. The primary category is the label shown on the product page and in its breadcrumb structured data (which links back to the store's categories section, not to a category page). It does not affect the product URL — product pages are always /product/{slug} or /product/{id}, and category pages are /category/{category-slug}.
Description (with image and video upload)
The description editor is a rich-text block where you can:
Apply headings (
H1,H2,H3), bold, italic, lists, links.Click the image button in the toolbar to add a picture. It opens a file picker (JPEG, PNG, GIF or WebP, max 2 MB per image) and uploads to your store's media folder.
Insert YouTube videos via URL.
Upload short HTML5 videos for in-line product demos.
⚠️ Warning — Pasting an image doesn't upload it
There is no clipboard upload. Pasting an image is either dropped, or — for a picture copied from another web page — embedded as a link to that external site, which breaks the day that site changes. Always use the toolbar image button.
Most Algerian merchants keep the description short (under 200 words) and let images do the work. Use H2 for benefits, an image between blocks, then an FAQ at the bottom.
AI description generator
The description card has a generate with AI button on both the create and edit forms. It writes in your storefront language, not the language of the product name, and there is no plan gate — Free stores can use it.
Rate limits per store: about 6 generations a minute, 150 a day, and 3 per product per day.
Pricing
Three fields:
Field | Use |
Price | The price the customer pays. |
Compare price | The strikethrough price (e.g. "was 3 500 DZD"). Drives 10–30% conversion lift on most categories — set it to a believable original. Must be strictly higher than the price. |
Cost | What the product costs you. Powers margin reports. Not shown to customers. |
Shipping attributes
Also in the Pricing & stock card, and passed to the courier when the order is sent to delivery (Yalidine / Yalitec / Guepex):
Field | What it does |
Weight | In kilograms. Above 5 kg couriers apply extra delivery fees. |
Height / Width / Length | Parcel dimensions used by the courier. |
Delivery insurance | When on, the parcel is insured at the product's price on dispatch. |
Fragile | Flags the parcel as fragile for the courier. |
Stock and SKU
Two stock modes at product level:
Track stock OFF — sells indefinitely, never marks out-of-stock.
Track stock ON — stock is deducted the first time an order moves into
confirmed,processing,shippedordelivered, and restored when it moves tocancelledorreturned. A per-order gate prevents double-deduction if the status flaps back and forth. The product is marked out-of-stock at 0.
Add an SKU in the Pricing & stock card. There is no barcode field in the product editor — a barcode can only be set by bulk import or the API. SKUs are not validated for uniqueness: two products in the same store can carry the same SKU with no warning, so keep them unique yourself.
For per-variant or per-combination stock, see Variants. For low-stock alerts and bulk stock tools, install the Stock Management addon.
How many products can I have?
Active product caps depend on your plan:
Plan | Max active products | Bulk import |
Free | 5 | No |
Pro | 300 | Yes |
Unlimited | Unlimited | Yes |
Enterprise | Unlimited | Yes |
The cap is enforced at create time: on Free you simply cannot add a 6th active product. Drafts don't count against it, but hidden products do (a hidden product still counts as active). Free stores are additionally capped at 30 orders per month.
If a paid plan expires, the whole storefront goes offline — every page is replaced by a "store closed" notice — and the dashboard is restricted to the dashboard home, subscription and billing history, settings, account, notifications, affiliate, AI credits and invoice download; everything else redirects to /dashboard/subscribe. Nothing is deleted, the plan is not downgraded to Free, and renewing restores everything immediately.
Need to renew or upgrade? Open /dashboard/subscribe and click ▶ How to renew for an in-app guided tour, or watch the video tutorials on the DZBuild YouTube channel.
Variants
Below the stock card, the Variants section lets you add Colour, Text, Image-text or Multiple choice groups, each with options that carry their own price adjustment, stock and linked image. Full reference: Variants & combinations.
Offers & bundles
The Offers & bundles card creates per-product quantity offers — "buy 3 for 4 500 DZD". Each offer carries:
Field | Notes |
Title | Required. What the shopper sees on the offer row. |
Quantity | Required. How many pieces the offer covers. |
Final price | Required. The total for the whole offer, not the per-piece price. |
Compare price | Optional strikethrough total. |
Badge text + colour | Optional ribbon on the offer, e.g. "Best value". |
Free shipping | Optional. Zeroes delivery for that offer — it overrides your normal shipping rates, so check the maths before enabling it. |
Offer image | Optional picture for the offer row. |
When an offer covers several pieces of a product that has variants, the shopper picks variants per piece. That is built in; the Offer Variant Popup addon replaces the built-in accordion with a modal.
Status
Option | Effect |
Active | Available for sale — listed on the storefront and indexed for search. |
Active but hidden | Reachable by direct URL but not listed on the storefront. Useful for secret-link promos. |
Draft | Not visible. Use while you're still preparing the product. |
Product SEO
Product SEO is generated automatically — there is nothing to fill in:
Page title —
Product name - Store name.Meta description — the first 160 characters of your description, stripped of formatting. When the description is empty it is composed from the product name, store name and price.
OG / Twitter image — the product's primary image.
There is no per-product meta title, meta description or OG-image override in the dashboard. The meta_title and meta_description fields can be filled by bulk import or the API, but the storefront never uses them for products.
Editing a product
Open /dashboard/products/:id/edit from the products list. Same fields as create.
Renaming a product always regenerates its URL slug — there is no manual slug field — so the old /product/{old-slug} URL stops resolving by slug. Product pages also resolve by numeric ID (/product/{id}, which is what the dashboard's Preview and Share buttons emit), so ID-based links survive a rename. Rename with care if ads point at a slug URL.
There is no Duplicate action. To create a similar product, re-enter it or bulk-import it.
Saving a product also re-indexes it for storefront search. Indexing failures are silent, so if search misses a product, open it and save it again. Bulk stock edits deliberately skip re-indexing.
Bulk import
The Bulk Import tool lives at /dashboard/products/bulk-import.
🛑 Important — Import is insert-only — never re-upload the same file
There is no SKU matching and no upsert. Re-uploading a file you already imported creates a second copy of every product (the duplicate slugs become name-2, name-3, …). To change products you already have, edit them in the dashboard, use bulk actions, or use the API.
Free stores cannot import. The page opens, but any upload is rejected with an upgrade prompt. On Pro, Unlimited and Enterprise the limits are per file:
Limit | Value |
File type |
|
File size | 10 MB |
Rows | 5 000 |
The import also stops once your plan's product slots run out (Pro: 300 active products in total) and tells you how many rows were skipped.
The flow
Download the sample file from the import page and fill it in.
Upload your CSV or XLSX.
Map the columns. DZBuild matches them automatically, and an AI mapping button resolves the awkward ones. You can save a mapping as a reusable template for the next import from the same source.
Choose whether rows without an image should import as drafts.
Execute. Products are created immediately; images referenced by URL are downloaded in the background, so products appear before their photos do. The page keeps showing image progress until they land.
Download the error report if any rows failed.
Recognised columns
Required: name and price.
Optional: description, short_description, compare_price, cost_price, sku, barcode, stock_quantity, category, status, featured, track_stock, meta_title, meta_description, variant_color, variant_size, image_url, and image_url_2 … image_url_15.
Notes:
There is no
slugcolumn — slugs are always generated from the name.Free stores see 8 image-URL columns in the template, paid stores 15.
meta_titleandmeta_descriptionare stored but never rendered by the storefront (see Product SEO).
Migrating from Shopify
For a Shopify store, use the Shopify Import addon from /dashboard/addons instead of a CSV. It connects with 1-click OAuth and imports products, variants, images and collections — and unlike CSV bulk import, re-running it updates the products it already imported instead of duplicating them, preserving their slugs. Requires Pro.
Product add-ons
Product add-ons are paid extras a shopper attaches to a product at checkout — engraving text, a custom message, an uploaded design file. Manage them at /dashboard/products/addons. There is no plan gate: Free stores can use them.
Each add-on carries:
Field | Notes |
Title | What the shopper sees. |
Input type |
|
Placeholder | Hint text in the field. |
Required | Forces the shopper to fill it before ordering. |
Extra price | Added to the order total. |
Max length | For text and textarea inputs. |
Allowed extensions | For image uploads. |
Sort order / Active | Ordering and an on/off switch per add-on. |
Add-ons are switched on per product, and pricing is recalculated on our side from your saved add-on prices at checkout — a tampered client price is ignored. One caveat: landing-page checkout stores custom-form uploads at price 0 rather than charging add-on prices, so use the product page when add-ons must be paid for.
Tips
The primary image is pinned to slot 1 automatically — click the star on another thumbnail if you want a different photo to lead. Customers from ads always land on the primary.
Set compare-price even on items with a small markup — the strikethrough is one of the highest-leverage conversion tweaks.
Pick image-text variants once you pass ~5 options — thumbnails kill misreads on similar names. See variants.
Use Active but hidden for private promos, Draft while preparing.
Keep descriptions short — 100–200 words plus images converts better than walls of text on Algerian mobile-first traffic.
Add an SKU for everything you'll bulk-import or sync back via the API later — and keep them unique yourself, nothing checks.
Never re-upload an import file to "update" products — you'll duplicate your whole catalogue.
Cover image is your ad image. Treat the first slot like a Facebook ad creative, not a generic catalogue shot.
What's next