Grind on demand at cart, how do you avoid per-grind SKU explosion?
The wrong way: create one SKU per grind size per bag (e.g. ethiopia-yirgacheffe-whole-bean, ethiopia-yirgacheffe-espresso, ethiopia-yirgacheffe-drip). At 6 grind sizes × 50 SKUs you have a 300-SKU catalog masquerading as 50.
The right way on Magento:
- One SKU per bag,
ethiopia-yirgacheffe-12oz. Whole bean is the default state. - Custom option at cart step, grind size dropdown: Whole bean (default), Espresso (fine), Drip (medium-fine), Pour-over / V60 (medium), French press (coarse), Aeropress (medium-fine), Cold brew (extra-coarse).
- Option passes through to the order line item, appears on the order in admin, on the customer’s confirmation email, and crucially on the roaster pick list (so the production team grinds correctly).
- Subscription customers can change grind mid-cycle, the ReCharge customer portal exposes the grind option, so “switching to a new espresso machine” doesn’t mean canceling.
Magento custom options handle this with zero extension cost. No SKU explosion, no duplicate product entries, no analytics fragmentation. The grind selection lives on the cart item, not on the catalog. This is the pattern Counter Culture, Sey, and Onyx all run.