Audience suggestion that since whether adding a product creates a new cart item or increases an existing one differs by business (B2B, build-to-order, custom printing), 'add item' should expose two distinct methods. Rafael's answer: internally Spree's service object already has both private paths, just one public entry point. A cleaner solution (analogous to Spree's guest-cart-to-user merge-vs-replace strategies) is to ship two implementations as the default service objects and let users pick via dependency injection configuration — or call the other service object directly if they don't use the standard endpoint.