> ## Documentation Index
> Fetch the complete documentation index at: https://docs.checkoutrules.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Concepts

> Learn the key concepts behind how BeSure Checkout Rules works to customize and control your Shopify checkout experience.

<iframe className="w-full aspect-video rounded-xl" src="https://www.youtube.com/embed/R5lDcpT9AWs?si=Z7c_sFBwKfSelpN-" title="BeSure Concepts" style={{ border: 0 }} allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />

## What is a rule?

A **checkout rule** is a set of logic that defines **what** should happen during the checkout process and **when**.

## Rule essentials

These are the essential parts of every rule that define its purpose, when it should run, what it should do, and how those actions are organized.

### Status

Indicates the current state of the rule, whether it’s in testing, active, or deactivated. This helps control when the rule takes effect.

<Tip>
  It is recommended to start with a rule in testing mode, to ensure that the
  rule is working as expected without affecting your customers. You can switch
  to active mode after testing.
</Tip>

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/rule-status.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=a16be9d93d718316e9bd62ac0d29b3c3" alt="Rule Status" width="966" height="292" data-path="images/concepts/rule-status.webp" />

Here is an example of how to turn on the testing mode on the checkout page.

<Frame>
  <img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/testing.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=91f325a20e3c6b59f63ca6b4764f1506" alt="Testing Mode" width="1120" height="358" data-path="images/concepts/testing.webp" />
</Frame>

### Condition set

You can use any condition set that suits your needs, if you are unsure you can either start by just using condition set 1 or by using the search box to search which condition set has that condition which you need and switching to it.

> For example, if you want to hide a shipping method based on the product metafield, then you should switch to the condition set 4, then you will be able to use the product metafield condition.

<Warning>
  Condition set selection is only available at rule creation time. You cannot
  change the condition set after the rule is created. If you need a different
  condition set, create a new rule.
</Warning>

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/condition-set.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=1eb491729fdb0f7172391e2626e4c466" alt="Condition Set" width="2276" height="614" data-path="images/concepts/condition-set.webp" />

Get more information about condition sets [here](/guides/en/essentials/condition-sets/introduction) or learn more about each condition set below.

<CardGroup cols={3}>
  <Card title="Condition Set 1" icon="1" href="/guides/en/essentials/condition-sets/condition-set-1">
    Learn more about condition set 1.
  </Card>

  <Card title="Condition Set 2" icon="2" href="/guides/en/essentials/condition-sets/condition-set-2">
    Learn more about condition set 2.
  </Card>

  <Card title="Condition Set 3" icon="3" href="/guides/en/essentials/condition-sets/condition-set-3">
    Learn more about condition set 3.
  </Card>

  <Card title="Condition Set 4" icon="4" href="/guides/en/essentials/condition-sets/condition-set-4">
    Learn more about condition set 4.
  </Card>

  <Card title="Condition Set 5" icon="5" href="/guides/en/essentials/condition-sets/condition-set-5">
    Learn more about condition set 5.
  </Card>

  <Card title="Condition Set 6" icon="6" href="/guides/en/essentials/condition-sets/condition-set-6">
    Learn more about condition set 6.
  </Card>

  <Card title="Condition Set 7" icon="7" href="/guides/en/essentials/condition-sets/condition-set-7">
    Learn more about condition set 7.
  </Card>
</CardGroup>

### Conditions (the "when")

Conditions are based on the selected condition set and define the criteria that must be met to trigger the rule. Use AND (all must be true), OR (any one is true), to group related logic for complex cases.

> See example below - here rule will run under any of the 2 circumstances: when date is 4 August 2025, and that day is Monday, then the rule will run, OR, everyday when time is 00:00 which basically means every day at midnight.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/condition.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=4cbe48ae4975e7fdba9b2daec15114b7" alt="Condition" width="971" height="454" data-path="images/concepts/condition.webp" />

### Action (the "what")

When the conditions in the "when" section are true, the system will perform the action you define. Each action is executed only if its specific criteria (action condition and operations) are also met.

> See example below - here the action is set to reorder shipping methods in a fixed way, by placing 'Next Day Delivery' at the top and putting all the other shipping methods below it.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/action.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=92881f569be151a8f65f3d97ece129db" alt="Action" width="977" height="320" data-path="images/concepts/action.webp" />

### Block

Together, **conditions** (the "when"), and the **action** (the "what") make up a **rule block**. You can use **multiple blocks** within a rule to handle complex scenarios easily.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/block.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=9c41fb1c7d6b485e15926c8a756ddd7b" alt="Block" width="2170" height="1002" data-path="images/concepts/block.webp" />

## Additional options (for some rules)

These optional parts appear in specific rule types and add more control over how and where the rule applies or behaves under special conditions.

### Schedule

The rule is set to activate automatically at a future date and time, and optionally deactivate at a specified end date and time. This status is currently available only for discount rules.

<img src="https://mintcdn.com/storespark/4qWsVuvzOyUV38lJ/images/essentials/discount/schedule-status.webp?fit=max&auto=format&n=4qWsVuvzOyUV38lJ&q=85&s=b7c286a1661da52ea46b03bae1b86cde" alt="Schedule Status" width="993" height="552" data-path="images/essentials/discount/schedule-status.webp" />

### Target

Defines where the rule applies (e.g., shipping or pickup). Used only in shipping rules.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/target.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=ccaf2024843cf7407c6205f76e30ef54" alt="Target" width="961" height="250" data-path="images/concepts/target.webp" />

### Combinations

Controls whether the rule discount can be combined with product, order, or shipping discounts. Used only in **Discount** rules.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/combinations.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=f37ee3ba0f84f5e9687a45505f6e5061" alt="Combinations" width="962" height="242" data-path="images/concepts/combinations.webp" />

### Strategy

If the discount rule has multiple blocks, then strategy selection comes into play. It determines how those rule blocks are applied (e.g., first valid one or highest value). Used only in **Discount Order Amount** rule.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/strategy.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=5a35d6c713a96630942ea96861989419" alt="Strategy" width="962" height="212" data-path="images/concepts/strategy.webp" />

### Behavior

Determines what happens when the rule is triggered. You can choose to immediately block the checkout and display an error message, show a warning message while allowing the customer to continue checkout, or allow the customer to proceed through checkout and only block them when they attempt to complete the order. Used only in **Validate or Block Checkout** rules.

<img src="https://mintcdn.com/storespark/4eaCOBOFoZcnvNJg/images/concepts/behavior.webp?fit=max&auto=format&n=4eaCOBOFoZcnvNJg&q=85&s=2efaede37a1f283734ea952e6c56e95c" alt="Behavior" width="1202" height="315" data-path="images/concepts/behavior.webp" />

### Subscription Deliveries

Control how shipping discounts apply to subscription orders. Choose whether the discount should apply only to the first delivery or extend to recurring deliveries.

**Limit shipping discount to first delivery**\
Applies the shipping discount only to the first subscription delivery. Recurring deliveries will use standard shipping rates.

**Limit shipping discount to first delivery and set recurring delivery free**\
Applies the shipping discount to the first delivery and provides free shipping for recurring deliveries.

**Limit shipping discount to first delivery and set all recurring deliveries free**\
Provides free shipping for all recurring subscription deliveries after the first shipment.

<Warning>
  The **Subscription Deliveries** section options apply only to shipping
  products that have a subscription. For normal (non-subscription) product
  deliveries, you do not need to select any option. The default setting will
  work as expected.
</Warning>

<img src="https://mintcdn.com/storespark/2g9tVGMoSQgdElHj/images/essentials/shipping/subscription-deliveries.webp?fit=max&auto=format&n=2g9tVGMoSQgdElHj&q=85&s=cd367cdf58412d88fa43db9981082ad0" alt="Subscription Deliveries" width="964" height="177" data-path="images/essentials/shipping/subscription-deliveries.webp" />

### Fallback

Defines what happens if the app cannot evaluate a rule at checkout.

* For the **Validate or Block Checkout** rule, this setting determines whether checkout is allowed or blocked if the app encounters an unexpected issue while processing the rule.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/fallback.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=b5710aea78ae7167cebea8308f751d26" alt="Fallback" width="959" height="133" data-path="images/concepts/fallback.webp" />

* For rules that use **Date Time** or **Customer location (using GeoIP)** conditions, this setting defines what happens if the app cannot determine the required time/date or customer location:
  * **Do nothing**: No action is applied by the rule.
  * **Do this action**: The configured fallback action is applied instead.

<img src="https://mintcdn.com/storespark/1MhwaiBAXuli56k3/images/essentials/condition-sets/fallback-date-time-location.webp?fit=max&auto=format&n=1MhwaiBAXuli56k3&q=85&s=239226425db836eee208d0e6c4893eb5" alt="Fallback Date Time Location" width="867" height="260" data-path="images/essentials/condition-sets/fallback-date-time-location.webp" />

### Maximum discount uses

Defines the **total number of times** the discount can be used across all customers. Optionally, can also restrict usage to **one time per customer**. Only applicable when using discount codes, not automatic discounts. Used only in **Discount** rules.

> For example, if usage limit **set to 1** and **"Limit to one use per customer"** is unchecked, only one customer will be able to use the discount code. After that, the code becomes invalid for everyone else.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/concepts/maximum-discount-uses.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=7e7cd399595d0e12d2a6b92d86cadf37" alt="Fallback" width="962" height="168" data-path="images/concepts/maximum-discount-uses.webp" />
