openfoodfoundation / wishlist

This repository welcomes ideas and suggestions to improve the OFN software.
3 stars 0 forks source link

Allow shop managers to set a minimum order amount value #254

Open audez opened 2 years ago

audez commented 2 years ago

What is the need / problem?

Some shops want to set a minimum order amount value, as orders received below this value may not be profitable. (see #253 ) Some other shops want to set up a minimum order value from which they accept Stripe payments, as it wouldn’t be interesting to pay Stripe fees under these amounts.

Which type of users does this problem affect (and how many, if known)?

Shoppers Hub Managers (MCFEs) Producers

Potential solutions that will solve the problem?

In the Enterprise settings, add an option to apply a minimum order value to all orders or to specific payment methods (Stripe, Paypal...) For ex it could look like this: Screen Shot 2022-08-02 at 18 44 46

If the manager chooses to apply the threshold to all orders: the minimum order amount is communicated clearly to customers in the shopfront. If the customer tries to checkout with a cart below this value, they're reminded of the minimum value requirement and redirected to the shopfront.

If the manager chooses to apply the threshold to one or several payment methods, and the customer tries to checkout with a cart below this threshold, these payment types will be disabled and information will be provided to explain why.

Connected wishlist and discovery discussions

Slack discussions: https://openfoodnetwork.slack.com/archives/CG7NJ966B/p1655738772923509 https://openfoodnetwork.slack.com/archives/CG7NJ966B/p1659433999750909

Issues: https://github.com/openfoodfoundation/wishlist/issues/253 https://github.com/openfoodfoundation/wishlist/issues/121

Discourse: https://community.openfoodnetwork.org/t/shops-can-require-a-minimum-spend-before-customers-can-checkout/1350 https://community.openfoodnetwork.org/t/minimum-orders/542

Additional context

The actual workaround is to offer the shop manager to add fees on the payment or shipping methods, using the Price Sack calculator, for orders under a certain value (eg you can add a 50c charge for orders under 5€). This is not exactly answering the need though, as ordering below the threshold is still possible, and it increases the price of orders.

Furthermore, in certain countries (France, Belgium, UK...), adding a fee to a specific payment method is illegal. So the shop manager will have to add the fees to all payment methods, which can be tedious and will impact customers that were not targeted. On the contrary there’s no problem to limit the use of certain means of payment to a minimum amount.

tschumilas commented 2 years ago

We have users who have wanted a minimum order amount for a long time - and who find the price sac fee doesn't quite do what they need. So I"m happy to see this. One question/discussion point - is it better that the option for minimum order amount is applied at the enterprise level (so then it would apply to all shops the enterprise opens), or could it apply at the OC (shopfront) level? That way, an enterprise might have one shop open with minimum spend, but another shop open for different products, without minimum spend.... Most enterprises here use multiple shops for various reasons.... Having the minimum apply here (like fees ) seems more flexibile to me.

lin-d-hop commented 2 years ago

This will need some solid inception and design as it impacts the checkout process - another reason that I deeply encourage the use of price sacks as much as possible since this is an existing, tested, albeit imperfect feature.

@tschumilas Please could you add your specifics as to exactly which cases the price sack calc doesn't work for your users. That will help the inception process. Please explain as if you were talking to a 5yr old with adhd ;)

Agree that this should apply on OC level. I actually think that after we get Backoffice Uplift Products released the next redesign should be for Order Cycles with a big level up that makes this kind of feature easier to implement.

audez commented 2 years ago

Hi @tschumilas and @lin-d-hop, glad to read your inputs! Actually when i wrote "Enterprise" in the issue, i meant "Shop/Hub/Profile". I was thinking it could appear in the "Shop preferences" tab, or maybe in a new tab in the shop settings. I too thought it should be at the shop level so it can be tuned independently for each shop -- But as far as I understand you say it should be at the OC level: do you mean that it would be possible to choose the minimal amount when creating a new OC? It sounds good too. As a disadvantage I see that the manager would have to choose it for every new OC, instead of setting it once if it's at the shop level. I think that for the minimal order amount for Stripe payments, the need was to set it at the shop level. But maybe that's different for other users?

I also have a question for the hubs: how to handle suppliers that are selling through a hub and want to set a minimal order amount? We could advise them to find an agreement with the hub coordinator?

And a last thought: we're adressing the minimal values for individual orders amounts (ie each order must be above 5€). The idea is to block the checkout for a specific customer if their order didn't reach the threshold. But it could also be possible to handle the minimal amount values for the total orders amount (ie the producer will accept to deliver only if the value of all customers' orders is above 100€). This case is much more complicated as you have to warn the customers at the end of the OC if the threshold has not been reached. I know other apps that do this, but I guess we're not going there?

lin-d-hop commented 2 years ago

@audez you are starting ot get into the complexity that is the reason this feature hasn't been delivered :)

For sure the producer side of this is out of scope. This will need a totally different inception process.

Inception required:

Given that this impact checkout once the wireframe inception is agreed for the shopper experience I would say we should get some design on it before development.

tschumilas commented 2 years ago

The reason price sac doesn't work for our users - is that price sac adds/removes an amount when an order is over/below a set amount. So (real example with my own shop). I have a wholesale shop. I want all orders to be at least $200. If a customer's order comes to $150 - I want their order total to be adjusted to my minimum - $200. (or block their checkout perhaps.) Price sac doesn't do this. If I set price sac to add $50 to every order under $200 - then a customer checking out with $190 in their cart ends up with an order total of $240. But I don't want to penalize them like this - I just want their $190 order to adjust to my minimum.

Is there a way we can do a different fee calculation to accomplish this? Like if order total is less than x, make the order total = y.

I totally agree it would be nice to do with a fee if we could find a way.

lin-d-hop commented 1 year ago

Further inception questions:

tschumilas commented 1 year ago

I can respond for the use cases here - but welcome other thoughts of course Yes - a warning if buyer enters the checkout flow without the hub-specified minimum spend. And user cannot checkout if minimum is not reached. I don't think this needs to apply to subscriptions. Ideally it would apply to all carts and customers in an OC. I think a hub might have some stores where a min spend is required and others where it is not required. Ideally it would apply to BO orders placed in the affected OC also. Yes - happy that min spend is before shipping/payment fees are added. In taxes not included in prices instances, I assume the min spend is also before taxes are added As to vouchers - I'm not sure - I haven't used them yet. It also makes me think of the scenerio where a buyer reaches minimum spend and checks out. Then something n/a is removed from their order so their order is not below the minimum - what happens then? (Always more things to think about - eh?)

I'd be very happy if min spend only applied at checkout to the 'first' order total. So removing an item from the order in the bo would work. removing cost with a voucher would work. (at least thats my view)

_