What breaks
Cannot add items to shopping cart: find the rule
The shopper presses Add to cart and the cart stays the same, or a line says the item is not available. This page shows how to find which rule refuses the add, and what a simulated visitor adds.
Why can't I add items to my shopping cart?
The cart refuses an item when a rule says no: the chosen size is sold out, the store caps how many can go in one order, a saved cart holds an item that cannot be combined with the new one, or the item does not ship to the shopper's region. Open a private window with an empty cart and add the same item. If it works there, the rule lives in the cart saved in your normal browser, and if it fails there too, the rule is in your product settings. A simulated test shows the message a first-time shopper sees and where it appears.
What this looks like in a report
“The Add to cart button went grey after my second tap, and a line said Limit 2 per order. I did not know whether the other items in my cart were the problem, so I gave up.”
The fix. Cap the quantity selector at the per-order limit, and show 'Limit 2 per order' under the selector before the click. When an add is refused, return the reason from the server and show it beside the button, then test one add above the limit.
An illustration. Run a test to see your own.See a real sample report
The click gets an answer, and the answer is no
The shopper presses Add to cart and the cart refuses without moving. The refusal can come from a rule the shopper never saw: the size has two left, the store caps each order at a set number, or a subscription already in the cart blocks a one-time purchase. Some stores print that rule in small text under the button. Many show nothing but the same button, so the shopper assumes the site is broken. An owner who adds the item from an admin login, with an empty cart and no history, never meets the rule, so the owner's test passes while the shopper is stopped.
- Does the add fail on the first press, with the same quantity, in a private window with an empty cart?
- Does the refusal name a rule, such as stock or a limit, or only say the item is unavailable?
- Does the quantity selector allow a number above the store's per-order limit?
- Is a subscription, pre-order or item for another region already sitting in this browser's cart?
- Does the add request return a status code and a reason in its response body?
Five rules that can refuse an add, and what each one looks like
Stock is counted per variant. A medium shirt can be sold out while the large sits on the shelf, and the add fails on the variant the shopper chose. A per-order limit caps the quantity no matter how much stock is left, which is common with bulk goods such as paper. A per-customer limit counts past orders on the same account or address, so a shopper who bought last month can be refused today.
A shipping restriction blocks an item from going to a region. Some stores check it at the add, and others only at checkout, so the same item can pass one step and fail the other. A pairing rule blocks a subscription and a one-time purchase in one cart, or a pre-order and an in-stock item. A well built store says which rule fired. A poorly built one says nothing, and the shopper has no way to tell the rules apart.
A private window separates a saved cart from a product rule
Open a private window, sign out of anything you are signed into, and add the same item at the same quantity with an empty cart. If the add works there, the cause sits in the cart saved in your normal browser, such as a subscription, a pre-order or an item that ships somewhere else. Empty that cart on its own page and try again. If the add is refused in the private window too, the cause is the product rule, so check the variant's stock and the quantity limit in your product settings.
Then read the add request in the Network tab. The response body usually carries the reason as a code or a sentence, such as out of stock or limit reached. Copy the text exactly. A developer can search for those words in the store's code, and the same words make a precise prompt for a coding agent. A plain message on screen can hide a reason the server had.
Owner test accounts skip the per-customer limit
An admin login has order history of its own, or none, and a cart you emptied last week carries none, so a per-customer limit rarely fires for you. A new visitor arrives with no history, so a run reaches the stock and per-order rules a first-time shopper meets. A per-customer limit only fires for a shopper with past orders, which means a visitor signed in with a test account you give it, and that takes paid credits. Every run records the message it saw and a screenshot of the product page at that moment.
What you get with Mimiq
- 01
Run it by hand, or on every pull request
Paste a link and a task in the app and watch the visitors work. Or run them on every preview deploy: the GitHub Action comments on the pull request, any other CI can call the MCP endpoint, and your coding agent can run it too.
- 02
Bugs and usability problems in one report
The browser records errors and failed or slow requests on the step they happened. The visitors say where the wording or the steps confused them, and where they left.
- 03
Visitors that behave like your audience
Each visitor is a different profile with a reason to be there, matched to who the page is for, described by you, or built from your own customers.
- 04
A prompt to fix each problem
Every problem comes with a fix to paste into Cursor, Claude Code, Lovable or any coding agent, and one prompt hands over the top problems at once. Then send the same visitors through again.
- 05
Follow every visitor
See each visitor's whole path, step by step with screenshots, and what it was thinking at every step. Ask any visitor a question.
The browser records relevant JavaScript errors and failed or slow app requests encountered during the run, attached to the step where they occurred. The visitors are simulated: they find problems, they do not predict how many real people will convert.
A restock that ends early can refuse the same item again
A restock that sells out early, a new per-order limit or a shipping rule added for one region can refuse the same item again, with no change to the page. Rerun the same shopper after each stock or rule change and compare the message they saw. With paid credits, visitors can also open a protected preview, so each deploy gets the same run before a launch.
Starter
Try it on one launch
About 4 tests of 5 visitors
- Visitors on your landing page, signup and checkout
- Where they left and why, with a fix to copy for each problem
- Run it in the app or on every pull request
- Ask any visitor a question, included
- Test accounts and protected previews
Builder
Test every build
About 20 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Pro
Test every release, as a team
About 60 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Scale
Test at scale, every day
About 240 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Priority support
- Cancel anytime
Questions
Why does the item add on my phone but not on my laptop?
Usually the two browsers hold different carts. A cart saved in one browser from an earlier visit can carry an item that conflicts with the new one, such as a subscription. Clear the cart in both browsers, add the item in each, and read the message if one appears.
Can a test tell me my real stock count?
No. It shows the message a shopper saw when the add was refused, such as sold out or limit reached, and where that message appeared. The stock count stays in your product admin or inventory system. A test also does not predict how many shoppers will want the item.
Does the test buy the item?
No. The visitor adds the item, opens the cart and stops there. A cart test never reaches the payment step, because visitors cannot pay with a real card. If the add works and the order fails later, use the checkout test, which goes as far as the payment step.
What if the store only says something went wrong?
Then the store hides the reason from the shopper, and the test shows that too. Ask a developer to log the refusal reason on the server and return it in the response, even if the shopper still sees a plain message. The plain message can stay once the reason is in your logs.
Keep reading
Send visitors and see what breaks first.
Your first test is free: sign in with Google and it starts right away. Last checked 2026-11-02.