Many online retailers allow you to add items to a basket prior to checkout.

Some of the big 'names' have a smart strategy that combine baskets and wishlists, and notify you on a future visit if an item in your basket has changed in price since you added it. That's something of an ideal which is rarely used by smaller retailers.

But more often, retailers often simply let the contents of the basket time out after say 24 hours of inactivity. I suspect often that is down to a few factors such as

  • implicit (or explicit) acceptance of a default setting on the e-commerce cart framework
  • lack of knowledge or consideration by the business
  • non communication between web developers and business

There may be some business rules that affect how long certain things are in the basket for - eg one off items no longer available, or there may be a benefit to logging in or registering in that the basket is retained for longer when logged in.

My instinct is that basket contents should remain more or less indefinitely, but I feel there must be other considerations that might affect the UX and that it's not as simple as that.

Given that type of product does not dictate length of time in basket, and irrespective of being logged in or not, how long should basket contents remain before it is automatically cleared.

10 Answers 10


I can see no real functional reason to clear a basket automatically.

Basket should have a function to clear old(er) items. A "select all" on the list of items in the basket and "remove from basket" action would suffice for that.

Other than that there should be warnings on price changes as Amazon does. And of course there should be a warning when an item in the basket can no longer be ordered/fulfilled. Would be nice if the latter could be accompanied with (link to) an offering of alternative products.

  • 1
    +1 clearing baskets is regularly annoying, and never useful.
    – JohnGB
    Commented Apr 22, 2013 at 19:23

This is tricky, because you have a variety of different scenarios for when automatically clearing items is a great idea and probably just as many for when it’s not. Personally I agree that it shouldn’t be cleared. I’ve been surprised when visiting the same site again to find items in my cart that I didn’t remove by myself. But that’s just me — and the items in the shopping cart six months later were not at all valid. Fun to see them as a time capsule of my own, but it wasn’t useful for the site (because I didn’t purchase them). I remember clearing the items, and continuing to shop other items. The point is that there is a “best before date” even in non-fresh items such as books or blue-rays’. At least for the users and their shopping behavior.

The user behavior online could be somewhat different than you’d expect running an e-commerce site:

Many consumers use the cart as a place to review and compare items before they purchase. Facilitate this activity by including thumbnail images of the selected items, and by ensuring product names in the cart link to more extensive descriptions. Customers should also be able to easily find and do all the basics in the cart: change and update quantities, remove items, proceed to checkout, and continue shopping. The "continue shopping" option should always take customers to the area of the site where they were most recently shopping--not to a page at a higher level than where they had previously drilled down to discover an item.

Reference: Increase Online Sales: A 10-Step Checklist

Users may even compare prices across the site with competitors’ sites, leaving a lot of unpurchased items in carts behind. That may be a minor problem, since you need to clear items before you can purchase them (if you had many in the carts from previous sessions). I guess that also could be corrected with checkboxes and a “Delete selected” button.

I’ve also seen carts where you can sign in “at a later time” and start adding items as an anonymous user. If that’s the case, and the user leaves the items in the cart, the only way you can store items is using a cookie. That way it’s possible to add the items in the cart again, when that user returns. But if the same user returns to the site with another browser or another device (not uncommon), that method would fail. But if you are a signed in user, that’s another story. Users are aware that they are signed in and expect to find the e-commerce site the way they left it, with items in the cart if they added them there.

So this issue really boils down to whether or not a user is signed in or not. Even though I have no proof of this I would leave items in the cart for signed in users at least six months and maybe as long as to infinity.

For anonymous users I would clear the cart at the latest when they closed the browser.

  • 1
    +1 for bringing up the alternate use of carts (comparisons).
    – rk.
    Commented Apr 23, 2013 at 14:26

If you're clearing out the user basket after a set amount of time that likely means you're holding the information in the browser session and not against the user profile. That would cause one particular issue that I can think of - what if the transaction starts on one device but completes on another?

Take this scenario

  • User is out to lunch at work and browsing on her iPhone in a coffee shop on the free wifi when she finds a CD she has been after on the Amazon website.
  • She adds it to her basket but doesn't really want to commit to paying for it because she doesn't trust the security of this WiFi so she leaves it in the basket and heads back to work.
  • Back at the office she logs back onto the website on her work machine and wants to finish the purchase.

If the basket contents are held in the browser session then she can't complete this without starting the whole transaction again. However if it's associated with her account then she could realistically still have that content in the basket ready for her to just pay for it and get back on with her work.

It's not an unrealistic scenario. Even if you do tie it to the user profile and not the browser session if you were to clear out the basket then she'd have to start again anyway.

Work on the assumption that, if a user put something in their basket then they did that conciously as a choice. She can choose to remove it from her basket if she chooses, or can choose to leave it there for as long as she wants. However that's her choice; if you start removing stuff from the basket for her then that's taken the decision and action out of her hands.

You wouldn't follow someone around in Tesco / Walmart and then after 20 minutes if they haven't gone to pay yet take their basket off them and get them to start again, why do it online?

You can still leave the content in the persons basket but re-calculate the order at the point they choose to pay. It's not like it's physical stuff sat their stopping other people buying it. Let the user decide if they want to abandon it or not. Even if they never come back and have added everything in the shop to their basket, it shouldn't really matter until they come to try to buy it all. That is when you can determine what to do with the contents.

  • 20 minutes is thrown in as an extreme case there just to make a point, but (just to play devil's advocate), if there's a trolley of shopping hanging around the aisle when Tesco closes for the day, then it's fair to assume it's been abandoned and the items can be re-shelved/discarded rather than waiting for the shopper to come back the next day. Commented Apr 23, 2013 at 14:43
  • 1
    @RogerAttrill yes, but Tesco closes for the day. Amazon does not close, it's always open so the idea of abandonment is different.
    – JonW
    Commented Apr 23, 2013 at 14:45
  • different, but not necessarily entirely absent. Baskets definitely do get abandoned online. Commented Apr 23, 2013 at 14:53
  • @RogerAttrill But why does it matter if it's abandoned? You can still leave the content in the persons basket but re-calculate the order at the point they choose to pay. It's not like it's physical stuff sat their stopping other people buying it. Let the user decide if they want to abandon it or not
    – JonW
    Commented Apr 23, 2013 at 15:28
  • As I mentioned in the question, I instinctively agree but am concerned that leaving items in the basket indefinitely could in some ways be bad ux. However, I'm concluding that in order to mitigate whatever way it might be bad to find stuff in your basket when you return months later, then the basket interaction should be 'managed' in order to easily and efficiently deal with the case of being uninterested, partly interested or completely interested in the contents of that basket. i.e. infinite timeout on baskets is not a standalone solution. Commented Apr 23, 2013 at 16:07

I suggest not clearing the basket. You don't know what people store there.

However, once I visited a site -- after couple of months -- and was very surprised that the site remembered me, because I didn't remembered this site. However, after that, I added some things to the cart, ok, let's pay... And I almost paid for the things I'd put before, that I forgot.

I propose that after some period of user inactivity, say 12 hours, when user opens the page, you show them a message like "Welcome back, you have some products in your cart awaiting since your last visit. [ Open cart ] [ Empty cart ] [ Continue shopping (close) ]".


An important consideration here is stock allocation.

There's usually a finite amount of stock available so allocating units to a customer while it's in their basket is the only sane way to ensure you avoid a poor 'no longer in stock' at checkout. On the flip side, you don't want to have stock still allocated to a customer who at that point in time is unlikely to purchase.

At a flash sales site our stock allocation period was 10 minutes, with the user clearly shown a countdown clock in their basket popover. Another retailer did as you suggest: drop the items into a wish list after one hour of inactivity.

How strong of an intent to buy is having an item in your basket? For the flash sales site we seen visitors would dump loads of items there just so no-one else could get their hands on them. Other behaviour was using it as an easy wish list, coming back days after to ultimately purchase the items.

Your operations manager is a key stakeholder here. They'll likely have stock turn KPIs (how long a unit should be in the warehouse before being sold). Perhaps there's also a mixture of stock holding types: bought stock, sale or return or consignment. Are back-orders supported, or is the in stock level the only stock that's available.

In summary it's a balance unique to your model and customer behaviour. Observe how users use their baskets, time to checkout, and hit a sweet spot of stock allocation duration with your ops manager.


While clearing the basket without user knowledge is a bad idea, user still may not want to order items placed in basket before. I would suggest placing three sections in basket view:

  • items added by user during the current session
  • items added by user previously which are available
  • items added by user previously which are unavailable at the moment followed by information what user can do about them: find replacement products or wait for these products to be available again.

User should be able to check off what he/she wants to order from this view. He should be also able to remove the obsolete items from the basket (as in case of each of the products in basket, actually). It would be great also to let him leave the products in basket without ordering them now, just for them to be there during the next checkout.


Rationed items are often cleared in less than 15 minutes.

An example is booking an airline seat or a theater seat. Your shopping cart will, in effect, lock a real seat until you either explicitly cancel the item, buy it, or the system takes it out of your cart and puts it back in inventory.

Denial of service attacks against rationed items make it essential that carts do not remain hanging. Otherwise, I could, simply by opening many browser sessions (or hiring a bot net) prevent an airline from selling any seats at all.

Non rationed items are not usually subject to such a constraint. If I only have 1 of it it stock, I may allow a dozen carts to "buy" it knowing:

a) most of those carts will be abandoned

b) if two or more do buy it, I can get more from my supplier overnight (or, for customer service bonus points) substitute a more expensive item.

Basically: if you are selling things in short supply that are not fungible, you need to empty carts automatically.

  • "cleared"? Do you mean "made available to other customers but left in the basket until it's sold to someone else" Commented Jun 14, 2019 at 10:29

From a UX perspective, it may be best to leave the basket indefinitely. But from a sales perspective, maybe the knowledge that it will time out triggers some kind of urgency in the shopper. (Sort of like entering a store 10 minutes before closing time.)

There is a risk of confusion and surprise if the user discovers items in the basket that they don't remember putting there. Or worse, they assume the basket has been cleared, they go and select the same items as their last visit, and end up buying duplicates. (This has very nearly happened to me).


I feel that the best option is to place a cookie which always saves and refills the shopping cart the same way, regardless of being logged in or not. This way, different scenario's mentioned in other comments do not apply, except for a visitor which revisits on another device. In that case the only way is letting a login trigger the cart/session which was left in the last login. I do not know of a solution for the cross-device retrieval of non-logged in abandoned carts.

I think it's safe to say that a revisit after 3 months means the visitors intent to use his previous cart is not longer present. But this is open for discussion. What's the worst thing that could happen if you make it "infinite"? That a visitor gets reminded of a previously selected, unbought item? I think I would only be surprised, or forget that I've selected the items after years to be honest. The possible surprise could be prevented by making it directly visible with a filled-cart-icon or short notification.


It can be useful to empty a cart after a period of time.


I am not a regular visitor to your site, but three months ago I put a book in my cart. I never bought it but also never emptied my cart.

I come back, forgetting I had even considered buying the book. I add something to my cart, and quickly proceed to checkout and don't carefully read the subsequent pages--why would I? I just added one thing to my cart, click click done.

Three days later I get a parcel in the mail and I've got two things in the box, and I realize I bought something I didn't mean to. I actually read the invoice and see I paid for something I didn't really intend to.

Yes, it is the user's fault for not verifying the total and the cart contents before checking out. However, some sites, like Amazon for example, have one-click payment, which makes express checkout very easy. Users also do not read, especially when they believe they already know the state of the system.


Review your transaction data and determine how "stale" abandoned carts are. Review any returns or customer feedback regarding complaints about receiving goods they didn't intend to order.

If you find that a measurable number of items were purchased after being in the cart for longer than a certain length of time, and you find that these items are likely to be returned, then schedule carts to expire shortly before that time.

Inform the user when adding items to cart that they will remain there for 30 days (or whatever length of time your data indicates). Give the user the option to optionally save to a "wish list" that has no timeout. Or even better, inform them that after 30 days, items in cart will be automatically moved to a "wish list".

Upon checkout, if any items in the cart pre-date the current session (meaning the user didn't add them to the cart this session) make a very clear, but polite, message to the user that alerts them to this fact. Make it very easy to remove the older item or move to "wish list" so they can either continue or remove and continue without much disruption.


Items in a cart should expire after a period of time (weeks or months) while still maintaining an audit trail so the user can still find them if they want to. Any checkout process should alert the user that their cart contains items from a previous session to guard against accidental purchase of items the user might not realize were persisted in the cart from a previous session.

Each e-commerce site is different, so look to sales data to determine the cart's expiration date.

  • My inclination would be, when adding something to a cart that has been idle for more than 24 hours, would probably be to have the cart list the older items highlighted, with options to confirm or reject them individually, as well as options to confirm or reject all items that hadn't been individually confirmed or rejected. Don't allow the user to check out without confirming or rejecting old items.
    – supercat
    Commented Dec 18, 2013 at 0:18
  • Not logical. You assume emptying the cart is the best way to mitigate them, that there’s benefit to clearing it after weeks or months that couldn’t be handled some other way, The basics must be covered, you don’t want to mislead the customer discontinued items are still available, you need the right heuristics coordinated throughout the pipeline to best handle aging with respect to other issues as well, maybe hard allocations for example. Its their data, just like an office document. If it has to be mucked with for unavoidable reasons fine, but minimize mucking with their document. Commented Nov 7, 2018 at 5:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.