Which Products to Sell on Subscription: Find Them in Shopify Analytics

Two copy-paste ShopifyQL queries that rank every pack by repeat buying, how to read them, and how pack size sets the delivery rhythm.

· 5 min read· StackBack Team

Find your subscription in Shopify Analytics: a ShopifyQL query that lists every repeat buyer of each pack over 12 months, and the result for Supps Co.'s 1kg whey, a fictional brand: 620 repeat buyers, a 33% repeat share, a repeat every 33 days

Start With the Pack People Already Buy Again

Your first subscription should go on the pack customers already reorder on their own. Rank packs by repeat buying, not revenue: a bestseller can be a gift or a one-off. Three numbers for each pack tell you which one to pick.

NumberWhat it isSupps Co. example (fictional)
Repeat shareOf everyone who bought the pack in 12 months, the share who bought it again620 ÷ 1,900 = 33%
Repeat buyersPeople who bought the pack in two or more orders. Your invite list620
Days between repeats365 ÷ orders per repeat buyer. Your starting delivery rhythm365 ÷ 11 = about 33 days
Three numbers per pack, for Supps Co.'s 1kg whey, a fictional brand. Repeat share: 33%, 620 repeat buyers ÷ 1,900 buyers. Repeat buyers: 620, people who bought it in two or more orders, your invite list. Days between repeats: about 33, 365 ÷ 11 orders per repeat buyer, your starting delivery rhythm
The three numbers for Supps Co.'s 1kg whey over 12 months. Supps Co. is a fictional brand.

Supps Co. is a fictional whey protein brand; the numbers are for its 1kg tub.

This is repeat buying for one pack. For your store-wide repeat purchase rate, LTV and benchmarks, see Repeat Purchase Rate and LTV Benchmarks for Indian D2C Brands.

Two ShopifyQL Queries That Rank Every Pack

Paste each query into Shopify's ShopifyQL editor: in your Shopify admin, go to Analytics and select New exploration. Both look back 12 months.

Query 1: everyone who bought each pack

FROM sales
SHOW customers, orders
GROUP BY product_title, product_variant_title
SINCE startOfDay(-365d) UNTIL today
ORDER BY customers DESC

One row per pack: how many people bought it, and in how many orders.

Query 2: repeat buyers of each pack

FROM sales
SHOW customers, orders
GROUP BY product_title, product_variant_title, customer_id WITH GROUP_TOTALS
HAVING orders >= 2
SINCE startOfDay(-365d) UNTIL today
ORDER BY product_title ASC, product_variant_title ASC

One row per repeat buyer per pack: everyone who bought that pack in two or more orders.

Illustration of query 2 in Shopify's ShopifyQL editor, under Analytics › New exploration. 1 Paste the query: FROM sales, SHOW customers, orders, GROUP BY product_title, product_variant_title, customer_id WITH GROUP_TOTALS, HAVING orders >= 2, SINCE startOfDay(-365d) UNTIL today, ORDER BY product_title ASC, product_variant_title ASC. 2 Run it. 3 Read the totals for each pack: for Supps Co.'s 1kg whey, a fictional brand, 620 repeat buyers who placed 6,820 orders
An illustration of query 2 in the ShopifyQL editor, not Shopify's actual screen. Supps Co. is a fictional brand.

How to Read the Results

WITH GROUP_TOTALS adds subtotal columns beside each row. For each pack, read two of them:

  • customers__product_title_product_variant_title_totals: the pack's repeat buyers.
  • orders__product_title_product_variant_title_totals: the orders those repeat buyers placed for it.

Then work out the three numbers:

  1. Repeat share = repeat buyers (query 2) ÷ customers (query 1).
  2. Orders per repeat buyer = repeat buyers' orders ÷ repeat buyers.
  3. Days between repeats = 365 ÷ orders per repeat buyer.
From results to rhythm, for Supps Co.'s 1kg whey, a fictional brand. 1 Repeat share: 620 repeat buyers ÷ 1,900 buyers = 33%. 2 Orders per repeat buyer: 6,820 orders ÷ 620 repeat buyers = 11. 3 Days between repeats: 365 ÷ 11 orders per repeat buyer = about 33 days
Three divisions turn the query results into a delivery rhythm. Supps Co. is a fictional brand.
PackBuyers (query 1)Repeat buyers (query 2)Their orders (query 2)Repeat shareDays between repeats
Supps Co. 1kg whey (fictional)1,9006206,82033%about 33

Shortlist the three packs with the highest repeat share and a list big enough to invite. The winner's three numbers go on your offer card.

If the subtotals look off, export query 2 and count its rows for each pack. Each row is one repeat buyer.

Working with less than a year of data? Change -365d in both queries to the days you have, and use that number in place of 365.

Check the Gap in a Cohort Report

The 12-month average makes the gap look longer than it is. A buyer who joined in July has had only a few months to reorder. Check your shortlisted pack in Shopify's cohort report before you set the rhythm.

  1. Go to Analytics › Reports and open Customer cohort analysis.
  2. In Cohort definition, filter first orders by Product name, and pick the shortlisted product.
  3. Read across each month's row to see which month most buyers come back in.

If most come back in the month after their first order, a monthly rhythm fits. The report counts any repeat order, and filters by product rather than pack size, so read it alongside query 2. How to read a cohort table: Repeat Purchase Rate and LTV Benchmarks.

Found Your Pack? Launch It in 2 Days

Bring your three numbers to a call. We'll help you set the packs, the rhythm and the plans, and our team takes you live in 2 days.

Let the Pack Size Set the Delivery Rhythm

Ship each pack as often as one runs out. The customer picks the pack that fits their household, and the rhythm follows from how fast they finish it.

Pack size ÷ daily use = days until it runs out. Supps Co.'s 1kg tub ÷ one 30g scoop a day = 33 days, so it ships monthly. That matches the 33 days between repeats in its orders. When the maths and your orders agree, you have your rhythm.

Pack size divided by daily use gives days until it runs out: Supps Co.'s 1kg tub, a fictional brand, divided by one 30g scoop a day is 33 days, so it ships monthly. That matches the 33 days between repeats in its orders
Pack size ÷ daily use = days until it runs out. Supps Co. is a fictional brand.
ProductPackTypical useOne pack lasts about
Coffee250gA cup a day3 weeks
Atta5kgA family of four2–3 weeks
Atta10kgA family of fourA month
Protein1kgA scoop a dayA month
Diaper pants90One baby2 weeks
Ghee500mlCooking daily5–7 weeks

Typical household use, assumed. Your own days between repeats replace these.

Brands on StackBack already work this way. The Stack sells 30 servings monthly, 60 every 2 months and 90 every 3 months. Boojee Cafe ships 250g fortnightly and 1kg monthly.

Don't Let the Calendar Set the Rhythm

A monthly default on a pack that lasts three weeks hands a week of sales to someone else, every month. Say an atta brand defaults its 5kg pack to monthly. A family of four finishes it in about three weeks. So every month they buy a week of atta from the kirana or quick commerce, and the habit starts to move.

The calendar gap: an atta brand defaults its 5kg pack to monthly. A family of four finishes it in about three weeks, so every month there's a week with no atta from the brand, and they buy that week from the kirana or quick commerce
A monthly default on a pack that lasts three weeks hands a week of sales to someone else, every month.

The fix is a rhythm that matches the pack, or a pack that matches the month: a 10kg pack lasts that family about a month. Arriving too early hurts too. A pack that lands before the last one is finished piles up, and gives the customer a reason to cancel.

Offer Two or Three Packs, Each With Its Own Rhythm

Give customers a choice of packs, not a choice of frequencies. A menu of "every 2, 3, 4 or 6 weeks" makes them guess how fast they use your product. A choice of packs lets them pick their household size, and the rhythm comes with it.

Choose packs, not frequencies. Not this: a menu that asks the customer to deliver every 2, 3, 4 or 6 weeks, so they guess how fast they use the product. This: a choice of packs, as Supps Co., a fictional brand, offers: 1kg monthly or 2kg every 2 months. They pick their household size, and the rhythm comes with it
A choice of packs lets customers pick their household size; the rhythm comes with it. Supps Co. is a fictional brand.
  • Supps Co. (fictional): 1kg monthly or 2kg every two months.
  • MillD: one atta in two pack sizes.
  • Boojee Cafe: 250g fortnightly or 1kg monthly.

Make your best-selling repeat pack the default. Subscribers can still reschedule, skip or pause a delivery from the customer portal when life gets in the way.

Single Product, Bundle or Build-Your-Own?

Most first offers are a single product. A fixed bundle works only when its items run out at the same speed. A build-your-own box suits customers who rotate flavours, like The Func Lab's 2kg of protein across flavours. Box types, box cadence and box pricing are in How to Start a Subscription Box Business in India. The three-question test is decision 3 in Design a Subscription Offer: 7 Decisions.

How StackBack Handles This

StackBack is the subscription & repeat-revenue platform for Indian D2C brands on Shopify. Each pack can carry its own plans, with prepaid, pay-as-you-go and AutoPay on UPI and cards side by side. Subscribers skip, pause, swap, reschedule or add products from a customer portal. Every subscription and offer gets a one-click landing page.

Plans start at ₹4,500/month, with 0% transaction fees. Our team takes you live in 2 days. See how subscriptions work on StackBack.

Frequently Asked Questions

How do I know which product to sell on subscription?

Pick the pack your customers already buy again. Run two ShopifyQL queries over 12 months, then shortlist the packs with the highest repeat share and enough repeat buyers to invite.

Should my bestseller be my first subscription?

Not by default. Rank packs by repeat share, not revenue. A bestseller bought as a gift or a one-off won't hold a subscription.

Where do I run ShopifyQL in Shopify?

In your Shopify admin, go to Analytics and select New exploration. That opens the ShopifyQL editor, where you can paste a query and run it.

What is a good repeat share for a subscription product?

There's no single cut-off. Rank your own packs and start at the top. For store-wide benchmarks, see Repeat Purchase Rate and LTV Benchmarks.

How often should a subscription deliver?

As often as one pack runs out. Divide the pack size by daily use, then check it against the days between repeats in your orders.

Should customers choose their own delivery frequency?

Offer two or three packs, each with a fixed rhythm, instead. Customers pick a pack for their household, and can still reschedule or skip a delivery.

What if I have less than a year of orders?

Change -365d in both queries to the days you have. Then divide that number of days, not 365, by orders per repeat buyer.

Can I sell more than one product on subscription?

Yes, but start with one. Add a bundle or a build-your-own box once the first offer is working, and only if the items run out together.

Turn Your Top Pack Into a Subscription

Each pack with its own rhythm, on prepaid, pay-as-you-go and AutoPay on UPI and cards. Our team takes you live in 2 days.

Sources: Shopify Dev Docs, ShopifyQL syntax, HAVING, WITH, SINCE, UNTIL and DURING, the sales schema and Build your first query · Shopify Help Center, Customers reports. All checked 3 Nov 2026.

Subscriptions Were Impossible - Until now.

Go live in under 10 minutes. Start Selling Subscriptions. That Actually Work.