Shopify's documentation lists selling plans as a limitation of cart permalinks (/cart/variantID:quantity). Extra parameters such as selling_plan=… are not read, so the variant is added as a one-time purchase. The subscription has to be added through the storefront's /cart/add.js, where each line accepts a selling_plan, or through a tool that does that for you. Cartsella Studio's campaign links do exactly that: you pick the product's subscription option, share one short link, and the shopper lands on a cart or checkout that already holds the subscription.
What you're seeing
It usually looks like one of these:
- You link to
/cart/39897499729985:1?selling_plan=610435137and the cart shows the one-time price, with no delivery frequency. - Checkout opens without the "Subscribe and save" line, and the order comes through as a normal order, not a subscription contract.
- A link you tested on a product that has no selling plan looks fine, so it seems to be the subscription products only. That is exactly the case.
Why it happens
A selling plan is Shopify's way of saying "this purchase repeats": deliver every 30 days, 10% off. Subscription apps built on selling plans, including Shopify Subscriptions, attach those plans to products, and the plan the shopper picks travels with the cart line.
A permalink, in contrast, is a short address that only knows variant IDs and quantities (plus a few extras such as a discount code). There is no slot in it for a plan. Shopify's own cart permalinks documentation lists selling plans among the things that don't work, and the same goes for pre-order and Try Before You Buy options. Adding selling_plan to the address doesn't produce an error; it is just not used.
Check it in 30 seconds
- Open
yourstore.com/products/your-product.js. Ifselling_plan_groupshas entries, the product has plans, and a plain permalink will always drop them. - Open
yourstore.com/cart.jsafter using your link. A line with aselling_plan_allocationis a subscription. If it's missing, the line is a one-time purchase. - If the product has no plans at all, the cause is somewhere else (the plan isn't attached to that product in your subscription app).
Fix 1: Link to the product page with the plan chosen
Product pages understand a plan in the address:
https://yourstore.com/products/coffee-beans?variant=39897499729985&selling_plan=610435137
In themes that support it, the page opens with that subscription option selected. The catch: the shopper still taps "Add to cart" and goes through the cart, and it's one product per link. Good for a single refill, weak for kits or multi-product offers.
Fix 2: Add the line through the cart API
The storefront's POST /cart/add.js accepts a selling_plan on each line. A small script on a page of your store can add the lines and then send the shopper to checkout:
fetch("/cart/add.js", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ items: [
{ id: 39897499729985, quantity: 1, selling_plan: 610435137 }
] })
}).then(() => { location.href = "/checkout"; });
It works, but you now own a page, a script, the plan IDs and their upkeep. If a plan is deleted or re-created, the ID in your script is wrong and nothing tells you. Every new link means editing code.
Fix 3: A campaign link that does the cart add for you (the one that scales)
Cartsella Studio's campaign links use the same cart API from Fix 2, so you don't have to write or maintain it. This is what the problem in this post turns into:
A plain cart permalink
- Variant and quantity only
- The subscription is dropped: a one-time purchase at full price
- The shopper has to find "Subscribe" again, or buys once by mistake
A campaign link
- Each product with its subscription option already chosen
- Subscription and one-time products in the same link
- Discount code applied, and it opens the cart or straight at checkout
- Create a campaign link and add the product.
- Choose its subscription option from the plans Shopify has on file for that product.
- Optionally add a discount code you created in Shopify, and choose cart or checkout.
- Share the link on your own domain (
/apps/go/refill) or download its QR code.
You pick the plan from a list instead of copying IDs, so there is no script to edit when you add a product. A link with no subscription lines still opens through a normal permalink; the heavier route is used only when a plan needs it. You can change the products behind a link later without reprinting its QR code, and each link shows its clicks. Nothing is added to your theme or products. Campaign links are included on Duo, Pro and Agency. The full walkthrough is in How to create a Shopify cart link for subscription products.
Stop sending shoppers to a one-time purchase. Send them to the subscription.
Join the waitlist: 50% off your first yearThings that trip people up
- The plan has to belong to that product. A selling plan ID from another product's group won't apply. Copy IDs from the product you're linking.
- Old guesses from forums. Chains of
/cart/clearand/cart/addthroughreturn_tocirculate in community threads. Shopify doesn't document them, and they break when a theme changes. - Password-protected stores. Permalinks can't get past a storefront password, so test on an open store (or a dev store with the password off).
- Test in a private window. An old cart in your browser makes a good link look broken.
Frequently asked questions
Why does my Shopify cart permalink add a one-time purchase instead of a subscription?
Cart permalinks only carry variant IDs, quantities and a few extras. Shopify's documentation lists selling plans as unsupported, so the variant is added without its plan.
Can I add selling_plan to a /cart/variant:quantity link?
You can write it, but Shopify ignores it. Use the storefront's /cart/add.js, where each line accepts selling_plan, or a tool that calls it for you.
How do I find the selling plan ID?
Open yourstore.com/products/handle.js. Each plan under selling_plan_groups has an id.
Does this affect Shopify Subscriptions and other subscription apps?
It affects any app that uses Shopify selling plans, Shopify Subscriptions included. The limit is in the permalink, not in the app.
Can one link hold a subscription and a one-time product?
Yes, with a campaign link: each product is either one-time or has its subscription option chosen, and the cart is filled in one step.
Read next: Subscription reorders in one scan · Cart links with a discount · Campaign links