A merchant selling perfume decants needs to track inventory by volume rather than units. When customers purchase smaller portions (2ml, 5ml, or 10ml) from a 100ml bottle, the system must automatically deduct the correct amount and prevent overselling once the bottle is depleted.
Recommended Solutions:
App-Based Options:
Bundler - Product Bundles (~$10-30/month): Treats the full bottle as parent product with decants as bundle components
Profit Bundles & Mystery Boxes: Defines unit-based relationships between parent bottles and child portions, automatically syncing inventory
Sumtracker: Creates master SKU for full bottles with usage rules for each variant size; automatically blocks sales when volume reaches zero
Advanced tools like Stocky, Cin7, or QuickBooks Commerce for more complex needs
Free Alternative:
Set up decants as variants of the main product with custom Liquid code to calculate remaining volume
Requires manual inventory updates but avoids monthly fees
The discussion remains open, with contributors offering to assist with technical implementation. The variant method is suggested as a budget-friendly starting point before scaling to specialized apps.
Summarized with AI on October 24.
AI used: claude-sonnet-4-5-20250929.
This is a fantastic niche business model, and you’re absolutely right that standard Shopify inventory doesn’t handle this type of “liquid conversion” tracking. Here are the best solutions for managing decant inventory:
Recommended Apps:
1. Bundler - Product Bundles
How it works: Set up your 100ml bottle as the “parent” product and 2ml/5ml/10ml as bundle components
Inventory tracking: Automatically deducts from main bottle when smaller sizes sell
Pros: Built for exactly this type of conversion tracking
Create your decants as variants of the main product instead of separate products:
Setup Example:
Product: “Perfume A - 100ml Base”
Variants:
2ml decant (reduce inventory by 2)
5ml decant (reduce inventory by 5)
10ml decant (reduce inventory by 10)
Then use Liquid code to calculate remaining stock:
liquid
<!-- Display remaining ml available -->
{% assign total_inventory = product.selected_or_first_available_variant.inventory_quantity %}
{% assign remaining_ml = total_inventory %}
<p>{{ remaining_ml }}ml remaining in bottle</p>
Pro Setup Strategy:
Option A - Bundle Method:
Main product: “Perfume A - 100ml” (master inventory)
Decant products: “Perfume A - 2ml”, “5ml”, “10ml” (linked to main bottle)
App handles the math automatically
Option B - Variant Method:
Single product with size variants
Custom code calculates remaining volume
Manual inventory updates (more work, but free)
Technical Implementation:
For automatic stock blocking, you’ll need either:
An inventory management app (easiest)
Custom code that checks remaining ml before allowing checkout
Shopify Flow automation (Shopify Plus only)
Budget-Friendly Start:
If you’re just starting out, try the variant method first. You can always upgrade to a specialized app as you scale.
Quick Question: How many different fragrances do you typically stock? This will help determine if you need the full app solution or if a simpler setup works.
This is such a unique business model, I’d love to hear what solution ends up working best for you! The perfume decant community would definitely benefit from knowing the best Shopify setup.
Good luck!
Feel free to reach out to me, if you need help with the technical implementation; happy to walk through the setup!
I understand your requirements. You’re looking for a solution to manage inventory for decants, where there’s a unit-based relationship between the full-size bottle (parent) and smaller portions (child items).
I would suggest using Profit Bundles & Mystery Boxes, which allows you to define relationships between parent products and child items, enabling relationship-based inventory syncing.
For example, you can define your 100ml bottle in the app, where it can be divided into smaller units like 2ml, 5ml, or 10ml portions. Inventory tracking in this scenario would work as follows:
Initially, you have a total of 100ml available. So, for 2ml units there would be 50 units, for 5ml units 20 units, and for 10ml units 10 units.
If a 10ml portion gets sold, the 10ml inventory reduces by 1 (from 10 → 9), and the total remaining volume in the main bottle reduces by 10ml (from 100 → 90ml).
If a 2ml portion gets sold, the 2ml inventory reduces by 1 (from 50 → 49), and the total remaining volume drops from 90ml → 88ml.
The app would automatically block sales once there isn’t enough volume left in the main bottle to fulfill the requested unit.
This way, the system keeps track of how much liquid remains in each main bottle, subtracts the correct volume automatically whenever a variant is sold, and prevents overselling.
One solid option to look into is Sumtracker. It lets you treat your full-size bottle (e.g. 100 ml Perfume A) as the main inventory item and then define your smaller variants (2 ml, 5 ml, 10 ml) as components that draw from that same master stock.
Here’s how it works in your example:
You set up one master SKU representing the 100 ml bottle with its total quantity (e.g. 100 ml).
Each decant variant is linked to that master SKU with a usage rule — e.g. a 2 ml variant consumes 2 ml, a 10 ml variant consumes 10 ml.
When someone buys 5 × 10 ml, Sumtracker automatically deducts 50 ml from the main stock.
When the remaining volume reaches 0, it automatically marks all variants as out of stock so you can’t oversell.
It’s a neat solution because you still list all your decant sizes as separate variants for customers, but behind the scenes they’re all pulling from one inventory pool. That means no manual maths and no risk of overselling when the bottle runs out.