Pricing Module Guide

How to configure, calibrate, and understand your storefront pricing

Contents
  1. Overview
  2. How the Pricing Formula Works
  3. Admin Page Sections
    1. General Settings
    2. Quantity Tiers
    3. Size Options
    4. Material Multipliers
    5. Packaging Product Sizes
    6. Admin Access
  4. Making Changes
  5. How Settings Sync to the Configurator
  6. Quick Reference

1. Overview

The VinylPac pricing module consists of two parts that work together: an Admin page where you configure all pricing settings, and the customer-facing Configurator that reads those settings and calculates prices in real time.

All settings are stored in your browser's local storage. Changes on the Admin page apply the next time the Configurator loads — no code changes required.

2. How the Pricing Formula Works

Every price shown to a customer comes from a single formula:

Total Price = unitPrice(qty_tier) × sizeMult × materialMult × (1 + markup / 100) × qty
Per-Unit Price = Total ÷ qty
VariableWhat it meansWhere it comes from
unitPrice(qty_tier)Base cost per sticker at 2"×2" white vinylQuantity Tiers table
sizeMultMultiplier for the selected size (larger = higher)Size Options table, or auto-calculated for Custom
materialMultMultiplier for the selected material finishMaterial Multipliers table
markupYour margin on top of the base cost (0 = match cost)General Settings
qtyNumber of stickers orderedCustomer input

Worked Example

Customer orders 100 qty of 3"×3" Holo stickers at 0% markup:

unitPrice(100) = $0.73   (from qty tier table)
sizeMult        = 1.20   (3"×3" multiplier)
materialMult   = 1.15   (Holo multiplier)
markup         = 1.00   (0%)

Total   = $0.73 × 1.20 × 1.15 × 1.00 × 100 = $100.74
Per unit = $100.74 ÷ 100 = $1.01 / sticker

3. Admin Page Sections

3.1 General Settings

FieldDescriptionDefault
Minimum Order Qty Smallest number of stickers a customer can order. The Configurator enforces this as a floor — the quantity input will not go below it. 10
Global Markup % 0 = match your cost. Positive = charge more. Negative = undercut. Applies equally to all materials and sizes. 0%
Base Material Label for the reference material (mult = 1.00). Informational only — does not affect calculations. White Vinyl
Starting Order Number Sets the counter used to generate order references (e.g. ORD-1001). The Configurator uses this as the next order number and increments it automatically per session. Saving resets the counter to the value entered here — use this when you want to re-sync with your actual Shopify order count. 1000

3.2 Quantity Tiers & Per-Unit Prices

Each row defines the per-unit price that applies once a customer's order reaches that quantity. The Configurator always uses the highest tier the customer's quantity qualifies for.

These prices are for the base size (2"×2") and base material (White Vinyl). Size and material multipliers are applied on top of these values.

Min QtyUnit Price ($/ea)Source
10$1.7000White vinyl 2"×2" (custom qty)
20$1.5000White vinyl 2"×2" (custom qty)
50$1.2000Confirmed
100$0.7300Confirmed
200$0.4750Confirmed
300$0.3833Confirmed
500$0.3040Confirmed
1,000$0.2320Confirmed
2,000$0.1855Confirmed
3,000$0.1653Confirmed
5,000$0.1446Confirmed
10,000$0.1225Confirmed

Use + Add Tier to add a row, × to remove one. Tiers are sorted by quantity automatically when you save.

3.3 Size Options & Multipliers

Each row defines a size option in the customer's size dropdown. The multiplier scales the base unit price for larger sizes.

SizeMultiplierSource
2" × 2"1.000Base — all other sizes are relative to this
3" × 3"1.200Calibrated
4" × 4"1.450Calibrated
5" × 5"1.733Calibrated
CustomFormulaAuto-calculated from entered dimensions — see below

Custom Size Pricing Formula

When a customer selects "Custom," width and height inputs appear (in inches). The size multiplier is calculated automatically:

sizeMult = (width × height ÷ 4) ^ 0.30

This formula was calibrated from market pricing data across standard and custom sizes. It is most accurate in the 3–25 sq in range typical of most orders. Very large custom sizes (above 30 sq in) may be slightly underpriced.

Example sizeAreaFormula result
1" × 3"3 sq in(3/4)^0.30 = 0.92×
2" × 2"4 sq in(4/4)^0.30 = 1.00× (base)
3" × 4"12 sq in(12/4)^0.30 = 1.37×
5" × 5"25 sq in(25/4)^0.30 = 1.73×
10" × 5"50 sq in(50/4)^0.30 = 2.09×

3.4 Material Multipliers

Applied on top of qty-tier price × size multiplier. White Vinyl is the base at 1.00×.

MaterialMultiplierStatusNotes
White Vinyl1.000 Confirmed Base material — all SM pricing data is white vinyl
Clear1.070 Confirmed Calibrated — ranges 1.03× (50 qty) to 1.10× (10k qty)
Glitter1.130 Confirmed Calibrated — ranges 1.08× (50 qty) to 1.38× (10k qty). Discounts flatten at high volumes.
Holo1.150 Confirmed Calibrated — avg 1.18×, using conservative 1.15×
Mirror1.200 Estimate Estimate — update when pricing data is available.

3.5 Packaging Product Sizes

The Packaging Product Sizes section lets you define the selectable sizes for each packaging product (Mylar Bags, Pre-Roll Tubes, Miron Jars, etc.). When a customer picks a size in the Configurator, the side-label and top-label dimensions are auto-filled and used to calculate price.

FieldDescription
Size LabelDisplay name shown in the size dropdown, e.g. "150ml" or "1/8th oz".
Side Label W / HWidth and height (inches) of the label that wraps around the body of the package. Used for pricing.
Top Label W / HWidth and height (inches) of the label on the lid or top of the package. Used for pricing the lid artwork if uploaded.
RequiredWhen checked, the customer must select a size before Add to Cart is enabled.
DefaultThe size pre-selected when the product loads. Leave blank to force the customer to choose.

Each packaging product has its own set of sizes. Use + Add Size within a product card to add a new option, and × to remove one. Click Save Settings to apply.

3.6 Admin Access

The Admin page is protected by Netlify Identity. Users must be explicitly invited — there is no public sign-up. Anyone who visits /admin.html without being logged in will see a login prompt.

TaskWhere
Invite a new admin userNetlify dashboard → Site → Identity → Invite users → enter email
Remove accessNetlify dashboard → Site → Identity → find user → Delete
Reset a passwordUser clicks "Forgot password" on the login prompt, or you delete and re-invite
Note: Netlify Identity is separate from your Google or Shopify accounts. Admin users log in with the email address they were invited with and a password they set on first login.

4. Making Changes

Changing Unit Prices

  1. Go to the Quantity Tiers table
  2. Click the Unit Price field on the row you want to update and type the new value
  3. Click Save Settings — a green toast confirms the save
  4. Reload the Configurator — prices update immediately

Adding a Markup

Set Global Markup % in General Settings to your desired margin. For example, 20 = charge 20% more than cost. -10 = price 10% below your cost basis. Applies uniformly across all materials, sizes, and quantities.

Changing Minimum Order Quantity

Update Minimum Order Quantity in General Settings and save. The Configurator enforces this as a floor — customers cannot enter a lower number, and the starting price on collection pages updates accordingly.

Adding or Removing Size Options

Use + Add Size to add a new row, fill in the label, dimensions, and multiplier, then save. The new size appears in the customer's size dropdown immediately. Use × to remove a size.

Calibrating Mirror Pricing

Mirror is currently the only material without a calibrated multiplier. To calibrate it:

  1. Gather pricing for mirror stickers at the 2"×2" size across all standard qty tiers (50 through 10,000)
  2. Divide each mirror unit price by the corresponding white vinyl unit price from the tiers table
  3. Average the resulting multipliers — that is your calibrated value
  4. Update the Mirror multiplier in the Material Multipliers table and click Save Settings

Updating the Starting Order Number

If your Shopify order count has moved ahead (e.g. you took orders directly in Shopify), update Starting Order Number in General Settings to match your latest Shopify order number + 1, then click Save Settings. The counter resets immediately and the next Add to Cart action will use the new number.

Adding or Editing a Packaging Size

  1. Scroll to the Packaging Product Sizes section
  2. Find the product card (e.g. Mylar Bags)
  3. Click + Add Size to add a new row, or edit an existing row's fields inline
  4. Fill in the Size Label and the Side / Top label dimensions in inches
  5. Click Save Settings

Resetting to Defaults

Click Reset to Defaults in the top-right corner of the Admin page. You will be asked to confirm. This restores all tiers, sizes, and multipliers to the values documented here.

Note: Local storage is browser-specific. Settings saved in Chrome will not automatically appear in Firefox or Safari. When you move to Shopify, the pricing system will be updated to use a proper database instead.

5. How Settings Sync to the Configurator

The Admin page saves all settings as JSON to your browser's local storage under the key vinylpac_pricing. The Configurator reads this key every time a customer changes a size, material, or quantity — so price changes are live without a page reload.

If no saved settings are found (e.g., on a new browser or after clearing storage), the Configurator falls back to built-in defaults that match the values in this guide.

Tip: You can inspect the saved settings at any time by opening your browser's developer tools (F12), going to Application → Local Storage → localhost:8080, and clicking the vinylpac_pricing key.

6. Quick Reference

TaskWhere to do itTakes effect
Change a unit priceAdmin → Qty Tiers → edit price → SaveNext Configurator load
Add or remove a qty tierAdmin → Qty Tiers → + Add Tier or × → SaveNext Configurator load
Change minimum order qtyAdmin → General Settings → Min Qty → SaveNext Configurator load
Add a markup / undercut pricingAdmin → General Settings → Markup % → SaveNext Configurator load
Add a new size optionAdmin → Size Options → + Add Size → SaveNext Configurator load
Change a material multiplierAdmin → Material Multipliers → edit → SaveNext Configurator load
Calibrate Mirror materialSee section 4 — gather mirror pricing data firstAfter save
Reset everything to defaultsAdmin → Reset to Defaults → confirmImmediately on Admin page
Re-sync order number with ShopifyAdmin → General Settings → Starting Order Number → SaveNext Add to Cart
Add a packaging size optionAdmin → Packaging Product Sizes → product card → + Add Size → SaveNext Configurator load
Invite an admin userNetlify dashboard → Identity → Invite usersImmediately (email sent)