Blog

Share a Shopify Cart: Permalinks vs a Drawer Button

share a shopify cart

Quick answer: To share a Shopify cart, a shopper needs a share button in the cart drawer; Shopify's Dawn and Horizon themes don't include one. To send a cart yourself, build a Shopify cart permalink: yourstore.com/cart/{variant_id}:{quantity}. Add ?storefront=true to open the cart page instead of checkout. Permalinks can't carry selling plans or bypass a storefront password.

In Oxify Cart Drawer & Upsells (our app) the shopper-side share is one toggle: Enable Share Cart Button. Save cart for later is a wishlist, a different feature.

Support wants to send the exact SKUs a shopper abandoned. A couple wants to finish one bag on two phones. They are different jobs, and Shopify ships a tool for only one of them: the merchant-built permalink.

Checked October 11, 2026: Shopify's permalink docs (Help Center, Shopify.dev), requests to two live Shopify storefronts, the cart files of Dawn 16.0.0 and Horizon on GitHub, and eight App Store listings.

Key Takeaways

  • ?storefront=true keeps people on the cart page instead of sending them straight toward checkout. On October 11, 2026 a bare link on two live stores redirected to a hosted checkout; with the parameter it redirected to /cart.
  • Customer share = a share button in the drawer (Oxify, our app) or a dedicated save-share app. Neither Dawn 16.0.0 nor Horizon has one in its cart files. This is the "share with anyone" feature people actually search for.
  • Native permalinks = merchant-built links. Format: /cart/{variant_id}:{quantity}, comma-separated lines.
  • A bad variant id is dropped, not rejected. We got a redirect to an empty cart, not a 404, so audit old ad links.
  • Selling plans / subscriptions: permalinks cannot add them. Password-protected stores: the link will not skip the password gate.

The 4 Jobs People Call "Cart Sharing"

JobWho starts itUse
1. Recover / supportYouNative permalink in an email or chat
2. Ads / SMS / influencersYouPermalink + optional ?discount=
3. Send my bagShopperShare button in the cart drawer
4. Save for laterShopperWishlist / save-cart app. Not a permalink. Permalinks are snapshots, not accounts

Job 3 — "send my bag to someone" — is what most people searching share Shopify cart mean, so it comes first below. Jobs 1 and 2 are merchant links; you may not need an app for those.

Method 1: A Share Button in the Cart Drawer (Share With Anyone)

The shopper already built the bag. They need a link or a share sheet now. They will not open Shopify admin.

Enable Share Cart Button setting in Oxify cart drawer settings

In Oxify Cart Drawer & Upsells (our app) it is one switch: Enable Share Cart Button under Settings. A share icon appears in the cart header and copies a link to the current cart — no permalink assembly, no variant ID hunting. The shopper does the sharing, which is the whole point.

Whatever app you install, check three things before you trust a share button:

  • Same lines on another device. Open the link logged out, then in a second browser. If it only works on the same phone, you built a bookmark, not a share.
  • Plan limits on shared carts. On the listings we read on October 11, 2026, Share Cart: Link, Social, Chat caps its $4.50/mo plan at 12 items per shared cart with links that work for 1 month, and MeroxIO's free plan caps a shared cart at 2 products. The table under Method 3 has the rest.
  • One primary action. Copy link, or the device share sheet (iOS / Android). Not a row of social icons that turns the drawer into a social app.

Do not confuse this with a wishlist. A wishlist needs an account (or a cookie plus email). A share link is a snapshot. Say which one you shipped in the button label: "Share cart" vs "Save for later."

Method 2: Native Shopify Cart Permalinks (Merchant-Built Links)

Documented in Shopify Help and Shopify.dev; syntax below checked October 11, 2026.

Build the path:

  1. Find each variant id (three ways, next section).
  2. Join them as variant_id:quantity, comma between lines.
  3. Example: https://{shop}/cart/40565639626752:3,40565639659520:1
  4. Optional query params Shopify documents:
    • ?storefront=true — online store cart, not an immediate checkout push
    • ?discount=SUMMER20 — apply a code. Stack multiple with commas (?discount=SUMMER20,FREESHIP) if your store allows combining. A code that itself contains a comma can't be passed this way. More on discount codes in the cart drawer
    • ?note=August%20SMS%20drop — a tracking note that shows in the order's notes (see order notes in the cart drawer)
    • ?attributes[source]=newsletter — cart attributes for tracking; they land on the order too
    • ?ref=influencer-jane — a referral code that appears in the conversion summary
    • ?payment=shop_pay — Shop Pay when you do want checkout
    • Locale prefix: /fr/cart/... so language stays put

What Happened When We Requested Cart Permalinks on Two Live Stores

On October 11, 2026 we sent plain GET requests with no login to two live Shopify storefronts, using variant ids from each store's public product data and a fresh cookie jar per test, then read the cart back from /cart.js. We completed no checkout. Both stores gave the results below. They are not our stores, so we have not named them. In the table, {a} and {b} are two in-stock variants.

Link we requestedWhat came back (same on both stores)
/cart/{a}:2,{b}:1A 302 redirect to a hosted checkout URL on shop.app, not to the store's /cart page.
…?storefront=trueA 302 redirect to /cart, which loaded normally. /cart.js showed 3 items: {a} ×2 and {b} ×1, with {b} listed first.
…?storefront=true&note=sms-drop-test&attributes[source]=newsletter&ref=jane&discount=TESTCODEThe note and source: newsletter were set on the cart (read back from /cart.js). ref and discount were not on the cart; they stayed on the redirect URL. We used a made-up code, so we did not check that a discount applied.
…?storefront=true&properties= + Base64-URL JSONThe properties appeared on the first variant in the link only. The second line had none.
…?storefront=true&utm_source=sms&utm_medium=text&utm_campaign=oct-dropAll three UTM parameters stayed on the redirect URL. Without storefront=true they also stayed on the checkout redirect.
/cart/1:1?storefront=true (a variant id the store does not have)A 302 redirect to /cart and an empty cart. No 404.
/cart/{a}:1,1:1?storefront=true (one real line, one that does not exist)Shopify redirected to a rewritten link without the bad line (/cart/{a}:1?storefront=true). After following it, the cart held the real line.
  • The first redirect decides everything. On both stores a bare link did not load the cart page, so nothing running there (cart-page upsells, a free-shipping bar) gets a chance. Add ?storefront=true when you want it to.
  • Shopify added a cart_link_id parameter of its own to the redirects that landed on /cart or checkout, with a different value on each request even for the identical link. It is not in Shopify's permalink docs, so exclude it if you report landing pages by full URL.
  • Two stores on one day is a spot check, not a guarantee. Checkout redirects can differ with a store's checkout and Shop Pay settings. Request your own link once before it goes into a campaign, on your primary domain: curl -sI 'https://yourstore.com/cart/VARIANT_ID:1' shows the first redirect in the location header. To see the cart Shopify builds: curl -sL -c jar -b jar -o /dev/null 'https://yourstore.com/cart/VARIANT_ID:2?storefront=true' && curl -s -b jar https://yourstore.com/cart.js

Prefill the checkout too. When the link goes to checkout (no storefront=true), you can pre-populate fields with checkout[...] params. Shopify.dev lists nine: checkout[email] and eight checkout[shipping_address][...] fields — first_name, last_name, address1, address2, city, province, country and zip. For example: ?checkout[email]=jane@example.com&checkout[shipping_address][first_name]=Jane&checkout[shipping_address][city]=Austin. Useful in one-to-one support emails where you already know the customer. Never put someone's email or address in a public or forwarded link — treat prefilled links as containing personal data, because they do.

UTM the link. Permalinks accept normal UTM params alongside the cart params (&utm_source=sms&utm_campaign=oct-drop), and as the table shows they survived the redirect on both stores. Without them, an SMS click usually has no referrer and is filed as direct traffic.

Line item properties can be passed too: Shopify.dev documents a ?properties= parameter carrying Base64-URL-encoded JSON (for example an engraving text), applied to the first product in the link, max 25 properties. On both stores they landed on the first variant only. Use that for gift notes you already support. Do not stuff secrets into the URL — everything in a permalink is readable by anyone who holds it.

Finding Variant IDs (3 Ways)

  • Storefront URL: pick the variant on the product page — in most themes the URL grows ?variant=40565639626752. That number is the id.
  • Product JSON: open /products/your-handle.json and read variants[].id. Fastest for grabbing every variant at once. On both stores the ids it returned matched the ones our links used.
  • Admin: product → variant → the id is at the end of the admin URL, as Shopify Help shows.

Or skip the hand-building: admin can generate links for you, three ways. On a product page, More actions → Create checkout link copies a permalink shaped like /cart/{variant_id}:1?channel=buy_button — one variant, quantity 1 — and needs the Buy Button sales channel installed. A draft order sends an invoice with a secure checkout link, the tool when you need specific prices, discounts, or a B2B quote. And a customer's abandoned checkout can be emailed to them from admin with a link back to that checkout (Online Store and Buy Button channels only). Between those three you may not need an app at all.

What permalinks cannot do:

  • Add a selling plan (subscriptions / some preorders)
  • Bypass a storefront password
  • Warn you about a dead line. A variant id the store does not have is dropped without an error, so re-test old ad links after you delete or replace products
  • Act as a logged-in wishlist. The same link is reusable and gives each visitor a new checkout (Shopify Help), so anyone with the link can open that snapshot

Use permalinks when: support is rebuilding a cart, you are seeding an SMS drop, or you want a landing link with two SKUs already in the bag.

Method 3: Dedicated Save & Share Apps

Dedicated apps earn their place when you need email-the-cart, saved carts tied to a customer account, or sharing without running a full drawer app. Prices, ratings and plan limits below are as listed on October 11, 2026; verify before installing.

AppPrice on listingRatingWhat the listing says it does, and its limits
Share-A-Cart for Your StoreFree4.6 (2 reviews)A free add-on that lets shoppers share a loaded cart with whoever will buy it
Share Cart: Link, Social, Chat$4.50/mo Essentials, $7/mo Standard; 7-day trial5.0 (5 reviews); Built for ShopifyEssentials: 1,000 shared links a month, up to 12 items per shared cart, links work for 1 month. Standard: 10,000 a month, unlimited items, links work for 1 year, UTM parameters
BuddyCart$3.99/mo; 3-day trialNo reviews yet (launched April 2026)A unique share link; the recipient restores the items. Tracks opens, restorations and location
RedChamps: Share Cart$20/mo Basic; 2-day trial3.1 (2 reviews)Share by link or email; shared carts and conversions visible in admin, shared carts visible in the customer account
Oxify Cart Drawer & Upsells (our app)From $9.99/mo for 0–100 orders (whole drawer suite); 14-day trial4.9 (40 reviews); Built for ShopifyShare button in the drawer, alongside upsells and free gifts
CSS: Cart Save and Share$4.99/mo; 7-day trial5.0 (6 reviews)Customers save carts for later and share them with others to pay
Uncap Save & Share Carts$19.99/mo; 7-day trial5.0 (1 review)Unlimited saved carts, unique share links, one-click restore of a shared cart
MeroxIO Share your CartFree plan; Premium $4.99/moNo reviews yetFree plan: up to 2 products per shared cart; Premium: unlimited. Store-branded share URL; shares line-item properties

None of the seven dedicated share apps has more than six reviews, so treat their ratings as anecdotes and choose on the limits column: item caps and link lifetime decide whether a shared cart still works when the recipient opens it.

Skip Oxify for this job alone if all you want is a share button. It is a whole drawer suite, while Share Cart: Link, Social, Chat starts at $4.50/mo and MeroxIO has a free plan. Oxify makes sense when you already want the drawer, upsells and free gifts, and sharing comes with them.

Who Shares, and Why (Match the Tool to the Person)

  • Merchant jobs: abandoned-cart emails with the exact bag rebuilt, SMS drops with a discount baked in, support rebuilding a cart in chat, B2B reps sending a reorder link. All permalinks. Free.
  • Shopper jobs: "ask my spouse to pay for this," gift lists sent to family, group buys splitting one order, a B2B buyer forwarding the cart to whoever holds the card. All need a share control the shopper can tap — that is the drawer button, not admin.

The "send this to whoever pays" job is the quiet one: the person building the cart is often not the person with the card. A drawer share button is the shortest path between them.

A shopper on a store with no share button is not stuck: the permalink format needs no login, so they can build one from the variant numbers in the product page URLs. If you already run Oxify Cart Drawer & Upsells (our app) for gifts and upsells, add a second share app only for a job Oxify does not cover (account-saved carts). Two share buttons is a mess.

Privacy and Support Hygiene

  • Treat share links like gift cards: anyone with the URL can see the SKUs. Do not put medical or "discreet" bundles on a public link without a warning.
  • Shopify's own recovery links work the same way. Per Shopify Help, anyone who opens an abandoned checkout link can continue that checkout, and you can't disable or expire the link after you send it. Send it only to the customer.
  • Support should paste permalinks in tickets, not passwords.
  • Rotate discount codes on old ad permalinks. A 2024 ?discount= in a Facebook comment will still work if the code still exists.

Frequently Asked Questions

How do I share a Shopify cart with someone?

If you are staff: build a cart permalink with variant id and quantity, then send the URL. If you are the shopper: you need a Share button in the cart drawer (or a save-share app); Dawn 16.0.0 and Horizon have none in their cart files. Save-for-later is a different product — usually a wishlist with a login.

How do I share my cart on Shopify if the store has no share button?

Build the link yourself. Pick the variant on each product page and copy the number after ?variant= in the URL, or open /products/your-handle.json and read variants[].id. Then join them as https://store.com/cart/ID:QTY,ID:QTY and send it. On October 11, 2026, requests with no login built the cart on two live stores. Add ?storefront=true to land on the cart page, not checkout.

Why does my permalink go straight to checkout?

That is the default. Shopify's docs say to add ?storefront=true to land on the online store cart instead. On October 11, 2026, a bare link on two live stores returned a redirect to a hosted checkout URL on shop.app, and the same link with ?storefront=true returned a redirect to /cart. Omit the parameter only when you want them to pay.

Can I put a discount code in a cart link?

Yes. Shopify documents ?discount=YOURCODE on cart permalinks, and several codes separated by commas. A code that itself contains a comma can't be passed this way. The code must still be valid. Do not put unique single-use codes in a public ad if you cannot stand them leaking.

How do I find a Shopify variant ID for a cart link?

Pick the variant on the product page and copy the number after ?variant= in the URL, or open /products/your-handle.json and read variants[].id. Admin shows it at the end of the variant page URL. For a ready-made link, use More actions → Create checkout link on the product page (Buy Button channel; one variant, quantity 1), or send a draft-order invoice instead.

Can I prefill the checkout email or address in the link?

Yes, with checkout[...] params. Shopify.dev lists nine: checkout[email] and eight checkout[shipping_address][...] fields (first_name, last_name, address1, address2, city, province, country, zip). Only do it in private, one-to-one messages — a prefilled link contains personal data, and anyone who gets the URL sees it.

Do UTM parameters work on a cart permalink?

Yes. On October 11, 2026, utm_source, utm_medium and utm_campaign stayed on the redirect URL on two live stores, both when the link went to /cart (with ?storefront=true) and when it went to the checkout URL. Shopify also adds its own cart_link_id parameter to the redirect, with a different value each time, so exclude it if you report landing pages by full URL.

What happens if a variant ID in a cart link does not exist?

It is dropped without an error. On October 11, 2026, a link to a variant id the store did not have returned a redirect to /cart with zero items, not a 404. With one good and one bad line, Shopify rewrote the link without the bad line and the good one landed. Re-check old ad and email links after you delete or replace products.

Do cart permalinks work with subscriptions?

No. Shopify's permalink docs say selling plans don't work with cart permalinks. Send shoppers to the product page, where they can pick the plan, or build the cart another way: customer account, a selling-plan-aware app, or a manual checkout.

Is cart sharing the same as a wishlist?

No. Sharing sends a snapshot link. Shopify says the same permalink is reusable and creates a new checkout for each customer, so one person's edits never change what the next person sees. A wishlist stores items for a person, usually with a login. Label the button with the job you actually shipped.

Does Oxify replace permalinks?

No. Keep permalinks for ads and support. Use the share button in Oxify Cart Drawer & Upsells (our app) when the shopper needs to send the bag they just built. They solve different jobs. Skip Oxify if a share button is all you want: Share Cart: Link, Social, Chat starts at $4.50/mo and MeroxIO has a free plan.

What to Do Next

Jobs 1–2 (ads, support): one permalink, add storefront=true if you want the cart page, add UTMs, then request it once with the curl line above before it goes live. Save it in helpdesk macros. Free. Already in Shopify.

Job 3 (shopper taps Share): turn on cart sharing in the drawer. Send it to a second phone. If the lines match, you are done.

Oxify Cart Drawer & Upsells (our app) includes that shopper share control next to the rest of the bag, from $9.99/mo. Keep native permalinks either way.

Ask AI about Oxify App