The Product Workspace (detail page)

The product detail page is where you do all the real work: build variants and SKUs, enter the bill of materials, set prices and forecast, run the progress gate, record tests, and finally push to Shopify. This is the most important page in setlist.

Where: setlist → Products → (click any product)


How the page is laid out

The page has two parts:

  • Main column — four stage cards (Plan, Design, Review, Ready for launch), followed by Design notes and Tests.
  • Right-hand aside — always-visible panels: Status, Progress gate, Readiness, Channels, and (if applicable) Campaigns.

The title shows the official name if set, otherwise the working name. The top-right button is context-aware — it's Push to Shopify (unlisted) until the product is in Shopify, then changes to reflect its Shopify state.

The page is live — changes made elsewhere (or by a teammate) appear without a reload.


How saving works

Two patterns, used consistently across setlist:

  • Autosave — most inline fields (names, prices, SKUs, BOM quantities, forecast, classifications, test results) save themselves shortly after you stop typing, and immediately when you click away. A small line reads Saving… → Saved. No save button.
  • Explicit actions — multi-part builders and one-shot operations use buttons: Save options, Add supply, Add test, Add note, stage changes, and the Shopify/Fulfil steps.

If a teammate changed the product while you were editing, a save can be rejected with "This product changed in another session. Review the latest values and save again." — just reload and re-enter.


The right-hand aside

Status

  • Stage — a dropdown to jump directly to any stage. (This bypasses the gate — use the Advance button for the normal path.)
  • Shopify — a badge: Not in Shopify / Draft / Active, with a "View in Shopify" link once linked.
  • Owner, Product line, Launch, Forecast total, Launch date, and Due (with an Overdue / Due soon / On track badge).

Progress gate

The checklist for advancing to the next stage — "What's left before {next stage}." Auto items tick themselves; manual items are clickable. The Advance to {next stage} button activates only when every item is done. Full details: Stages & progress gates.

Readiness

A stage-agnostic 6-point checklist (Product named · SKU assigned · Final price set · Supplies added · Sales channels selected · Tests). This is the same number shown on the Products list.

Channels

Tap a row to toggle a sales channel: Online Store · POS · Shop. (Helper: "Tap to add or remove a channel.")

Campaigns

If the product belongs to any campaigns, they're listed here as links. Read-only — manage membership from the campaign side.


The progressive (stage-aware) view

By default (Settings → Preferences, on), the page follows the product's current stage:

  • The current stage card is expanded (with a "Current" badge).
  • Past stages collapse to a one-line ✓ summary you can click to expand and edit.
  • Future stages collapse to a dimmed row explaining what they unlock; you can peek inside, but the fields are disabled until you get there.

Turn the preference off to see the whole page expanded at once.

PlanStacking ring · Ring · Due Oct 15, 2026
DesignCurrent

Variants, bill of materials, costs…

ReviewLock the official name, final prices and forecast.
Ready for launchStage in Shopify & sync to Fulfil.
Progressive view — past stages collapse, future stages dim

Stage 1 — Plan

The product's identity and schedule.

  • Identity: Working name, Product type + Subcategory (cascading), Owner, Description, and an optional Link to brief. The container SKU shows read-only as a chip.
  • Timing: Launch group, Launch date (locked to the launch's start when a launch is assigned), and Target due date (defaults to launch date minus your design lead time).
  • Availability: Product line, its read-only Behavior, and the conditional field it drives — Quantity (units cap) for limited-quantity lines, or End date for limited-date lines.
  • Classifications: any classification fields set to show at Plan.

The official name is not set here — it first appears in Review. Plan carries it through untouched.


Stage 2 — Design

The heart of the page: variants, the bill of materials, costing, and the design sign-off.

Variants & options

You never see the word "variant" until there's more than one. A simple product quietly has a single default variant carrying its SKU, cost, and price. Variant grouping UI only appears once you add options.

Base product sits at the top: the master bill of materials and the total forecast. For a single-SKU product, build the base first, then add options to split it into variants.

To create variants, click Create variants (or Edit options if you already have some) to open the options editor:

  • Define up to 3 options (Shopify's limit), each with a name (e.g. Size, Metal) and a list of values.
  • New products pre-fill the option types defined on their product type (e.g. Rings → Size: 5,6,7,8,9) — edit or remove them freely. An Add from your option types shortcut offers presets you haven't added.
  • Each value can carry its own SKU code (otherwise it's auto-derived), and each option has a Tests required for this option toggle.
  • Click Save options. setlist builds one variant per combination. Existing combinations keep their SKU, price, and costs; new variants are created and inherit a fresh copy of the base bill of materials.

Once there's more than one variant, a Variants (n) section appears with a collapsible panel per combination.

Stacking Band
OptionsSize56789

↓ Saving builds one variant per combination.

Size 5R-STACK-SS-5$48.00 · 64% margin · 20 forecast
Size 6R-STACK-SS-6$48.00 · 64% margin · 20 forecast
Size 7R-STACK-SS-7$48.00 · 64% margin · 20 forecast
Size 8R-STACK-SS-8$48.00 · 64% margin · 20 forecast
Size 9R-STACK-SS-9$48.00 · 64% margin · 20 forecast
Options become variants — one per combination

SKUs

SKUs are auto-generated, never hand-built — assembled from the product type's template and your global prefix. The product-level "container SKU" is read-only; each variant's SKU is editable as a quiet override. See Product types & SKUs for how the template works.

Bill of materials (BOM / supplies)

Each variant has its own bill of materials — the supply/material lines and quantities that make one unit. (Packaging like boxes and cards goes here too — it's just supply lines.)

  • Add supply: click Add supply, pick a material from the materials catalog (synced from Fulfil or added by hand), and enter the quantity per unit. "Unit cost is pulled from the material — you only enter the quantity used per unit."
  • Can't find a material? Use Add new material to stub one (name + estimated cost + note). It lets you keep designing, but it blocks Ready for launch until it's added to Fulfil and reconciled.
  • Copy between variants: Copy base BOM to all variants (overwrites each variant from the base), or Copy BOM from another variant (appends its lines).
Bill of materialsStacking Band — Size 7
SupplyQtyUnit cost
Sterling silver wire 18ga
SS-WIRE-18
8 cm$0.42
Jump ring 4mm
SS-JUMP-4
2 pc$0.05
Kraft gift box
PKG-BOX-S
1 pc$0.30

Packaging lives in the BOM too.

Material cost$3.71
Bill of materials — pick a material, enter the quantity

Costs & pricing

Inside each variant panel, the costs are read-only stats — you only type the planned Price:

FieldEditable?What it is
Material costNoSum of the bill of materials (quantity × unit cost), packaging included
Labor costNoPulled from Fulfil
Total cost (COGS)NoMaterial + Labor
PriceYesThe planned retail price — the pricing intent set in setlist
MarginNo(Price − COGS) ÷ Price, with your target margin shown
SuggestedNoThe price that would hit your target margin at the current cost

Once a product exists in Shopify, setlist also mirrors its live Shopify price. If live and planned prices disagree, a drift banner shows both values for every affected SKU and asks you to resolve it explicitly:

  • Adopt Shopify price as the plan updates the planned price in setlist.
  • Push planned price to Shopify restores the live Shopify price from the plan.

Nothing resolves silently. The Price history panel keeps an append-only record of planned edits, Shopify changes, pushes, and adoptions with timestamps and actor/source details.

Material cost$3.71read-only, from BOM
Labor cost$8.00from Fulfil
Total (COGS)$11.71material + labor
Margin75.6%target 65%
Suggested$33.46to hit target margin
Costs roll up; you enter only the price

Forecast

How many units you expect to make/sell, per variant:

  • Total forecast (on the Base product) distributes across variants by the product type's forecast weights (even split if none).
  • Each variant also has its own Forecast units field you can override directly.

Design approved

A Mark design approved stamp sits at the bottom of the Design card. Tick it once the design, variants, BOM, and SKUs are locked — it satisfies the Design gate so the product can advance to Review. (Undo any time.)


Stage 3 — Review

Finalize for launch.

  • Official name — set the Shopify-ready name here (it first appears at this stage). This is what syncs to Shopify.
  • Finalize pricing & forecast — a table with one row per variant: set each final price (prefilled from the suggested price) and forecast (prefilled from the type target). Margin and forecasted gross profit update live.
  • Raw materials needed — the procurement hand-off: total materials to build the whole forecast (quantity per unit × forecast, summed across variants), with on-hand and reorder data from the catalog, plus an estimated total spend. A Short badge flags runs that exceed stock on hand.
  • Classifications set to show at Review.

Stage 4 — Ready for launch

The Launch checklist — hand-off steps to get the product live. Pushing to Shopify creates an unlisted product (active, not published) so Fulfil can sync it. Customers can't see it until you list it live.

First time? Pushing to Shopify and listing live each need an extra Shopify permission the first time you use them — setlist shows a Request access card in place of the step. Grant it once and the action appears. See Shopify access & permissions.

  1. Push to Shopify (unlisted) — creates the product in Shopify (active but unpublished) with the full options/variants/SKU/inventory matrix, and links it back. (Disabled until there's a name and a price, and until inventory access is granted.) Fulfil ingests it within ~2 hours.
  2. Product synced to FulfilCheck Fulfil looks up the SKU and ticks when found (or mark it synced manually). Needs the Fulfil connection.
  3. BOM in Fulfil(scaffolded — the Fulfil BOM API isn't wired yet, so this step stays pending for now.)
  4. List it live in Shopify — publishes the product to your channels (needs publishing access). Add the listing content (description + photos) in Shopify, then go live. Once it's live, setlist's job is done.

Pushing to Shopify creates an unlisted product so Fulfil can sync it.

Push to Shopify (unlisted)Pushed
Created as an unlisted product on Jun 24, 2026.
Product synced to FulfilPending
Check Fulfil
BOM in FulfilBlocked
Fulfil BOM API not connected yet.
List it live in ShopifyPending
List it live
Ready for launch — the hand-off checklist

Tests

The Tests section (always visible at the bottom) records internal QA tests against the product. A Tests required switch turns testing on/off for the product. When on, tests are organized by option value (a test on "Size: 7" covers every variant with that value). Add test pulls names from Settings → Testing presets, which prefill the prescription and owner. Update each test's status and result inline. The cross-product view of all tests lives on the Tests page.

This is internal QA testing, not the sample-to-people User testing feature.


Design notes

A running thread for design decisions, test outcomes, and questions. Type a note (Enter sends, Shift+Enter for a newline), and attach images with the paperclip, by pasting, or by dragging them into the composer (under 10 MB each). Pending images appear inside the composer before you send. Notes are attributed to you automatically — there's no author field.

There's no separate reference-image gallery on the product page today. The only image attachments here are images on design notes.


Shared materials

If this product uses a raw material that other products also use, a Shared materials section appears, showing the shared stock and which products draw on it — handy for spotting contention before a run.

See also