Setting Up Lifetime / Once-Per-Customer Limits

Lifetime limits (also called "once per customer" limits) let you cap how many times a customer can purchase a product — not just per order, but across all their orders, forever. This is the feature you need for limited-edition drops, sample kits, introductory offers, or any product that should only be purchased once (or a fixed number of times) per customer.

This guide is a step-by-step walkthrough for Customer Purchase Limits. For the full configuration reference — including guest handling options, usage tracking, product/customer eligibility, and exclusion rules — see Setting up customer purchase limits in Shopify with DC Order Limits.

Note: Lifetime limits are for tracking purchases across orders. If you just want to restrict who can buy (e.g., only VIP customers) without tracking quantities, use a basic Order Limit with an exclusion tag — no purchase history tracking needed. See Using exclusion rules.

This guide walks you through setting up lifetime limits, explains how tracking works under the hood, and covers the most common pitfalls.

How lifetime tracking works

DC Order Limits tracks each customer's purchase history using a Shopify customer metafield. Every time a customer completes an order containing a limited product, the app increments their count. On subsequent visits, the app checks this count before allowing the purchase.

Key points:

  • Tracking persists across sessions, devices, and browsers — because it's stored on the customer record, not in cookies or sessions
  • Logged-in customers are fully tracked — the app knows who they are from the moment they land on the store
  • Non-logged-in customers can be identified at checkout when they enter their email address — but the limit only kicks in at that point, meaning they can browse and add to cart first (see why this matters)

Setting up a basic lifetime limit

To create a "one per customer, for life" rule:

  1. Go to Order Limits in your DC Order Limits dashboard
  2. Click Create rule and select Customer Purchase Limit
  3. Set Maximum Quantity to 1 (or your desired lifetime cap)
  4. Under Product Eligibility, select the products this limit applies to (specific products or product tags)
  5. Under Grouping, choose how products are counted (see Grouping options below)
  6. Under Guest Customer Handling, select "Block and require login."
  7. Save the rule

Once saved, any customer who has already purchased the product will be blocked from buying it again — even on a return visit days or weeks later.

Grouping options

Grouping determines how the app counts products toward the limit:

Grouping How it counts Example
Any Item All products in the rule share one counter Max 2 total: buying Product A + Product B = 2/2 used. Cannot buy Product C.
Per Product Each product has its own independent counter Max 1 per product: buying Product A doesn't affect Product B. Can still buy 1 of each.
Per Variant Each variant (size, color) has its own counter Max 1 per variant: buying Blue/Small doesn't affect Blue/Large or Red/Small.

For most "once per customer" use cases, use Per Product grouping. This gives each product its own independent lifetime counter, so purchasing one product doesn't consume the limit for unrelated products.

Why login matters (and what to do about guests)

Lifetime tracking requires identifying the customer. The app needs to know who is buying so it can check their history and update their count after purchase.

  • Logged-in customers → fully tracked from the moment they land on the store. The app reads and writes to their customer metafield. ✅
  • Non-logged-in customers → the app can identify them when they enter their email at checkout (Shopify looks up their customer record at that point). However, the limit only kicks in at checkout — the customer can browse your store, add restricted products to their cart, and only get blocked when they enter their email. This creates a confusing experience. ⚠️

This is why we strongly recommend setting Guest Customer Handling to "Block and require login" for lifetime limits. This ensures:

  1. Limits are enforced from the moment the customer lands on the store — no surprises at checkout
  2. Every purchase is tied to a customer account that can be tracked
  3. The customer sees a clear message asking them to log in or create an account

⚠️ Bypass risk: Because lifetime tracking is tied to customer identity (account/email), a shopper can evade limits by using a different email address or checking out as a guest without a matching customer record. For high-value limited drops and anti-reseller protection, "Block and require login" is essential — it forces every purchase through an account, making it much harder to circumvent.

"I set a lifetime limit of 2 per variant, but when my customer tries to remove the item from their cart, they see the limit error."

This can happen when the cart validation fires during cart updates. If you experience this, check that your theme's cart page isn't triggering a full validation on item removal. Contact support if the issue persists.

⚠️ The most common mistake: using Order Limits instead

"I set a limit of 1, but customers keep coming back and buying again. Why isn't it blocking repeat purchases?"

If you used a Quantity & Price Limit (Order Limit), the limit only applies to the current cart. Once the order is placed, the counter resets. A customer limited to 1 per order can come back tomorrow and buy 1 again.

For lifetime tracking, you need a Customer Purchase Limit — this is the only rule type that checks purchase history across all past orders. See Which Limit Type Should I Use? for a full comparison.

Time-based limits (monthly, yearly)

Customer Purchase Limits track lifetime totals by default, but you can create time-based limits (e.g., monthly spending caps or yearly purchase allowances) by combining the limit with a Shopify Flow reset:

  1. Set up your Customer Purchase Limit as normal (e.g., max $3,000 spending or max 5 units)
  2. In Shopify Flow, create a scheduled workflow that triggers on a recurring schedule (e.g., 1st of each month, or January 1st each year)
  3. Use the DC Order Limits reset action in the Flow to clear all customer purchase counts for that rule

This effectively turns a lifetime limit into a monthly, quarterly, or yearly limit. Common use cases:

  • Membership spending caps — e.g., $225-tier members can spend up to $3,000/month. Create separate rules per membership tag, reset monthly via Flow.
  • Employee purchase programs — e.g., max 4 items from Group A and max 5 from Group B per year. Create one rule per product group, reset annually via Flow.
  • Promotional offers — e.g., one free sample per customer per quarter. Reset quarterly.

For a step-by-step Flow setup guide, see Resetting Customer Purchase Limits with Shopify Flow

Note: We don't currently support automatic rollover of unused allowances (e.g., carrying $200 of unspent budget into the next month). Resets clear the counter to zero.

Combining lifetime limits with customer tags

You can combine lifetime limits with customer tags to create rules that target specific customer groups. First, decide what you're trying to achieve:

Goal What you need
Limit tagged customers — e.g., VIPs can only buy 1, everyone else buys normally ONE rule targeting the tag
Restrict product to ONLY tagged customers — e.g., only VIPs can buy at all TWO rules — block all + limit tagged

Option 1: Limit tagged customers only (simple)

If you want to limit how much tagged customers can buy — while letting everyone else purchase normally — you only need one rule:

Type Customer Purchase Limit
Products Select the product(s)
Customer eligibility Customers with Specific Tags → VIP
Max quantity 1
Guest handling Block and require login

Result:

  • Customers with the VIP tag → limited to 1 (lifetime)
  • Customers without the tag → no limit, can buy freely
  • Guests → blocked until they log in

Option 2: Restrict product to ONLY tagged customers

If you want to restrict a product so only customers with a specific tag can buy it (and everyone else is blocked), you need two rules:

  1. Rule 1 (block non-VIPs): Quantity & Price Limit, max 0, all customers, exclude tag VIP
  2. Rule 2 (limit VIPs): Customer Purchase Limit, max 1, customers with tag VIP, block guests

Result:

  • Guests → blocked
  • Logged-in without tag → blocked (Rule 1)
  • Logged-in with VIP tag → limited to 1 (Rule 2)

See Why Customer Tag Rules Require Login for the full two-rule pattern explanation.

Troubleshooting

Having issues with your lifetime limits? See our dedicated troubleshooting guide:

Troubleshooting: Why My Order Limits Aren't Working

The guide covers common issues like:

  • Customers can buy again after a previous order
  • Guests bypassing limits
  • Grouping issues (Product A affecting Product B)
  • Time-based limits not resetting
  • Shopify Bundles compatibility
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us