> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://molsoft.crisp.help/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Strict Limits

A **strict limit** is a limit whose rule runs on Shopify's servers, during checkout. MinCart registers it as one of your store's Shopify checkout rules, so it runs in Shopify's backend, not in the customer's browser. So every way to check out is covered: the cart page, **Buy it now** and the express checkout buttons (Shop Pay, Apple Pay, Google Pay, PayPal), cart links, abandoned cart emails, headless and agent checkouts, carts whose data was edited, and bots. The one exception is a very large cart on a limit that checks many tags and collections: see [Strict Limits: What They Can't Check](https://molsoft.crisp.help/en/article/strict-limits-what-they-cant-check-61c253/).

Your storefront doesn't change: the cart still shows the limit's messages and locks the checkout button while the limit is broken, as it does today.

| Strict limits work on every MinCart plan and every Shopify plan. Your existing limits stay as they are until you make them strict.

## Table of Contents

1. [Make a limit strict](#2-make-a-limit-strict)
2. [Where it blocks](#2-where-it-blocks)
3. [Shopify's 25 checkout rules](#2-shopifys-25-checkout-rules)
4. [What your customers see](#2-what-your-customers-see)
5. [Statuses in the limits list](#2-statuses-in-the-limits-list)
6. [When a limit can't be strict](#2-when-a-limit-cant-be-strict)
---

## Make a limit strict

1. In MinCart, open the limit.
2. In the **Strict limit** section on the right, turn on **Enforce with a Shopify checkout rule**.
3. Choose **Where it blocks** (see below).
4. Click **Save**.

MinCart creates the checkout rule as the limit saves, and shows **Saved. Checkout rule in effect.** The section then shows an **Active** badge. There's nothing to do in your Shopify admin: the permission MinCart needs to manage checkout rules was approved once, the first time you opened MinCart after strict limits came out, or at install.

The rule appears under **Settings** > **Checkout** > **Checkout rules**, named after your limit. Clicking it there opens the limit in MinCart. To stop the rule, use MinCart: turn the option off, or delete the limit (**Delete limit**, at the top of the limit's page). Either removes the rule. Shopify also lets you turn the rule off or delete it from its checkout rules page, but that doesn't last: MinCart turns it back on, or creates it again, the next time you open the limit or your limits list.

**While a limit is strict:**

* **Editing the limit** updates its rule in the same save. So do changes to your texts on the Translations page and to the limits its activation rules reference.
* **Turning off "Enforce on the storefront", or setting the limit to Draft**, turns its rule off. Turn it back on and the rule blocks again.
* **A schedule** (start and end dates) is applied by the rule itself: it starts and stops blocking at the same moment as your cart, with no action from you. The rule is created when you save, and holds its place among your checkout rules before the start date and after the end date too. To free it once the limit has ended, turn the option off or delete the limit.
* **Sidekick** doesn't turn the option on or off: its edits to a strict limit update the rule. Turn the option on or off from the limit's own page.
* **After a reinstall**, MinCart makes your strict limits strict again, as far as free checkout rules allow.
---

## Where it blocks

Under the switch, **Where it blocks** offers three choices:

| Setting | What it does |
| ---- |
| **At checkout** (default) | Blocks from the first checkout step until the order is placed. |
| **In the cart and at checkout** | Also blocks in the cart: a cart change that goes over a maximum is refused. Minimums and multiples only block at checkout, unless it's a Variant limit. |
| **When the order is placed** | Blocks only at the last step, when the customer places the order. |

**In the cart and at checkout** works like [Add to Cart Blocking](https://molsoft.crisp.help/en/article/add-to-cart-blocking-12n8ui8/), but Shopify does the check, so it also covers adds that MinCart's script never sees. In the cart, it checks:

* **Every maximum**, of every limit type.
* **The minimum and the multiple of Variant limits.** A Variant limit's item is a single cart line, which the customer can set to an allowed quantity in one change.

Minimums and multiples of the other limit types can only be met by adding several products, so refusing the adds that build up to them would trap the customer. They block from checkout on. A limit with none of the bounds above blocks as **At checkout** does. **Force** (targets not in the cart) doesn't apply in the cart either.

|| If a cart already breaks the limit (it was filled before you made the limit, for example), Shopify refuses every cart change that doesn't fix it, until the customer fixes the line the limit's message names.
---

## Shopify's 25 checkout rules

Shopify allows at most **25 active checkout rules per store**, shared by every app and your own rules. Each strict limit uses one, and so does MinCart's checkout validation when it's on. Inactive and draft strict limits don't use one.

The **Strict limit** section shows how many MinCart uses, for example **4 checkout rules used by MinCart**, with the note that a store can have at most 25 across all apps.

| Shopify only shows each app its own checkout rules. Other apps' rules count toward the 25, but MinCart can't see them, so it can't tell before you save whether one is free.

When a save finds no free rule, the limit saves as a standard limit and MinCart says **Saved as a standard limit: no checkout rule was free**. The limit keeps working in the cart, and at checkout through the checkout validation or the checkout extension if you have them, as it does today, only less securely.

To free a rule: make another limit standard or delete it, remove a checkout rule you no longer need under **Settings** > **Checkout** > **Checkout rules** (another app's, or MinCart's checkout validation if all your limits are strict), then turn the option on again and save. A freed rule never makes another limit strict on its own.
---

## What your customers see

**In your online store**, nothing changes: the cart shows the limit's messages and locks the checkout button while the limit is broken.

**At checkout**, a broken strict limit stops the customer from going further or placing the order, and checkout shows the limit's own message:

* in the customer's checkout language, or your default MinCart language when you have no text in theirs;
* with your placeholders filled in, such as `{{item}}`, `{{min}}` and `{{max}}`, and your per-limit texts;
* once per item that breaks the limit, as in the cart, up to 20 messages. The cart still shows them all.

Each strict limit's message shows once: MinCart's checkout validation and checkout extension don't repeat it. When the customer fixes their cart, checkout continues.

**With "In the cart and at checkout"**, an add or a quantity change that goes over a maximum is refused, and the theme shows the limit's message where it shows cart errors: under the add to cart button on a product page, and under the line item when the quantity is changed in the cart.

|| If a strict limit's rule can't run (a cart too large for it to read, for example), Shopify lets checkout continue rather than block it, and the limit's **Strict limit** section shows **Checkout rule errors first seen on** the date of the first error. Shopify keeps that date after the errors stop, so it can stay after the rule runs again.
---

## Statuses in the limits list

| Badge | Meaning |
| ---- |
| **Strict** | Its checkout rule is in effect. |
| **Strict · before start** | Its rule is ready and holds a checkout rule, but the start date hasn't come. |
| **Strict · ended** | Its schedule has ended. It still holds a checkout rule until you turn the option off or delete the limit. |
| **Strict · inactive** | The limit is inactive or a draft, so its rule is off. |
| **Strict · setting up** | MinCart is creating its rule. |
| **Strict · update failed** | MinCart couldn't update its rule, so the rule is off for now, and MinCart is retrying. The limit keeps working as a standard limit meanwhile. |
| **Not strict** | No checkout rule was free when MinCart restored it (after a reinstall, for example). Free one, then turn the option on again. |
---

## When a limit can't be strict

* [Strict Limits: What They Can't Check](https://molsoft.crisp.help/en/article/strict-limits-what-they-cant-check-61c253/): the settings a strict limit can't check and how to fix them, very large carts, how checkout differs from your cart, and the deprecated activation rules.
* [Checkout Security](https://molsoft.crisp.help/en/article/checkout-extensions-checkout-security-1fwvtrx/): the checkout extension, deprecated, which strict limits replace, and the checkout validation, a legacy safety net for limits that aren't strict.