I have an e-commerce web app where you can choose among multiple time slots for your delivery. There are some rules that depend on when the purchase is completed.
For instance, if I purchase something before 2:00 PM, I'm able to select same-day delivery.
Some customers might select same-day delivery when it's 1:55 PM, but as they continue through the checkout process, the 2:00 PM deadline is met, so their purchase is rejected.
How should I handle this situation?
Currently, whenever the user reaches the "select delivery time" step of the checkout process, backend sends all the possible time slots, according to the business logic at that moment.
I have a few ideas on mind (like allowing a 10-minute "grace period", or giving a detailed explanation when the purchase fails do to this reason), but since this seems to be a common problem, I would rather use an existing solution than re-inventing the wheel.
This is a good finding and I appreciate considering a solution for your users. I had this issue with food ordering apps that were allowing me to order some food from a restaurant that closed at the same time I placed my order and as I was waiting for my ordered I got called and announced that the food won't be delivered.
You could move the time slot to the last step to minimise the time period from order start to order finish.
Another solution would be to disable the 2:00 delivery if the order is made from 13:45 on.
In this situation, the offer of the same day delivery is an 'exploding offer'. In other words once the time runs out the offer is no longer available.
To communicate clearly:
- In the case where the user is at risk for a rejected same day delivery, you will need to warn the user of the remaining time left. When this is not a risk, this is less critical. How long does the form take on avg.? If user has 5 mins to fill out the whole form, it's possible you could have something like a a count down clock, within a non-modal dialogue. When the time passes, the user could be interrupted and asked to select a new delivery time, while keeping the remaining form saved in state. The Same day option is now removed, or disabled out with an explanation the time has expired.
In order to prevent rework:
- In the case where the user is at risk and loses the time slot they have selected, you will want to save any unaffected information in the form so that the user doesn't have to fill out portions of the form again. EG: Don't make them refill the shipping destination again.
- like your suggestion above. It makes sense if the user will not have enough time to complete the form, to remove the option entirely. If it takes the user 5 mins to complete the form, and the offer will expire within 4 mins when the user logs in, there is no need to display this option at all...or if the option is disabled, explain here it's too late in the day to opt for same day delivery.