Section Store Help CenterOpen Section Store

Cart drawer: support guide

Current answers on the cart drawer: blocks, rewards, multiple carts and errors.

Updated November 13, 2026

Checked against the app code on 2026-11-04.

What it is

The cart drawer is the cart that slides in from the side of the page when a shopper adds a product or clicks the cart icon. The shopper stays on the page they were on. They don't go to the theme's cart page.

Section Store's drawer replaces the theme's own drawer. The merchant builds it in the app, under the "Cart Drawer" menu item. It turns on through one app embed in the theme.

A drawer is built from blocks. The fixed parts are the header ("Top bar"), the product list ("Line items"), the "Subtotal", the "Checkout button" and the "Empty cart" view. The rest are optional blocks. A new cart shows many of them as cards, and "Add block" adds the others:

  • "Announcement": a short text band.
  • "Timer": a countdown ("Cart reserved for {{timer}}").
  • "Reward bar": a progress bar to free shipping, an order discount or free gifts.
  • "Banner": a promo card with a picture, heading, text and button.
  • "Products upsell": product picks inside the cart (AI recommendations or manual rules).
  • "Order addon": a one-product switch, like shipping protection.
  • "Order note": special instructions from the shopper.
  • "Discount code": a code box.
  • "Discount total": a line with the savings.
  • "Payment icons".
  • "Trust badges": icons for shipping, returns and secure payment.
  • "Express checkout": Shop Pay, PayPal, Apple Pay and Google Pay buttons.
  • "Custom HTML": the merchant's own HTML and CSS, in the body, the footer or the empty cart.

Reward bar rewards reach checkout through one Shopify automatic discount that Section Store creates. Its title in Shopify Discounts is "Section Store Cart".

A store can keep many carts. Only one is live at a time.

Words merchants use

Merchants call this feature many things:

  • "cart drawer", "side cart", "slide cart", "slide-out cart", "slide-in cart", "drawer cart", "mini cart", "flyout cart", "ajax cart", "popup cart", "sticky cart", "cart sidebar"
  • "free shipping bar", "shipping bar", "progress bar", "rewards bar", "tiered rewards", "spend X get Y", "unlock free shipping", "milestones"
  • "free gift in cart", "gift with purchase", "GWP", "auto-add gift"
  • "count after discount", "calculated after discount", "discounted total", "threshold after discount"
  • "cart upsell", "in-cart upsell", "cross-sell in cart", "you may also like", "recommended products in cart", "AI recommendations"
  • "shipping protection", "package protection", "order protection", "add-on in cart", "order addon", "order upsell"
  • "cart timer", "cart reserved", "countdown in cart"
  • "trust badges in cart", "payment icons in cart"
  • "Shop Pay button in cart", "PayPal in cart", "express checkout in cart", "wallet buttons"
  • "order note", "gift message", "special instructions"
  • "Section Store Cart" (the discount in Shopify Discounts)
  • "the theme's cart opens too", "two carts", "double drawer"

Not this feature: quantity breaks and deals on the product page (see the Bundles doc), product-page blocks like sticky add to cart (see the Conversion Blocks doc), and AI-built product pages (see the AI Pages doc).

Plan and pricing

  • Any store can create, edit and preview carts. That includes the template gallery, the screenshot import and the AI assistant.
  • Turning a cart on needs Section Store Plus. Plus costs $15/month today. Stores that subscribed earlier may keep $8 or $10.
  • New stores get a 14-day free trial. A store that had Plus before gets only what is left of its first trial, never a fresh one. If nothing is left, the button reads "Subscribe to Plus".
  • Translating cart text on the "Translations" page needs Plus.
  • A/B tests need Plus.

What a store without Plus sees

  • The cart's switch doesn't turn the cart on. It opens a window titled "Cart Drawer comes with Plus". The window says "We switch on this cart when you start Plus." and shows the price, for example "$15/month. Cancel anytime."
  • The window's button starts the trial. It reads "Start 14-day free trial", "Resume trial (N days left)" or "Subscribe to Plus".
  • In the editor, that button saves the cart first. After the merchant approves Plus in Shopify, the app switches that cart on. It shows "Plus is on. We switched on your cart." If that fails, it shows "We couldn't switch on your cart. Use the switch to try again."
  • The editor shows a card "Unlock Cart Drawer" with "Your cart stays off until you start Plus." and an "Upgrade to Plus" button.
  • The cart list shows: "Configure and preview your cart drawer now. Upgrade to Plus when you are ready to enable it on your live store."
  • A save without Plus always saves the cart as off.
  • Without Plus, the editor's badge reads "Disabled in app", even for a cart the list still shows as "Active" (for example after Plus ended).
  • The theme editor doesn't offer the "Cart drawer" app embed until the store has Plus.

First cart on a Plus store

A Plus store's first cart starts switched on. This covers the "Your store" starter and a cart made from a screenshot. When the merchant clicks Save, the cart goes live, as long as the app embed is on in the live theme.

Every later cart, every copy and every cart made from a template starts off.

What shoppers see when Plus ends

  • Trial cancelled during the trial: Plus ends at once.
  • Paid plan cancelled: Plus ends when the paid period ends.
  • When Plus ends: the app tells Shopify the store no longer has Plus. Shopify then stops showing the "Cart drawer" app embed. Shoppers get the theme's own cart again, with no Section Store drawer, reward bar, upsells or gifts.
  • The cart itself stays saved. It isn't deleted.
  • Rewards at checkout: these stop too. Once Plus has ended, checkout gives no free shipping, order discount or free gift, even with the cart still switched on.
  • The Shopify discount: while the cart stays switched on, "Section Store Cart" stays active in Shopify Discounts. It gives nothing, but it still takes a slot in Shopify's discount limit. To free the slot, turn the cart off in the app. Turning a cart off works without Plus.
  • Gotcha after cancelling: in the editor the store counts as "no Plus" right away. The switch opens the Plus window, and saving the cart turns it off for shoppers too. A merchant who doesn't save keeps the drawer until the paid period ends. Subscribing again inside that period starts a new subscription. Billing starts on approval, with no credit for the days already paid for.
  • Plus again later: a cart that is still switched on comes back for shoppers by itself, and so do its rewards. A cart that switched off stays off until the merchant turns it on, so check the switch after subscribing again. Starting Plus from a cart's switch turns that cart on. Without Plus, a cart switches off when:
    • the merchant saves it in the editor, even with the switch untouched;
    • the merchant turns it off;
    • a background retry runs and a cart update was still pending when Plus ended;
    • the nightly repair runs and the store has no "Section Store Cart" discount. That is the case for a cart that never had rewards on.

Uninstall

Uninstalling the app switches every cart off. After a reinstall, the merchant turns the cart on again.

Where to find it

  • Menu item: "Cart Drawer". The page title is "Cart Drawer". Subtitle: "Create a global cart drawer with order upsells, discount codes, reward bars and more."
  • With no cart yet: "Create your first cart drawer", a "Create cart drawer" button, "Create from screenshot", and a 7-minute tutorial video.
  • With carts:
    • A table with "Cart name", "Status" ("Active" or "Draft") and "Actions": "Duplicate cart", "Edit" and "Delete cart". Each row also has a switch.
    • A search box, "Search carts".
    • "Create from screenshot" and "Create cart drawer" buttons.
    • A "Quick setup guide" card, with "Enable cart drawer in theme" and "Watch tutorial".
    • Below them: "Cart drawers from top stores", the template gallery.
  • "Create cart drawer" opens the page "New cart drawer". It shows "Pick a cart to start from":
    • A "Your store" card first, marked "Recommended": "Your colors and language, with your store's facts."
    • Then the 31 templates.
    • "Create from screenshot" sits in the page header.
  • The editor:
    • Header: the cart name, a status badge ("Enabled in app" or "Disabled in app") and the switch.
    • Header buttons, once saved: "A/B test" (or "Create A/B test") and "Translations".
    • Two tabs: "Settings" and "AI assistant".
    • Groups on the Settings tab: "Preview", "General" ("Settings" and "Styles"), "Header", "Body" and "Footer".
    • The "Preview" card, first on the Settings tab: a "Filled cart" / "Empty cart" toggle and "Preview market". A saved cart on Plus also gets "Preview language".
    • The preview on the right: the cart as shoppers see it.
  • Other places:
    • The "Translations" menu item: Content "Cart".
    • The "A/B Tests" menu item: "Carts".
    • The "Build with AI" box on the Cart Drawer page, for AI assistants.
    • Plus stores, trial or paying, get a one-click "Turn on cart drawer" button on the store audit's cart drawer fix, and in "Next · sell more per order" after an AI Pages build.
    • The Plus card on Home: "Set up cart", or "Edit cart" once the drawer is live, opens the Cart Drawer page.

How it works

The app embed

  • The drawer runs from one app embed. In the theme editor it is under "App embeds" as "Cart drawer". It has no settings in the theme editor. Every setting lives in the app.
  • The "Enable cart drawer in theme" button lists the store's themes. Picking one opens Shopify's theme editor with the embed switched on.
  • The merchant must click "Save" in the theme editor. Inside the theme editor, the drawer shows a hint until the embed is saved: "Click "Save" in the top-right corner."
  • The "Quick setup guide" badge shows the live state:
    • "Live on your store"
    • "Not enabled in theme"
    • "Disabled in app"
    • "Couldn't check theme"
    • "Checking theme…"
  • In the editor, a yellow "Activate in theme" badge shows next to the status when the cart is on but the live theme's embed is off. Clicking it opens the theme editor.
  • Saving a switched-on cart while the live theme's embed is off opens a warning: "Cart Drawer isn't enabled in your live theme".
    • It explains that rewards, including free shipping, can still apply to orders unless the cart is saved as inactive.
    • Buttons: "Save anyway" and "Save as inactive".
  • The drawer only works in themes on the Online Store. It shows on every storefront page where the embed runs.

How it takes over the theme's cart

There are two settings under "General" → "Settings". Both are on by default.

  • "Open drawer when products are added":
    • When a shopper submits any add-to-cart form, the drawer adds the item and opens at once. If the cart was empty, it shows a spinner while it loads.
    • When the theme or another app adds to the cart through Shopify's standard cart address, the drawer refreshes and opens.
  • "Open drawer when cart icons are clicked":
    • A click on the theme's cart icon, or on any link to the cart page, opens the drawer.

When both settings are on, the drawer also switches off the theme's own drawers and popups:

  • It closes common theme cart drawers and "added to cart" popups, and blocks them from opening.
  • It has extra handling for Horizon, Prestige, Flux, Concept, Symmetry and Turbo themes, plus a general rule for other themes.
  • It keeps the theme's cart count bubble in sync.
  • It closes a theme's quick-add or quick-view window after a successful add.
  • For a short time around each add, it closes any other cart-like layer that opens next to it, from the theme or another app. This is the "double drawer" guard.

If either setting is off, the theme's drawers are left alone. The theme's cart can then open next to ours.

Cart page vs drawer

  • The cart page (/cart) is not redirected. A shopper who types /cart, or comes from a link the drawer doesn't catch, sees the theme's cart page.
  • The reward bar, upsells and other blocks only show in the drawer. There is no Section Store block for the cart page.
  • The drawer script still runs on the cart page. Free gifts are added or removed there too.

What happens on each page load

  • The drawer reads the cart when the page loads, not when it first opens.
  • On that read it adds or removes free gift lines, loads upsells and prepares the reward bar.
  • Express checkout buttons load only when the drawer opens.

How rewards reach checkout

  • The reward bar's free shipping and order discount come from the "Section Store Cart" automatic discount in Shopify.
  • Shopify recalculates the threshold at checkout from the cart lines. These rewards don't depend on the drawer being open or used.
  • Free gifts are different. The drawer adds the gift as a normal cart line with a hidden tag. The discount only makes tagged lines free. So a gift needs the drawer script to run on the shopper's page.
  • The checkout button sends the shopper to Shopify checkout. Discount codes the shopper applied in the drawer are already on the cart.

Step by step

Create a cart from the "Your store" starter (simplest)

  1. Open "Cart Drawer" and click "Create cart drawer".
  2. On the "Your store" card, click "Use this cart".
  3. The editor opens with:
    • the store's colors and corners;
    • the store's main language;
    • trust badges built from the store's facts where it has them;
    • an empty cart that shows best sellers and a "Browse products" button.
  4. Change what you like, then click "Save".

Create a cart from a template

  1. On "Cart Drawer" (below the list) or on "New cart drawer", browse "Cart drawers from top stores". There are 31 templates. Each card is a live drawer with a sample cart.

  2. Click "Use this cart".

  3. In "Pick the look for your store.", choose:

    • "Match my store look" ("Your colors and corners."), or
    • "Use as it looks" ("Its own colors and corners.").

    Then click "Use cart". If the app can't read the store's colors, it says "We couldn't read your store's colors. This cart keeps its own."

  4. The app sets the template up for the store:

    • Reward thresholds are converted to the store's currency and rounded like a price tag.
    • Trust badges state the store's own facts.
    • On Plus, the cart's words are rewritten to fit the store. Without Plus, the template's words stay.
  5. The editor opens unsaved and switched off. A banner says "Check the rewards before you switch this cart on":

    • "We rounded the thresholds to your currency.", or
    • "Pick a product for each free gift. We rounded the thresholds to your currency."

    Click "Check rewards". If the banner picture failed, it says "We couldn't add the banner's picture. Upload one in the Banner block."

  6. Pick a gift product for each free gift tier. A gift tier with no product gives nothing to shoppers. A template's order addons start off with no product. Pick a product, then turn the addon on.

  7. Click "Save". Then turn the switch on.

If setup fails, the gallery says "We couldn't set up this cart. Try again." or "Setup took too long. Try again." Click "Use this cart" again.

Create a cart from a screenshot

  1. On "Cart Drawer" or "New cart drawer", click "Create from screenshot".
  2. In "Create cart drawer from screenshot", drop a PNG, JPG or WebP image ("Drop a screenshot of a cart you like"). Then click "Create cart drawer".
  3. The new cart opens on the "AI assistant" tab. It sends "Match this screenshot style" with the image right away. The assistant matches colors, blocks and layout. It then checks its result against the screenshot and fixes differences.
  4. Review it and click "Save".

Notes:

  • A Plus store's first cart starts switched on. Saving it makes it live.
  • If the page reloads before the hand-off, attach the image again in the assistant.
  • A wrong file type shows "We can't read that file. Use a PNG, JPG or WebP screenshot."

One click from the store audit or AI Pages

Plus stores, trial or paying, see a "Turn on cart drawer" button on the store audit's cart drawer fix, and in "Next · sell more per order" when an AI Pages build finishes. The button:

  • keeps a cart that is already on;
  • or turns on the store's most recent draft cart;
  • or makes a new cart in the store's look, with product upsells on and the reward bar off.

The merchant then clicks "Save" in the theme editor so shoppers see it. If another app's cart drawer is on, the step stops: "Another app's cart drawer is on in your theme. Two drawers would clash. Turn it off first, then come back." "Customize cart drawer" opens the editor.

Set it up

  1. "General" → "Settings":
    • "Cart name" (only the merchant sees it).
    • "Cart position" ("Slide from right" or "Slide from left").
    • "Floating cart".
    • "Rounded corners".
    • "Keep page accessible while cart is open".
    • The two "Open drawer…" settings.
    • "Use product compare-at price".
  2. "General" → "Styles":
    • "Color presets": "Your store", "Classic", "Bloom", "Pearl", "Rose", "Sand", "Slate".
    • "Use gradients".
    • "Size presets": "Compact", "Balanced", "Spacious".
    • "Width (desktop)".
    • Background, button radius and image style.
    • "Custom styles".
  3. Blocks: a new cart already shows most block cards. "Announcement", "Timer", "Reward bar", "Products upsell", "Order note", "Discount code" and "Order addon" start with their switches off. "Discount total", "Payment icons" and "Trust badges" start on. Turn on the ones you want. "Add block" lists blocks the cart doesn't have yet, such as "Banner", "Express checkout" and "Custom HTML", plus any card you deleted. A block added this way starts with its switch on and its card closed. "Order addon" can be added many times. A new one needs a product before the cart can save.
  4. Reorder: drag a block's card to move it within the body or footer.
  5. Add a reward bar if you want rewards. Set its tiers. See "Rewards, discounts and checkout" below.
  6. Check the preview: open the "Preview" card. Use the "Filled cart" and "Empty cart" toggle, and the "Preview market" and "Preview language" options.
  7. Click "Save".

Turn it on

  1. Have Plus.
  2. Turn the cart's switch on. On the list it sits next to the cart's name. In the editor, turn it on and click "Save". The status changes to "Active" on the list and "Enabled in app" in the editor. Any other live cart becomes "Draft".
  3. Turn on the app embed: "Enable cart drawer in theme" → pick the live theme → "Save" in the theme editor.
  4. Check the "Quick setup guide" badge. It should read "Live on your store".
  5. Open the storefront and add a product.

Turn it off

Turn the switch off on the list or in the editor. The theme's own cart comes back. The "Section Store Cart" discount is switched off once no cart is live.

The drawer, part by part

Top bar (header)

  • "Title": the default is "Cart {{items_count}}". Variables: items count and cart total.
  • "Item count": "Raised", "Same size" or "Badge".
  • "Close button": "Plain", "Circle" or "Square", with icon size and stroke.
  • "Image icon": an optional icon, placed with "Align to left of bar" or "Left alongside title".
  • Text alignment, colors and sizes.

Announcement

A text band. The default is "Limited-time offer: complete your order today." It has text, colors and padding. It shows plain text only, and it hides while the cart is empty. It isn't an announcement bar section from the catalog.

Timer

  • "Title": the default is "Cart reserved for {{timer}}".
  • "Timer": the minutes, 10 by default.
  • "After timer ends": "Hide the timer", "Repeat the timer", "Show message" (with "End message") or "Remove all items from cart".
  • When it counts: only while the cart has items. It starts when the page first loads with items in the cart, not when the drawer opens.
  • Memory: the end time is kept for the browser tab session, so a reload doesn't restart it. A new session starts over. Once it ends, it stays ended for that session, except with "Repeat the timer".
  • Gotcha: "Remove all items from cart" really empties the shopper's cart when the time runs out.
  • Limits: it doesn't hold stock, and it can't count to a set date.
  • Not the same as: the Countdown timer conversion block or countdown sections from the catalog.

Reward bar

A bar with milestones toward rewards. Details are under "Rewards, discounts and checkout". Visual settings:

  • "In-progress message": the default is "Add {{amount_remaining}} to unlock {{next_tier_title}}."
  • "All promotions unlocked message": the default is "All rewards unlocked!"
  • The editor's variable menu: remaining amount, tier threshold, progress percent and tier title.
  • Other variables the storefront also accepts: {{amount_remaining}}, {{remaining_amount}}, {{next_tier_title}}, {{cart_total}}, {{item_count}}, {{threshold}}, {{discount}}, {{progress_percent}}.
  • Other settings:
    • "Celebrate animation": "None", "One side cannon", "Screen fireworks", "School pride", "Ring pulse". It plays when a new tier unlocks.
    • "Show tier thresholds under milestones".
    • "Milestone spacing": "Spaced by threshold", "Evenly spaced" or "Centered" (an equal column per tier, milestone in the middle).
    • "Milestones": "On the bar" (default), "Above" or "Below".
    • "Icon style": "Filled" (default), "Outline" or "Dot" (a plain dot, no icon).
    • "Reached tier": "Keep icon" (default) or "Show check". "Locked tiers": "Keep icon" (default), "Show lock" or "Show check". A tier with its own uploaded reached icon keeps both its pictures.
    • Under "Content", next to "Text align": "Message" ("Above the bar", the default, or "Below the bar"), "Text size", "Message in capitals" and "Amounts in bold" (on by default).
    • Every one of these starts at the look carts had before, so saved carts don't change.
    • "Milestone size", "Bar height", colors for locked and unlocked tiers, and tier icons.
    • Per tier: "Hide icon and title" and, with a custom icon, "Use a different icon when tier is reached".
  • Hidden when the cart is empty or has no tiers.
  • Gotcha: a cleared message field shows nothing.

A promo card. It only shows while the cart has items.

  • "Layout":

    • "Image", "Image beside text", "Image above text" or "Text".
    • "Edges": "Card" or "Edge to edge".
    • "Button": "Below the text" or "Right of the text".
  • "Image": "Upload image" (PNG, JPG or WebP) or "Make with AI".

    • AI pictures: 5 a day per store, on any plan. When used up: "You've made 5 images today. Try again tomorrow."
  • "Link": must start with /, https://, http:// or #, or it is ignored.

    • With no button text, or with the "Image" layout, the whole banner is the link.
    • "Open the link in a new tab" is a checkbox.
  • "Show":

    • "Always".
    • "Until the cart reaches an amount".
    • "From an amount".

    The amount is the cart total after discounts. The banner amount has per-market amounts like reward tiers. Otherwise it converts with Shopify's currency rate. A blank or zero amount means it always shows.

  • "Image height": blank keeps the picture's own height. With "Image beside text", the field reads "Image size".

Line items

  • "Layout": "Classic", "Price top right", "Price under title" or "Price with quantity".
  • "Remove button": "Icon top right", "Icon beside quantity" or "Text link".
  • "Show quantity selector": on by default. Styles: "Bordered pill", "Segmented", "Round buttons" or "Plain".
  • "Show custom properties": on by default. Properties that start with an underscore are always hidden.
  • "Show discount tag": on by default. It shows Shopify's discount names on each line.
  • Struck prices: a line shows a struck price when a discount lowers it. With "Use product compare-at price" on, a variant's compare-at price shows too. The struck price is the higher of the two.
  • Free gift lines:
    • They sort after normal products. They show a "Free gift" tag and the price "FREE".
    • They have no quantity control and no remove button.
    • If the gift has several allowed variants, a picker lets the shopper choose.
  • Order addon lines never show in the list. They show as their switch in the footer.
  • Bundle lines from Section Store bundles show as normal lines with their discount tag.
  • Variants: shoppers can't change the variant of a normal line in the drawer. An "Upgrade offers" block can swap a line for a bigger pack.

Upgrade offers

A row under a cart line, like "Upgrade to 2 bottles and save $6.00" or "Subscribe and save $2.90". One tap changes the line in place. The block makes no discount: the saving is the price gap between two variants, or the subscription plan's own price. Add it under "Body" → "Add block". Its card sits after "Line items".

  • "Bigger pack" tab: "Offer bigger packs", then "Select products" (up to 20). Each product lists its packs, smallest first, up to 12. A product marked "Needs setup" shows no offer until the merchant chooses its "Pack option" and enters the "items" in each pack. "Offer" is "The next pack up" or "Every bigger pack". "Reset packs" reads the variants from Shopify again.
  • "Subscription" tab: "Offer a subscription". "Products" is "Every product with a plan" or "Selected products" (up to 20). "Plan" is "The product's first plan" or "The plan with the biggest saving". Plans come from the store's subscription app. "Show the delivery schedule" shows the plan's name under the text.
  • "Style" tab: "Layout" ("Button", "Checkbox" or "Link"), icons, "Saving shown as" ("Amount ($6.00)" or "Percent (10%)"), "Offers per cart" ("Up to 1", "Up to 2" or "Every line"), "Show first" ("Subscription" or "Bigger pack") and "Let shoppers undo". A line shows one offer at a time.
  • Lines with no offer: a line with a discount, a bundle line, a gift, an order addon, and a line of two or more items. Only one-time lines get the subscription offer. A subscribed line can still get a bigger pack and keeps its plan.
  • Rewards and free shipping: the subscription offer hides when taking it would drop an unlocked reward tier or cost the shopper free shipping. That covers Shopify's free shipping discounts, free shipping rates and free shipping codes. The "Subscription" tab shows a note such as "Your store ships free over $50" when this applies.
  • After a tap: the cart is checked again. If a discount code stopped working or the cart costs more than the row promised, the change is undone and the shopper sees "This offer doesn't work with your discount. We kept your cart as it was."
  • Undo: with "Let shoppers undo" on, the row reads "Upgraded to 2 bottles" or "Subscribed" with an "Undo" link until the cart changes or closes.

Products upsell

  • "Recommend by": "AI recommendations" (the default) or "Manual rules".
  • "AI recommendations":
    • Shopify's own recommendations for one product in the cart.
    • We don't filter by price or cart value, so a pick can cost more than the whole cart. There is no price limit, price sort or exclude list. For control, use "Manual rules".
    • "Auto recommendation type": "Related products" or "Complementary products". If there are no complementary products, the drawer falls back to related ones.
    • "Recommendation limit": 4 by default, 1 to 10.
    • The editor says: "Recommendations are powered by Shopify. Manage related and complementary products in the Shopify Search & Discovery app."
  • "Manual rules":
    • Each rule has "When cart contains":
      • "Any product"
      • "Selected products"
      • "Products from selected collections"
      • "No products (Empty cart)"
    • Then "Recommend these products", with "Show variants" / "Hide variants".
    • The first rule that matches wins.
  • Layouts: "Horizontal compact" (default), "Horizontal cards" or "Vertical list". Arrows appear when the picks overflow.
  • Products with variants: a variant picker shows. Sold-out options are marked "Sold out".
  • The add button: reads "+ Add" by default and adds quantity 1.
  • "Hide products already in cart": off by default.
  • Defaults: title "You may also like". New carts have the card with its switch off.
  • Prices: in the shopper's market and currency.
  • Limits:
    • No discount: upsells add at their normal price. The card shows a compare-at price if the variant has one. A Shopify automatic discount applies to every sale of those products, not only upsell adds.
    • No rule by cart value, country or customer. Rules only look at what is in the cart.
    • No stats: the app has no upsell report, and upsell lines carry no mark, so Shopify's reports can't separate them. A cart A/B test is the way to measure them.

Order addons (shipping protection and similar)

  • "Add order addon": adds a one-product switch to the footer. The default text is "Shipping protection" / "Protect your order from loss or damage."
  • The product: the merchant picks a real product from the store. The app doesn't create the product. The picker button reads "No product selected" until then. It opens Shopify's product picker, and the first ticked variant is used. Saving a switched-on addon with no product fails with "Please select a product". If a block loses its product, shoppers who flip the switch get "Order upsell product is not configured".
  • After picking: the default title becomes the product's name, the default subtitle clears and the block uses the product's image.
  • On: the shopper's switch adds that product (quantity 1).
  • Off: it removes the product.
  • Price: the product's price in the shopper's market.
  • "Include in reward threshold": off by default. While off, the addon doesn't count toward the reward bar.
  • When the cart empties: addon lines are removed.
  • Images: the product image, or with "Replace image": "Shield check", "Gift" or a custom image.
  • Order discount: the reward bar's order discount skips an addon unless "Include in reward threshold" is on.
  • Limits: the switch always starts off, the price is fixed, and it adds one unit of one variant. A cart can hold several addons.
  • Not the same as: the Addons conversion block or add-on sections from the catalog.

Trust badges

  • Badges: a row of icon and text badges. Add more with "Add badge".

  • "Layout": "Icon above text" or "Icon beside text".

  • "Use my store's facts": fills the badges from the store's real settings:

    • free shipping from its shipping profile;
    • the return window from its refund policy;
    • product reviews (at least 25 reviews and a 4.2 rating);
    • a feature line from its theme.

    The row holds at most 3 badges.

    • Success: "We filled the badges from your store."
    • Nothing found: "We found no free shipping, return window or reviews in your store."
    • Failure: "We couldn't read your store. Try again."
  • Badges for some countries: a badge that is only true in some countries shows only to shoppers there. The editor notes "Shoppers in these countries see this badge: …". If the shopper's country is unknown, the badge shows.

  • Amounts in badge text show in the shopper's currency, rounded up to a whole unit.

Payment icons

  • Built-in icons: 14 card and wallet icons, such as Visa, Mastercard, PayPal, Shop Pay, Apple Pay and Klarna. Custom icons can be uploaded.
  • "Use store's payment icons": shows the store's real payment methods from Shopify. The editor preview may show gray placeholders. Shoppers always see the real icons. Icons ticked by hand show next to them.

Express checkout

  • What it shows: Shopify's own wallet buttons in the drawer, for the wallets the store has turned on. These can be Shop Pay, PayPal, Apple Pay and Google Pay. The editor preview shows example buttons.
  • "Layout": "Row" (default) or "Stacked". In "Row", buttons keep at least 100px each. When the drawer is too narrow they wrap onto a second line, or the row scrolls sideways.
  • "Position": "Below checkout" (default) or "Above checkout".
  • The theme file: saving a live cart with this block on adds a small section file to the live theme, sections/section-store-express-checkout.liquid ("Section Store wallets"). The app writes it again when the merchant publishes another theme.
  • Not shown when:
    • the cart is empty;
    • the theme lacks the file;
    • no wallet is on;
    • a developer has added an onBeforeCheckout hook (see "For developers").
  • Shopify decides which wallets a shopper sees. For example, Apple Pay needs a supported device.

Order note

  • What it does: a collapsible box. The default title is "Add special instructions".
  • Where the text goes: it saves as the Shopify cart note, and becomes the order's note. It saves automatically as the shopper types.
  • Settings: "Make it collapsible" (on by default), with "Collapsed by default" or "Expanded by default".
  • When the cart empties: the note is cleared.

Discount code

  • What it does: a code box with an "Apply" button. Codes stack: a new code is added next to the ones already applied.
  • Shopper messages:
    • "Discount applied."
    • "Discount removed."
    • "Enter a discount code."
    • "Discount applied, but some free gifts are now charged."
  • Bad codes: an invalid code shows the merchant's "Error message". The default is "The coupon code is invalid."
  • Reward discounts: order discounts from the reward bar show as tags like "- 10%". Shoppers can't remove them.

Discount total

A line with the cart's savings. It adds Shopify's discounts and, while "Use product compare-at price" is on, the compare-at savings. So it can be larger than the discounts alone.

Subtotal and checkout button

  • "Subtotal": a title (default "Subtotal"), a subtitle and "Show compare-at price". The amount is the cart total after Shopify's discounts.
  • Checkout button text: the default is "Checkout • {{cart_total}}". Variables: cart total and items count.
  • Icon: nine built-in icons (such as "Arrow right", "Lock" and "Bag") or an uploaded one.
  • "Hover effect": "None", "Lift", "Scale" or "Shine + lift".
  • Behaviour: the button reads the cart fresh, then sends the shopper to Shopify checkout. It is disabled while the cart is loading or saving.

Empty cart

  • Defaults: title "Your cart is empty", with a subtitle.
  • New carts start with "Show best-selling products" on (title "You might like", 3 best-selling products in stock) and a continue button "Browse products".
  • "Show continue shopping button": links to "Button link" (default /collections/all). It doesn't just close the drawer.
  • Manual rule: a "No products (Empty cart)" upsell rule replaces the best sellers.
  • Icon: five built-in bag and cart icons, or a custom one.
  • "Custom HTML" in the empty cart: has a "Placement": "Top of cart", "After title", "Bottom of cart", "Above button" or "Below button".

Custom HTML

  • Where: in the body, the footer or the empty cart.
  • Fields: "HTML" up to 50,000 characters and "CSS" up to 20,000 characters.
  • Scripts: they run on the storefront but stay inactive in the editor preview ("Scripts run on your storefront but stay inactive in this preview.").
  • CSS: it styles that block only. "Custom styles" is the CSS for the whole drawer.
  • Translations: custom HTML isn't on the "Translations" page.

Rewards, discounts and checkout

Tier types

Click "Add tier" in the Reward bar block and pick a type:

  • "Free shipping": "Unlock a fixed or percentage shipping discount." The default is 100% off shipping.
  • "Order discount": "Unlock a fixed or percentage order discount." A new one starts at 10% off.
  • "Free gift": "Unlock selected gift products." Pick products and allowed variants, with a quantity for each gift.

Settings that apply to every tier:

  • "Unlock by": "Cart total" or "Item quantity". The threshold field reads "Min price" or "Min quantity".
  • "Discount type": "Percentage off" or "Fixed amount off".
  • "Discount value": a whole number. Percentages cap at 100.
  • Fixed amounts and thresholds are in the store's currency. They convert for other currencies.
  • A new Reward bar block starts with one tier: "Free shipping" at 50. A new "Order discount" tier starts at 10% off, at 100.
  • "Unlock by" is one setting for the whole bar. Tiers can't mix money and quantity.
  • Tier titles at checkout: shipping and gift tiers show their title at checkout exactly as typed, in the store's main language. Variables in a title aren't filled in there.
  • Order discounts skip free gifts, excluded products and order addons that don't count.

How tiers combine:

  • Tiers sort by threshold.
  • Free shipping and order discount tiers don't stack. Only the highest unlocked tier of each type applies.
  • Free gift tiers stack. Every unlocked gift tier adds its gifts.
  • No fixed tier limit exists. The total reward settings must stay under 10,000 bytes. Otherwise: "Reward settings are too large to save (… bytes; maximum 10000). Select fewer shipping methods, use “All shipping methods except…”, or simplify your rewards. Your changes have not been saved."

What counts toward the threshold

The bar counts the cart total before discounts by default. The checkbox "Count cart total after discounts" changes that. It is in the app, not the theme editor. In Shopify admin, open Apps > Section Store > Cart Drawer, click Edit on your cart, and open Reward bar under Body. The checkbox sits under "Unlock by". It starts off, and it only shows when "Unlock by" is "Cart total".

  • Checkbox off (the default): the editor says "Reward thresholds use the cart subtotal before discounts. This may differ from the subtotal shoppers pay." Discount codes, bundle discounts and automatic discounts don't lower the progress.
  • Checkbox on: the editor says "The bar and free gifts count what shoppers pay after discounts. Shipping and order discount tiers still count before discounts at checkout." Discount codes, bundle discounts and automatic discounts lower the progress. A reward's own order discount doesn't.
  • What the checkbox can't change:
    • Free shipping and order discount tiers still count before discounts at checkout. Shopify doesn't show other discounts to the "Section Store Cart" discount. So the bar can show one of these tiers locked while checkout gives it.
    • A code typed at checkout doesn't remove a gift. The drawer doesn't run at checkout, so the gift stays free.
    • A deal that counts the gift as an item, such as "buy 2, save 15%", can drop the total below the threshold once the gift is added. The gift and the unlocked bar stay until the shopper changes a product, a quantity or a code. This stops the gift going in and out of the cart.
  • Compare-at prices aren't discounts. The bar counts the product's real price, with the checkbox on or off. A $49 product with a $59 compare-at price counts as $49.
  • Editor preview: with the checkbox on, the preview's sample code lowers the bar and the subtotal. Bundle and automatic discounts only show on the store.
  • Never counted:
    • free gift lines;
    • order addon lines (unless "Include in reward threshold" is on);
    • products in "Exclude products from being counted".
  • "Exclude products from being counted":
    • Tick it under the tiers, then "Select products" (up to 20).
    • It also applies at checkout.
    • Excluded products don't get the order discount either.
  • Item quantity: thresholds are whole items.
  • Subscriptions and bundles: their lines count like any other line.

Free gifts in detail

  • When the gift is added: once a gift tier unlocks, the drawer adds the gift to the cart by itself. This happens on page load and after every cart change, whether or not the drawer is open.
  • Price at checkout: the "Section Store Cart" discount makes it free (100% off), up to the gift's set quantity. Extra units are charged.
  • When the cart drops below the threshold: the drawer removes the gift.
  • A code that drops the total below the threshold: with "Count cart total after discounts" on, the drawer removes the gift and shows "Discount applied, but we removed your free gift." Removing the code brings the gift back.
  • Removed somewhere else (for example on the theme's cart page): the drawer adds it back on the next page load.
  • Gift out of stock or not available: the drawer skips that gift for 5 minutes, shows the error, then tries again.
  • Variants: the gift starts as the first allowed variant. The shopper can switch to another allowed variant on the gift row.
  • Discount codes that make the gift charged: some codes don't combine with the cart discount. The drawer then shows "Discount applied, but some free gifts are now charged." The gift row gets a remove button.
  • Skipping the cart: gifts are not added when the shopper skips the cart, for example with a "Buy it now" button on the product page. Only the drawer adds gift lines.
  • No products picked: a gift tier with no products gives nothing, and shoppers don't see it on the bar.
  • Several products in a tier: the tier gives all of them. Shoppers can't choose between products. They can only choose between a gift's allowed variants.
  • Quantity: the drawer resets a gift line to its set quantity wherever it runs.
  • Adding the gift product yourself: a shopper who adds the gift product normally pays for it. It also counts toward the threshold at full price.

Buy it now and other ways around the cart

"Buy it now" and product-page wallet buttons go straight to checkout with that product.

  • Free shipping tier: applies if that purchase reaches the threshold. The checkout discount doesn't need the drawer.
  • Order discount tier: applies the same way.
  • Free gift tier: doesn't apply. No gift line is added.
  • The count: only what is in that checkout counts.
  • Express checkout in the drawer is different. It checks out the whole cart, gifts included.

Free shipping in detail

  • "Apply to":
    • "All shipping methods".
    • "Specific shipping methods".
    • "All shipping methods except…" ("New shipping methods qualify unless excluded").
  • "Exclude shipping rates over amount": with a "Maximum shipping rate". Rates above it get no discount.
  • How methods match: by name, and for fixed rates also by price and destination.
    • Rename or reprice a method in Shopify, and the saved choice stops matching. The editor says "Keep selected methods in sync". Open "Select shipping methods", save the selection, then save the cart.
    • Choices that no longer match show under "Unavailable selections".
    • With "Specific shipping methods", a changed method gets no discount until you save the selection again.
    • With "All shipping methods except…", a renamed method stops being excluded and gets the discount.
  • Shopper address: with specific methods, the address must be inside that method's destinations.
  • Missing access: without shipping access the editor shows "Shipping access is missing. Reload the editor to review and grant this permission."

The Shopify discount

  • One shared discount per store. It is an automatic app discount titled "Section Store Cart". All carts share it.
  • Discount classes: order, product and shipping.
  • Combinations: it is set to combine with other order, product and shipping discounts. Whether another discount combines with it depends on that discount's own combination settings in Shopify.
  • How it shows at checkout:
    • Order discounts: "-10%", or "-5" for a fixed amount.
    • Shipping and gift discounts: the tier title as typed, or "Cart reward".
  • When it is on:
    • It is active while a cart is live and its reward bar is on.
    • Turning the cart off, turning the reward bar off, or deleting the live cart switches it off.
    • The app never deletes it.
  • Point of sale: it never applies to point of sale orders.
  • In Shopify admin: clicking it opens the cart editor in the app.

Shopify's automatic discount limit

  • The limit: Shopify caps how many automatic discounts can be active in one store. It was 25 when this was written. The app reads the number from Shopify's error.
  • Who uses slots: the cart uses one. Each live Section Store bundle uses one too (see the Bundles doc). Other apps' automatic discounts count as well.
  • At the cap: the cart's discount can't turn on. The editor says "Shopify allows 25 active automatic discounts and your store has them all. Deactivate one in Shopify, then try again."
  • The fix: deactivate another automatic discount in Shopify, then click "Try again".

The sync and repair banner

  • When it runs: each time a Plus store opens the editor of its live cart. The app checks:
    • whether the storefront has the latest saved settings;
    • whether the "Section Store Cart" discount exists and is active.
  • Self-repair: it fixes problems by itself.
  • Banners:
    • "We restored your cart's discount on Shopify": the discount was off or missing and the app turned it back on. "Your live cart needs it for rewards. To keep it off, turn off the cart."

    • "Cart is set up on Shopify": after "Try again" worked.

    • "We couldn't update your cart on Shopify": "Shoppers may see an older cart or miss rewards until this works." It lists the problem:

      • "Your storefront doesn't have your latest saved settings."
      • "The Shopify discount for cart rewards is missing."
      • "The Shopify discount for cart rewards is inactive."
      • The discount limit line.

      Button: "Try again".

    • "We couldn't check your cart on Shopify": "Shopify didn't answer. Check again." Button: "Check again".

  • Background retries: the app also retries unfinished updates every minute in the background.

Restoring an inactive discount

  • What happens: if the merchant turns "Section Store Cart" off in Shopify while a cart with rewards is live, the app turns it back on. This happens the next time anyone opens or saves that cart, or when a pending update runs.
  • Deleted discount: a new one is created.
  • The restored schedule: it starts from the cart's creation date, with no end date.
  • No restore button: there is no "Restore discount" button for carts.
  • Keeping rewards off: turn off the cart or its reward bar. The reward bar switch stops every reward. To stop only free shipping, delete that tier.

Per-market amounts

  • Where: click "Per market" next to a tier's threshold. The window is "Per-market pricing": "Override the default price for specific markets." Column: "Minimum cart price".
  • Default: the primary market shows as "Default".
  • Blank fields:
    • In other markets, a blank field shows the default converted to that market's currency. The default is used converted at Shopify's rate.
    • "Automatic" marks local-currency markets: "* Local-currency market — the amount applies in each customer's own currency."
  • "Currency changed": a market's currency changed after saving. Enter a new amount or keep the converted default.
  • Item quantity: the "Per market" button is hidden when "Unlock by" is "Item quantity".
  • No rounding: converted thresholds aren't rounded to round numbers. Set per-market amounts for round prices.
  • Banners have per-market amounts too.

Multiple carts

  • How many: a store can keep any number of carts. Only one is live ("Active"). The rest are "Draft".
  • Switching: turning one on turns the live one off.
  • Copies: "Duplicate cart" makes a copy called " Copy 1" with its translations. Copies start off.
  • Deleting: "Delete cart" asks "Delete ""? This cannot be undone." A cart with a running A/B test can't be deleted. End the test first ("End the A/B test before deleting its live item.").
  • Deleting the live cart leaves the store with no live cart. The theme's own cart comes back.
  • Plus: creating more carts doesn't need Plus. Only turning one on does.
  • Shared discount: all carts share the one "Section Store Cart" discount. The live cart's rewards decide what it gives.
  • A/B tests: turning off a cart with a running test pauses the test. Turning the cart on again resumes it, if the 90-day limit hasn't passed.

Languages, markets and currencies

Shopper language

  • The drawer picks text by the storefront's current language.
  • Built-in text ("Checkout", "Your cart is empty", "Remove item", errors, and so on) ships in 31 languages. Missing languages fall back to English.
  • The merchant's own text:
    • A new cart starts in the store's main language.
    • After a cart is created, the app fills its default text into the store's other published languages. It uses built-in tables for 30 languages, and an AI pass on Plus for others.
    • Text the merchant types or changes must be translated on the "Translations" page.

The "Translations" page (Plus)

  1. Open "Translations".
  2. Set "Content" to "Cart".
  3. Pick one cart or "All carts".
  4. Pick the "Target language".
  5. Type the translations, or click "Auto-translate" and review them.
  6. Save. "Translations saved. Storefront updates are publishing in the background."
  • Placeholders: keep every placeholder, such as {{cart_total}}, as it is.
  • Published languages only: a language shows only when it is published in Shopify.
  • Shortcut: the editor's "Translations" button opens this page for that cart.

Currency

  • The drawer shows prices in the shopper's cart currency with the store's money format.
  • Thresholds, banner amounts and fixed reward amounts use a per-market amount if one is set. Otherwise they are the store amount times Shopify's currency rate.
  • Upsell and addon prices come from Shopify for the shopper's market.
  • Checkout uses Shopify's rate too, so the bar and checkout should agree.
  • Currency converter apps that change prices on the page don't change the cart's currency. The drawer shows Shopify's cart price and follows Shopify Markets.

Look and style

  • Store colors:
    • "Your store" is a color preset made from the theme's colors and button corners.
    • New carts and the "Your store" starter use it when the app can read the theme. Otherwise new carts start on "Classic".
    • Templates offer "Match my store look".
  • Fonts: the drawer uses the theme's font.
  • Custom styles: "General" → "Styles" → "Custom styles", up to 20,000 characters. It is one CSS box for the whole drawer.
    • The drawer sits in its own isolated layer (a shadow root). Theme CSS can't style it, and CSS in the theme's files won't work. Use "Custom styles".
    • Section Store keeps a list of stable class names for this (for example .cart-drawer, .cart-top-bar, .cart-footer).
  • Custom HTML: see "Custom HTML" above.
  • Mobile: the drawer is full width at 768px wide and below.
  • Tablet: from 769px to 989px it is 420px wide.
  • Desktop:
    • At 990px and wider it uses "Width (desktop)", from 320 to 720. New carts start at 450.
    • "Floating cart", "Rounded corners" and "Keep page accessible while cart is open" work on desktop only.
  • While open: Shopify's chat bubble is hidden while the drawer is open. Escape or a click on the dim overlay closes the drawer.
  • AI assistant tab:
    • Ask for copy, style, order or upsells, or attach a style reference image (PNG, JPG or WebP, up to 8 MB). Prompts are up to 800 characters.
    • Quick prompts: "Match my brand colors", "Improve shipping bar", "Match a screenshot".
    • Edits apply to the preview. "Undo last edit" reverses them. Nothing is live until "Save".
    • Limits: 8 requests a minute. 50 a day on Plus, 10 a day without. Messages: "The assistant is catching its breath. Try again in a minute." and "You've reached today's cart assistant limit. It resets tomorrow."

For developers

Public JavaScript API

  • Where it lives: every page where the drawer runs has window.SectionStoreCart (version "1").
  • Docs in the browser: run SectionStoreCart.help() in the browser console. On load the console prints "Section Store Cart public API ready — run SectionStoreCart.help() for docs".
  • Drawer: open(), close(), toggle(), isOpen().
  • Read:
    • ready: a Promise. It resolves with the API once the first cart has loaded.
    • getCart(), getItemCount(), getTotalPrice() (in cents), refresh().
    • subscribe(fn): calls fn(cart) now and on every change. It returns a function that stops it.
  • Write (all return a Promise with the cart):
    • addItem({ id, quantity, properties, selling_plan }), addItems(items), addFormData(formData)
    • updateLine(key, qty), removeLine(key), clear()
    • applyDiscount(code), removeDiscount(code)
    • setNote(text), setAttributes(obj)
    • Adding through the API doesn't open the drawer. Call open().
  • Cancelable hooks (return false to stop; each returns a function that removes it):
    • onBeforeOpen(fn) and onBeforeClose(fn).
    • onBeforeAddToCart(fn), which receives { form, formData }.
    • onBeforeCheckout(fn), which receives { checkoutUrl, cart }.
    • For open, close and add to cart, a hook that throws is logged and the action goes ahead.
    • For checkout, a thrown error blocks checkout and its message shows in the drawer. A returned Promise blocks checkout too.
    • While any onBeforeCheckout hook exists, the express checkout buttons hide.
  • Line rules (synchronous only):
    • registerLineRules(fn): fn({ item, cart }) returns { allowRemove, allowQuantityChange } or undefined. This locks a line's controls.
    • onBeforeUpdateLines(fn): fn({ cart, updates }) returns updates with linked line quantities, false, or undefined.
    • A rule that returns a Promise throws "Cart integration callbacks must return synchronously". A rule that fails locks its line.
  • Events fire on window with the prefix section-store:cart:, data in event.detail: ready {cart}, updated {cart, source} (source "internal" or "external"), item-added and item-removed {cart, lines}, opened and closed {cart}, discount-applied {cart, codes}, checkout-clicked {cart, checkoutUrl} (plus wallet for express buttons), and error {error}.
  • Utilities: formatMoney(cents) and help().
  • The cart object is Shopify's own cart JSON. Prices are in cents.
  • Quick check: typeof SectionStoreCart returns "object" when the drawer script loaded on the page.

What the drawer writes to the cart and orders

  • Cart attributes:

    • __section_store_cart_managed = true.
    • __section_store_cart_experiment, the A/B test assignment, used during a cart A/B test.

    The drawer sets them when a page loads. They become order attributes. Shopify shows them under "Additional details" on the order, not as the customer's note. Some apps, like ShipStation, merge attributes into their "Note From Buyer" box. That merge happens in the other app. It doesn't affect the order.

  • Hidden line properties: they mark free gifts (__section_store_card_reward_free_gift, spelled "card") and order addons (__section_store_cart_order_upsell). The drawer hides them.

  • The order note comes only from the "Order note" block (the Shopify cart note).

Staff fixes

Section Store staff can add small code fixes for one store's theme or cart without the merchant editing anything.

A/B tests and AI assistants

A/B tests (Plus)

  • Where: "A/B Tests" → "Carts" → "Create new test", or "Create A/B test" in the editor of a live cart.
  • Versions: Version A is the live cart. B, C and D start as copies to change. The traffic split must total 100%.
  • What it measures: results use paid orders, with revenue per visitor as the main measure.
  • Before starting:
    • The cart must be on: "Enable the Cart Drawer before starting this A/B test."
    • The app embed must be on: "Turn on the Section Store Cart app embed in your live theme before starting this A/B test."
    • Shopify must grant analytics and order permissions.
  • Reward tiers per version: each version can have its own tiers. Checkout gives each shopper the rewards of the version they saw.
  • Pausing: turning the cart off pauses the test. The 90-day maximum keeps counting.
  • Duration: recommended 2–5 weeks.
  • Visitor allowance: each billing period includes 1,000,000 visitor exposures on the $15 plan, 650,000 on the $10 plan and 500,000 on the $8 plan. At the limit, running tests keep Version A until the next period.
  • Size limit: all versions' reward settings together must stay under 10,000 bytes.
  • See the A/B test help article for the full flow.

AI assistants (MCP connector)

  • Who can connect: Claude, ChatGPT, Grok, Cursor and other assistants can build and change carts and bundles. The merchant connects them from "Build with AI" → "Manage" on the Cart Drawer page, using the "Server URL" shown there.
  • Plan: "Assistants build bundles and carts on any plan. Switching them on needs Plus."
  • Changes to a live cart take two steps. The assistant first shows a preview and the list of changes. It saves only after the merchant agrees.
  • Undo: assistant changes can be undone for 30 days.
  • Disconnect: on the "AI assistants" page, click "Disconnect".
  • Shopify Sidekick can also read the store's cart drawer setup and check why it isn't showing.

Theme and app compatibility

  • Themes with their own drawer: with both "Open drawer…" settings on, the drawer replaces the theme's drawer and "added to cart" popup.
    • Named handling: Horizon, Prestige, Flux, Concept, Symmetry and Turbo.
    • Other themes get a general rule that covers common drawer and popup elements.
    • Dawn-style themes are covered by the general rule.
    • Custom or heavily edited themes may need a staff fix.
  • Other cart drawer apps (for example UpCart, Kaching Cart or any "side cart" app) clash with this drawer.
    • The double drawer guard closes another cart that opens next to ours. The clean fix is to turn the other app's embed off in the theme editor.
    • The one-click "Turn on cart drawer" button (store audit, AI Pages) refuses to run while it sees another app's cart drawer on. The Plus card on Home doesn't mark our cart "Recommended" then.
    • Keeping the other app: leave our cart off (status "Draft") and the "Cart drawer" embed off. Bundles work next to it. On the Upsell block, set "Cart app" to "Upcart Cart Drawer", "AMP Drawer" or "Kaching Cart". What lives inside our drawer, like the reward bar, doesn't show.
  • Quick add and quick view: adding from a theme's quick-add window closes that window and opens the drawer.
  • Page builders and custom buttons: buttons that add through Shopify's standard add-to-cart form or cart address open the drawer.
    • Buttons that add in other ways may update the cart without opening it.
    • A developer can call SectionStoreCart.open() after their add.
  • Concept theme bundle forms are left to the theme.
  • Bundles (Section Store): bundle lines show as normal lines. Bundle discounts never touch cart gift or addon lines. Bundle lines count toward reward thresholds at their price before discounts, or after discounts with "Count cart total after discounts" on. See the Bundles doc.
  • Express checkout and other checkout apps: wallets come from Shopify. An app that blocks checkout through onBeforeCheckout hides the wallets.
  • Bot protection: if Shopify's bot protection challenges the shopper, the page reloads. The drawer reopens after the reload.
  • Too many cart requests: if Shopify rate-limits cart changes, cart writes pause for up to 2 minutes.
  • Headless storefronts (not an Online Store theme) can't run the app embed.

Limits and things it cannot do

  • Only one cart can be live at a time.
  • It doesn't redirect or restyle the theme's /cart page, and it adds nothing to the cart page.
  • It doesn't run in checkout. Checkout shows only Shopify's discounts.
  • Gifts are not added when shoppers skip the cart (for example with "Buy it now"). Free shipping and order discounts still apply if that purchase reaches the threshold.
  • Rewards don't apply to point of sale orders.
  • Free shipping and order discount tiers don't stack. Only the highest unlocked tier of each type applies.
  • Discount values are whole numbers. Percentages cap at 100.
  • Reward settings: 10,000 bytes. Cart settings and translations: 128,000 bytes each. ("Cart Drawer settings are too large to save…", "Cart Drawer translations are too large to save…")
  • Excluded products: up to 20.
  • Custom styles: 20,000 characters. Custom HTML: 50,000 characters of HTML and 20,000 of CSS.
  • AI banner pictures: 5 a day. AI assistant: 50 a day on Plus, 10 without, 8 a minute.
  • Translations of merchant text and A/B tests need Plus.
  • AI recommendations depend on Shopify's recommendation data. A new store may get few or none. They have no price limit.
  • Upsells can't be discounted, can't use cart value and have no stats report.
  • Per-market thresholds work only with "Unlock by: Cart total".
  • No theme-editor settings. Everything is set in the app.

Troubleshooting

The drawer doesn't open on my store

Causes, most common first:

  1. The app embed is off or not saved in the live theme. On "Cart Drawer", the "Quick setup guide" badge reads "Not enabled in theme". Fix: "Enable cart drawer in theme" → live theme → click "Save" in the theme editor.
  2. The cart is off in the app. The badge reads "Disabled in app", or the list shows "Draft". Fix: turn the switch on.
  3. No Plus, or Plus ended. The embed disappears without Plus. Fix: start or resume Plus, then check the cart's switch.
  4. The embed was turned on in a theme that isn't live. Fix: turn it on in the live theme, or publish that theme.
  5. "Open drawer when products are added" is off, or the add button doesn't use a standard add to cart. Fix: turn the setting on. For custom buttons, a developer can call SectionStoreCart.open().
  6. The storefront doesn't have the latest settings. Fix: open the cart's editor. It repairs itself or shows a banner with "Try again".
  7. Another script on the page broke, or a developer hook blocks opening (onBeforeOpen). Fix: test in a private window. Run typeof SectionStoreCart in the browser console. "undefined" means the drawer script didn't load.

Contact us when the badge reads "Live on your store" but the drawer still doesn't open in a private window. Include the store URL and the steps.

The theme's cart opens too (two carts, double drawer)

Causes:

  1. One of the two "Open drawer…" settings is off. The theme's drawers stay active unless both are on. Fix: turn both on under "General" → "Settings".
  2. Another cart app's embed is on. Fix: turn it off in the theme editor's App embeds.
  3. The theme uses its own cart code that the general rule doesn't catch.

Contact us with the theme name, the page and a screen recording. We can add a fix for that theme.

The theme's cart page shows instead of the drawer

  • The /cart page is never redirected.
  • Links the drawer catches open the drawer, but only while "Open drawer when cart icons are clicked" is on.
  • A link built in an unusual way, or typing /cart, shows the theme's cart page. This is expected.

Free shipping is not applied at checkout

Check in this order:

  1. Plus is active, the Reward bar block is on and the cart is live. The discount only runs while all three are true. Shopify Discounts can still show "Section Store Cart" as active after Plus ends. It gives nothing until Plus is back.
  2. The cart really reached the threshold. Checkout uses the subtotal before discounts for free shipping, even with "Count cart total after discounts" on. It doesn't count free gifts, order addons (unless "Include in reward threshold" is on) or excluded products.
  3. The shipping method matches. With "Specific shipping methods" or "All shipping methods except…", a renamed or repriced method stops matching. Check "Unavailable selections", re-save the selection, then save the cart. Also check "Exclude shipping rates over amount".
  4. The address is inside the selected method's destinations.
  5. The "Section Store Cart" discount is active in Shopify Discounts. Open the cart editor to repair it. At the automatic discount limit, deactivate another one.
  6. A discount code is on the order that doesn't combine with shipping discounts. Check that code's combination settings in Shopify.
  7. Other markets: a per-market amount may be higher than expected. Without one, the threshold converts at Shopify's rate.
  8. A bundle in the cart doesn't combine with shipping discounts. A bundle with "Choose what this bundle combines with" on and "Shipping discounts" unticked won't stack with the cart's free shipping. The bundle editor says: "Unticked discounts won't stack, cart rewards included." The same goes for "Order discounts" and the cart's order discount tiers. Tick the box in the bundle's "Settings" → "Cart and discounts", then save it.

Contact us when all eight check out. Include the order or a cart screenshot, the shipping method and the country.

The reward bar shows the wrong amount or the wrong remaining amount

  • By default it uses the subtotal before discounts, so it won't match a discounted total. Tick "Count cart total after discounts" to count what shoppers pay.
  • With that checkbox on, free shipping and order discount tiers can still apply at checkout while the bar shows them locked.
  • Free gifts, addons and excluded products are left out.
  • In other currencies, the default threshold converts at Shopify's rate. It isn't rounded, so a shopper may see an odd number. Set per-market amounts for round prices.
  • "Item quantity" tiers count items, not money.

The free gift is not added

  1. The gift tier has no product or variants ("No gift products selected", "No variants selected").
  2. The threshold isn't reached by the counted amount (see above). With "Count cart total after discounts" on, discounts lower that amount.
  3. The gift is sold out, or not available in the shopper's market or the Online Store channel. The drawer shows the error and retries after 5 minutes.
  4. The drawer script isn't running on that page (the embed is off), or the shopper used "Buy it now".
  5. A discount code made the gift charged and the shopper removed it. It returns when the codes change.

The free gift is charged at checkout

  • The "Section Store Cart" discount is off or missing. Open the editor to repair it.
  • The cart no longer meets the threshold at checkout, for example after removing items on another tab.
  • The shopper has more units than the gift's set quantity. Extra units are charged.
  • A discount code doesn't combine with the cart discount. The drawer warns: "Discount applied, but some free gifts are now charged."

The upsell doesn't show

  1. The "Products upsell" switch is off, or the block was deleted.
  2. "AI recommendations": Shopify has no recommendations for the product just added. Fix: add related or complementary products in the Shopify Search & Discovery app, or switch to "Manual rules".
  3. "Manual rules": no rule matches the cart. Remember the first matching rule wins.
  4. Every picked product or variant is sold out, or the product isn't available to the Online Store channel or the shopper's market.
  5. "Hide products already in cart" is on and the products are in the cart.
  6. A network error. The block stays hidden for that page view.

Prices or amounts show in the wrong currency

  • The drawer uses the cart's currency from Shopify Markets. If the shopper's cart is in another currency, the theme's country or currency selector set it.
  • A currency converter app that only changes prices on the page won't change the drawer.
  • Check the market's currency in Shopify and any "Currency changed" notice in "Per-market pricing".

The drawer is slow

  • The drawer reads the cart and loads upsells on every page load. Upsells come from Shopify, so a slow answer delays only the upsell row.
  • Express checkout buttons load when the drawer opens.
  • After many fast cart changes, Shopify can rate-limit the store. Writes then pause for up to 2 minutes.
  • Fewer blocks and fewer upsell picks load less.
  • Other cart or upsell apps on the same page slow every cart change.

Contact us with the store URL, the page and the device.

My changes don't show on the storefront

  1. Did you click "Save"? Assistant edits and template setups aren't saved until then.
  2. Open the cart editor. If the storefront lacks the latest settings, the app repairs it or shows "We couldn't update your cart on Shopify" with "Try again".
  3. Make sure you edited the live cart. A "Draft" cart doesn't show.
  4. Reload the storefront in a private window.

I can't turn the cart on (the switch opens a Plus window)

Turning a cart on needs Plus. Start the trial from the window. The app switches that cart on after Plus starts. If the switch still won't stay on, see "When to contact us".

The "Cart drawer" embed is missing in the theme editor

  • The embed only appears while the store has Plus.
  • After starting Plus, reload the theme editor.
  • Use "Enable cart drawer in theme" on the "Cart Drawer" page to open the right place.

Express checkout buttons don't show

  1. The cart is empty. The buttons only show with items.
  2. No wallet is on in Shopify Payments or PayPal settings, or the device doesn't support it (for example Apple Pay).
  3. The live theme lacks the theme file. Save the cart again with the block on. After switching themes, the app adds it when the theme is published.
  4. A developer added an onBeforeCheckout hook. The buttons hide on purpose.

The cart emptied by itself

Check the "Timer" block. "After timer ends" set to "Remove all items from cart" empties the cart when the time runs out.

The discount code box or order note is missing

Both are cards under "Footer". Turn on the card's switch. If the card is gone, add it with "Add block".

Error: "Reward settings are too large to save"

The rewards use more than 10,000 bytes. Use "All shipping methods except…" instead of long method lists, and remove unused tiers or gifts.

Error: "Markets could not be loaded" or "Shipping access is missing"

The app lacks a Shopify permission. Reload the editor and approve the access request.

ShipStation shows __section_store_cart_managed as a note

This is a cart attribute, filed under "Additional details" in Shopify. ShipStation merges attributes into "Note From Buyer". Nothing is wrong with the order. Only ShipStation can change how it shows.

The drawer disappeared after cancelling Plus or the trial

  • Without Plus, Shopify hides the app embed, and the theme's cart returns.
  • After resubscribing, a cart that is still switched on comes back by itself. A cart that switched off stays off until you turn it on, so check its switch.
  • After a paid cancellation it stays until the paid period ends. A trial cancellation ends it at once.
  • Rewards stop at checkout at the same moment. They come back with Plus while the cart is switched on.

FAQ

Is the cart drawer free? You can build and preview carts for free. Turning one on needs Section Store Plus, $15/month with a 14-day free trial for new stores.

Do I need to edit theme code? No. Turn on the "Cart drawer" app embed and click "Save" in the theme editor.

Why doesn't my cart show after I turned it on? The app embed must also be on and saved in the live theme. Check the "Quick setup guide" badge for "Live on your store".

Can I have more than one cart? Yes, but only one is live. Turning one on switches the others to "Draft".

Does a new cart go live right away? Only a Plus store's first cart, which starts switched on. It goes live when you click Save. Later carts, copies and templates start off.

Does the drawer replace my theme's cart page? No. It replaces the theme's drawer and popup. The /cart page stays as it is.

Can I show the reward bar on the cart page? No. The reward bar and other blocks only show in the drawer.

Where do rewards come from at checkout? From one Shopify automatic discount called "Section Store Cart" that the app manages. Don't delete it. If you turn it off while a cart with rewards is live, the app turns it back on.

Is the threshold before or after discounts? Before, by default. To count after discounts, open Apps > Section Store > Cart Drawer in Shopify admin, click Edit on your cart, and open Reward bar under Body. Tick "Count cart total after discounts", under "Unlock by". That covers the bar and free gifts. Free shipping and order discount tiers still count before discounts at checkout.

My free gift should count the discounted total. Can I change that? Yes. In Shopify admin, open Apps > Section Store > Cart Drawer, click Edit on your cart, and open Reward bar under Body. Tick "Count cart total after discounts", under "Unlock by". The setting is in the app, not the theme editor. The bar and the gift then follow what shoppers pay. If a code in the drawer drops the total below the threshold, the drawer removes the gift. A code typed at checkout doesn't remove it. Compare-at prices already count at the real price, so the checkbox changes nothing for them.

Do free gifts count toward the threshold? No. Order addons don't either, unless "Include in reward threshold" is on.

Can I stop some products from counting? Yes. Tick "Exclude products from being counted" and pick up to 20 products. They also don't get the order discount.

Can I have free shipping and a discount at the same time? Yes. Each type has its own tiers. Within one type, only the highest unlocked tier applies.

Can I give more than one free gift? Yes. A tier can hold several gift products, and every unlocked gift tier adds its gifts.

Will the gift be added if the shopper uses "Buy it now"? No. Only the drawer adds gift lines. Free shipping and order discounts still apply if that purchase reaches the threshold.

Can the shopper remove the free gift? No. A free gift has no remove button. It leaves when the cart drops below the threshold.

Does the free shipping reward work with my carrier-calculated rates? Yes with "All shipping methods". With specific methods, carrier rates match by name.

Can I limit free shipping to standard shipping? Yes. Use "Specific shipping methods" or "All shipping methods except…". Add "Exclude shipping rates over amount" to skip expensive rates.

Can thresholds differ per country? Yes. Use "Per market" on each tier when "Unlock by" is "Cart total".

Will a $50 threshold show as €50 in Europe? No. It converts at Shopify's rate, for example to €46.37. Set a per-market amount for a round number.

Does it work with discount codes? Yes. Shoppers can apply codes in the "Discount code" block, and codes stack. Whether a code combines with the cart rewards depends on that code's combination settings in Shopify.

Does it work with Section Store bundles? Yes. Bundle lines show normally and count toward rewards at their price before discounts. With "Count cart total after discounts" on, they count at the discounted price. See the Bundles doc.

Can I add shipping protection? Yes. Add an "Order addon" and pick your protection product. The app doesn't create the product.

Where do AI recommendations come from? From Shopify's recommendations for one product in the cart. Tune them in the Shopify Search & Discovery app, or use "Manual rules".

Why does the cart recommend expensive products? Shopify decides the picks, and we don't filter them by price. Lower "Recommendation limit", or use "Manual rules" to choose the products.

Can I discount upsells? No. They add at their normal price.

Can I show upsells by cart value? No. Rules look at what is in the cart. A "Banner" can show by amount.

Can I see upsell stats? No. A cart A/B test is the way to measure them.

Can I show upsells only for certain products? Yes. Use "Manual rules" with "Selected products" or "Products from selected collections".

Can I show products in the empty cart? Yes. New carts show 3 best sellers. You can also add a "No products (Empty cart)" rule.

Can I add Shop Pay or PayPal buttons in the drawer? Yes. Add the "Express checkout" block. It adds a small file to your live theme, and Shopify shows your enabled wallets.

Can I change the text and translate it? Yes. Edit text in the editor. Translate it on "Translations" → "Cart" (Plus). Built-in text already exists in 31 languages.

Can I use my own CSS? Yes. Use "General" → "Styles" → "Custom styles". Theme CSS can't reach the drawer.

Can I add my own HTML? Yes. Add a "Custom HTML" block in the body, footer or empty cart. Scripts run on the storefront only.

Can the drawer open from the left? Yes. Set "Cart position" to "Slide from left".

Can I change the width? Yes, on desktop with "Width (desktop)". On phones it is full width.

Can I copy a cart I saw on another store? Yes. Use "Create from screenshot", or a template from "Cart drawers from top stores".

What happens to my cart if I uninstall? Uninstalling switches every cart off. Your carts stay saved. Turn the cart on again after reinstalling.

What happens when my Plus ends? Shoppers get the theme's cart again, and checkout stops giving rewards. Your carts stay saved. Subscribing again brings back a cart that is still switched on. A cart can switch off while Plus is off, so check its switch.

Can I A/B test my cart? Yes, with Plus. Use "A/B Tests" → "Carts". The cart and its app embed must be on.

Can an AI assistant set up my cart? Yes. Connect Claude, ChatGPT or another assistant from "Build with AI". It can build and change carts on any plan. Turning one on needs Plus, and changes to a live cart wait for your OK.

Why does "Discount total" show more than my discounts? It also adds compare-at savings while "Use product compare-at price" is on.

Why does ShipStation show __section_store_cart_managed? It is a cart attribute, not a customer note. ShipStation merges attributes into its note box. The order is fine.

When to contact us

Open the chat bubble in the Section Store app or email [email protected] when:

  • The badge reads "Live on your store" and the cart is "Active", but the drawer doesn't open in a private window.
  • The theme's cart still opens next to ours with both "Open drawer…" settings on and no other cart app on.
  • A reward shows as unlocked in the drawer but checkout doesn't apply it, after the free-shipping checklist above.
  • "We couldn't update your cart on Shopify" stays after "Try again", and the store isn't at the automatic discount limit.
  • A shopper was charged for a gift, or got a reward they shouldn't have, on real orders.
  • The cart switch won't stay on for a store with active Plus.
  • The merchant was billed but the cart didn't switch on after starting Plus.
  • The drawer looks broken on one theme (overlapping header, can't scroll, buttons hidden) and "Custom styles" didn't fix it.
  • A developer needs behaviour the public API doesn't offer.
  • Refunds, billing disputes or plan changes.
  • Any data loss: a saved cart or its translations disappeared.

Include: the store's myshopify address, the theme name, the page URL, the device and browser, the steps, and a screenshot or recording.

Get started

Rewards

Upsells and addons

Blocks and look

Troubleshooting

Plans, limits and compatibility

Did this answer your question?