{"id":2269,"date":"2026-08-16T09:00:00","date_gmt":"2026-08-16T06:00:00","guid":{"rendered":"https:\/\/presta.site\/blog\/?p=2269"},"modified":"2026-08-26T17:05:16","modified_gmt":"2026-08-26T14:05:16","slug":"cart-page","status":"publish","type":"post","link":"https:\/\/presta.site\/blog\/en\/cart-page\/","title":{"rendered":"Cart Page Confirms the Order &#8211; It Doesn&#8217;t Re-Sell It"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Add to cart worked. Then the <strong>cart page<\/strong> loaded a second storefront: two promo bars, a coupon field screaming before the total, &#8220;complete the look&#8221; pushing Checkout below the fold. They already picked. You are trying to sell them again. That is how you talk people out of an order they were ready to confirm.<\/p>\n\n\n<!--more-->\n\n<!-- series-nav:conversion:start -->\n\n<p class=\"series-nav series-nav-top wp-block-paragraph\"><em>Part 4 of <a href=\"https:\/\/presta.site\/blog\/en\/conversion-page-by-page\/\">Conversion, page by page<\/a> &#8211; full plan<\/em><\/p>\n\n<!-- series-nav:conversion:end -->\n\n\n<p class=\"wp-block-paragraph\">Nielsen Norman Group&#8217;s <a href=\"https:\/\/www.nngroup.com\/articles\/shopping-cart\/\" target=\"_blank\" rel=\"noopener noreferrer\">shopping cart research<\/a> treats the cart as the page where shoppers make the final purchase decision &#8211; a dressing room, not a second catalog. Same split we use in this series: the <a href=\"https:\/\/presta.site\/blog\/en\/what-should-be-on-a-product-page\/\">product page decides<\/a>. The cart page confirms. Checkout finishes. Mix those jobs and the shopper has to re-decide with a worse layout.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A cart page confirms &#8211; it does not re-open the sale<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">They put something in the bag. The <strong>cart page<\/strong> has one job: show the right items, the right money, and a clear next step. It is a receipt in progress. It is not another homepage, not another PDP, not a place to &#8220;maximize AOV&#8221; on top of a person who already said yes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Everything that is not items, quantities, totals, or Checkout is optional. Optional belongs below the confirm line. If Checkout is competing with a carousel, you already picked the carousel.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-vs-resell.png\" alt=\"Cart page that confirms the order vs a cart that tries to re-sell\" class=\"wp-image-2278\" srcset=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-vs-resell.png 1536w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-vs-resell-300x200.png 300w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-vs-resell-1024x683.png 1024w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-vs-resell-768x512.png 768w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-vs-resell-945x630.png 945w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-vs-resell-1320x880.png 1320w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What belongs before Checkout<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Protect only what lets them say &#8220;yes, that&#8217;s it&#8221;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The line they think they added.<\/strong> Thumb, name, variant &#8211; matching the PDP, not a generic placeholder. Mini-cart said &#8220;Blue \/ M&#8221; and the full cart shows a different combo: that is a new decision, not a confirm.<\/li>\n<li><strong>Quantity they can fix.<\/strong> Up, down, and out. A selector that cannot hit zero, or a dropdown to 99, is friction wearing a cart costume.<\/li>\n<li><strong>Line money that matches the click.<\/strong> If the product page said \u20ac47.90 and the cart says \u20ac52.90 with no line of why, they do not need an upsell. They need an explanation or a correction.<\/li>\n<li><strong>Shipping and tax honesty, or a clear &#8220;calculated next.&#8221;<\/strong> Hidden freight after they committed is how confirm turns into suspicion.<\/li>\n<li><strong>Checkout, visible without a scavenger hunt.<\/strong> One primary button. Not a row of equal buttons for &#8220;continue shopping,&#8221; &#8220;save for later,&#8221; and &#8220;apply coupon&#8221; all shouting at the same size.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A coupon field can exist. It does not get to be the loudest thing on the page. Put it quiet, under the totals, for people who came with a code. Do not make everyone play discount-hunt before they can pay.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What turns confirm into re-sell<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The pattern we keep seeing is a cart that loaded every leftover module from the rest of the shop. On one store the full cart had two announcement strips, a free-shipping bar that contradicted the totals, and a &#8220;complete the look&#8221; row above Checkout &#8211; so the actual line items started after a second catalog. Usual damage:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cross-sells above Checkout.<\/strong> &#8220;You may also like&#8221; in the thumb zone while the bag they already chose is still negotiating for space. Above Checkout those rows are exit ramps. The useful place for them is not this page &#8211; see below.<\/li>\n<li><strong>Promo stack before the receipt.<\/strong> Announcement plus sale plus newsletter chrome, copied from the header, eating the first screen. The cart did not need a billboard.<\/li>\n<li><strong>Trust wallpaper repeating the PDP.<\/strong> Payment logos and badge rows they already scrolled past on the product. Nervous chrome does not confirm a line item.<\/li>\n<li><strong>A second essay.<\/strong> Shipping policy, returns novel, SEO block under the title. The cart is not a landing page.<\/li>\n<li><strong>Popups on a page that should feel like a receipt.<\/strong> Email capture on the cart is you asking for a date while they are trying to check the size.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Pressure copy belongs in the same bucket. If the page is shouting, it is not confirming. Fix the job, then argue about urgency elsewhere &#8211; this series is about which page does which work.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-resell-tags.png\" alt=\"Cart page with confirm blocks tagged vs re-sell blocks tagged\" class=\"wp-image-2279\" srcset=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-resell-tags.png 1536w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-resell-tags-300x200.png 300w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-resell-tags-1024x683.png 1024w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-resell-tags-768x512.png 768w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-resell-tags-945x630.png 945w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2026\/08\/cart-page-confirm-resell-tags-1320x880.png 1320w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Where the extra offers belong<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cross-sells, &#8220;complete the look&#8221;, a warranty add-on, a newsletter grab &#8211; those can earn money. They are not the villain. The <strong>cart page<\/strong> is the wrong room for them. The shopper already picked a line. You are asking them to re-open the sale while they are trying to check the size and the total.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Put the extra pitch where a new decision is supposed to happen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>On the product page,<\/strong> while they are still choosing. Accessories, bundles, &#8220;goes with this&#8221; &#8211; that is the page that decides, not the receipt.<\/li>\n<li><strong>After they have paid.<\/strong> Thank-you page, packing slip, a follow-up mail. They confirmed this order. Now you can suggest the next thing without talking them out of Checkout.<\/li>\n<li><strong>When they come back.<\/strong> Account, reorder, &#8220;buy it again&#8221; with a related SKU. That is a later session, not this one.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If a related-products row has to stay on the cart URL, put it under Checkout, quiet, after the confirm line. Do not copy the same carousel into checkout. That page has its own job &#8211; the next spoke in this series.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The money line has to be boring<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Subtotal, extras, total &#8211; one stack, one place. If the number jumps between mini-cart, the cart page, and the first checkout step, no carousel will save the session. People abandon when the receipt lies, not when you forgot a progress bar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If shipping cannot be known yet, say that in one line next to the total. Do not leave a fake &#8220;free&#8221; that dies on the next page.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Keep the lines the law still needs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cleaning re-sell off the cart does not mean deleting the price stack. In some markets those lines are not optional chrome. Do the legal pass first, then cut the carousel. This is not legal advice &#8211; if you sell into those markets, have counsel read your cart and checkout. The UX point is simpler: a required total is confirm work. A &#8220;complete the look&#8221; row is not.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Germany is the example most merchants mean. Distance-selling shops must say that prices include VAT (and other price parts) and whether freight or shipping will be added &#8211; <a href=\"https:\/\/www.gesetze-im-internet.de\/pangv_2022\/__6.html\" target=\"_blank\" rel=\"noopener noreferrer\">Preisangabenverordnung \u00a7 6<\/a>. When the amount can reasonably be calculated in advance, the law wants the height of those costs, not a vague &#8220;plus shipping.&#8221; German case law on the shopping cart is blunt about the same idea: once the shopper opens the basket, the actual shipping for <em>this<\/em> order belongs in the price breakdown. A &#8220;zzgl. Versandkosten&#8221; hint on the product is not a substitute for that line in the cart.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The famous German &#8220;Button-L\u00f6sung&#8221; is the next page, not this one. <a href=\"https:\/\/www.gesetze-im-internet.de\/bgb\/__312j.html\" target=\"_blank\" rel=\"noopener noreferrer\">BGB \u00a7 312j<\/a> wants the total including taxes and shipping, clearly, immediately before the order, and a button that says the click is a payment &#8211; not a pretty &#8220;Checkout&#8221; that hides the obligation. Strip the cart and then fail that summary and you did not simplify anything. You moved the fine into checkout.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The rest of the EU is not a free-for-all either. The <a href=\"https:\/\/eur-lex.europa.eu\/legal-content\/EN\/TXT\/?uri=CELEX:32011L0083\" target=\"_blank\" rel=\"noopener noreferrer\">Consumer Rights Directive<\/a> already requires a total price and delivery costs when they can be calculated, and it bans extra paid add-ons unless the shopper expressly agrees. Pre-ticked insurance, wrapping, or &#8220;add protection&#8221; is not consent &#8211; they have to opt in. The UK kept that extra-payment rule after Brexit. Same cleanup: keep the honest total, kill the silent extra.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mobile: same job, less room<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The cart page does the same job on a phone. First screen: items, money, Checkout. You already fought the desktop dump on the <a href=\"https:\/\/presta.site\/blog\/en\/mobile-product-page\/\">mobile product page<\/a>. Do not dump the homepage into the cart the minute they tap Add to cart. Related products, promo strips, and a tall coupon widget that push Checkout off the first thumb-scroll are the same stacking bug with a different URL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hand-off, not a fake checkout<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Address, payment, account walls belong on checkout &#8211; the next spoke, not this one. A cart page that asks for a card is confused about which page it is. Confirm here. Finish there.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Work this with your AI agent<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do not ask an agent to &#8220;improve cart UX.&#8221; Feed it the cart page and make it sort confirm from re-sell.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What to paste:<\/strong> the cart HTML, or two screenshots (desktop + phone), plus the price the shopper just saw on the product page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prompt 1 &#8211; block order.<\/strong> &#8220;List every block on this cart from top to bottom. Tag each one confirm (items, quantity, money, Checkout, legally required tax\/shipping\/total lines) or re-sell (offers, promo, extra chrome). Propose a new order with Checkout above every re-sell block. Do not add features. Do not delete required price lines.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prompt 2 &#8211; money line.<\/strong> &#8220;Here is the cart totals HTML and here is the PDP price the shopper saw. Flag mismatches, hidden extras, and fake free shipping. Rewrite the totals block as one short, boring stack.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Good output:<\/strong> a checklist you can hand to a theme or a developer &#8211; move X below Checkout, delete Y, fix Z on the money line. Not an essay about abandonment rates.<\/p>\n\n\n\n<!-- series-nav:conversion:bottom:start -->\n\n<div class=\"wp-block-group series-nav series-nav-bottom\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\"><p>This is part 4 of Conversion, page by page.<\/p><p>Previous: <a href=\"https:\/\/presta.site\/blog\/en\/mobile-product-page\/\">Your Mobile Product Page Isn&#8217;t Optimized &#8211; It&#8217;s a Desktop Page Shoved Into a Phone<\/a> \u00b7 Next: <a href=\"https:\/\/presta.site\/blog\/en\/checkout-form\/\">The more confusing the checkout form, the fewer buyers finish<\/a><\/p><\/div><\/div>\n\n<!-- series-nav:conversion:bottom:end -->\n","protected":false},"excerpt":{"rendered":"<p>The cart page confirms the order &#8211; it doesn&#8217;t re-sell it. Here&#8217;s what belongs before Checkout, and what talks people out of it.<\/p>\n","protected":false},"author":0,"featured_media":2047,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[297],"tags":[],"class_list":["post-2269","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-catalog-ux-seo"],"_links":{"self":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/2269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/comments?post=2269"}],"version-history":[{"count":9,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/2269\/revisions"}],"predecessor-version":[{"id":2399,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/2269\/revisions\/2399"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/media\/2047"}],"wp:attachment":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/media?parent=2269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/categories?post=2269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/tags?post=2269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}