> ## 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.

# Condition Set 7

> Learn about each condition available in _Condition Set 7_.

## Always

If you don’t want to set any condition, select *Always*. The rule will run every time for everyone, without checking any conditions.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/essentials/condition-sets/always.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=63cabc820797867999942ee1d2339f92" alt="Always" width="937" height="116" data-path="images/essentials/condition-sets/always.webp" />

## Previous all conditions invalid

When all previous conditions are invalid in the previous [rule block](/guides/en/get-started/concepts#block), i-e the previous rule block did not run, this condition becomes true, ensuring the action is triggered only if none of the earlier conditions are met.

<Note>Available only when at least one previous rule block exists.</Note>

<img src="https://mintcdn.com/storespark/LBBqRFszCrC9aDAu/images/essentials/condition-sets/previous-all-conditions-invalid.webp?fit=max&auto=format&n=LBBqRFszCrC9aDAu&q=85&s=8aad3eabfdbbaa68d92a47645266a3af" alt="Previous All Conditions Invalid" width="932" height="97" data-path="images/essentials/condition-sets/previous-all-conditions-invalid.webp" />

## Customer

### Email address

This condition checks the customer’s **email address** against specific criteria, based on one of the following sub-conditions:

* **contains** (The email address includes the entered value)
* **does not contain** (The email address does not include the entered value)
* **is empty** (No email address is provided)
* **is not empty** (An email address is provided)
* **is** (The email address exactly matches the entered value)
* **is not** (The email address does not exactly match the entered value)

For **contains**, **does not contain**, **is**, and **is not**, type a value in the text box to compare against the customer’s email address.

> For example, `contains @gmail.com` → Matches any email address ending with “@gmail.com”.

<img src="https://mintcdn.com/storespark/ofsiv6B2ZU5fNLt1/images/essentials/condition-sets/email-contains.webp?fit=max&auto=format&n=ofsiv6B2ZU5fNLt1&q=85&s=58d50b96c704771c0ca7ff82e04189a3" alt="Email Contains" width="935" height="111" data-path="images/essentials/condition-sets/email-contains.webp" />

For **is empty** and **is not empty**, no value entry is required.

> For example, `is empty` → Matches when the email field is blank.

<img src="https://mintcdn.com/storespark/ofsiv6B2ZU5fNLt1/images/essentials/condition-sets/email-empty.webp?fit=max&auto=format&n=ofsiv6B2ZU5fNLt1&q=85&s=c3b5a536c2077b3002a2b7205f7190d4" alt="Email Empty" width="932" height="111" data-path="images/essentials/condition-sets/email-empty.webp" />

## Discount

### Discount code

This condition evaluates discount codes used at checkout against selected values and determines whether the rule is satisfied based on the chosen logic.

* **Has any of these values** (The condition is satisfied if at least one entered discount code matches one or more of the selected values )

* **Does not have any of these values** ( The condition is satisfied if none of the entered discount codes match any of the selected values )

* **Has any other value besides these values** ( The condition is satisfied if at least one entered discount code is different from the selected values )

* **Does not have any other value besides these values** ( The condition is satisfied only if all entered discount codes exactly match the selected values and no additional discount codes are present )

<Note>
  Please use `*` wildcard to match multiple discount codes. For example, `FREE*`
  will match FREE12, free-590 etc. Use `?` to match to any single character.
</Note>

For **Has any of these values**, **Does not have any of these values**, **Has any other value besides these values**, and **Does not have any other value besides these values**, enter one or more values into the field. Separate multiple values with commas or select from the dropdown.

> For example, `Does not have any of these values: SAVE10, ORDER20%OFF` → Matches discount codes other than “SAVE10” or “ORDER20%OFF”.

<img src="https://mintcdn.com/storespark/1MhwaiBAXuli56k3/images/essentials/condition-sets/discount-codes.webp?fit=max&auto=format&n=1MhwaiBAXuli56k3&q=85&s=4c54d2246ec243105f7e1c9e785c7035" alt="Discount Codes" width="1296" height="299" data-path="images/essentials/condition-sets/discount-codes.webp" />

## Localization

### User language

This condition checks the language selected by the customer, based on one of the following sub-conditions:

* **Has any of these values** (Matches if the customer language is from the given list)
* **Does not have any of these values** (Matches if the customer language is not from the given list)
* **Has any other value besides these values** (Matches if the customer language is not from the given list)
* **Does not have any other value besides these values** (Matches if the customer language is from the given list and no others)

For any of the above options, search and select one or more languages from the list. You can also use the **Paste**, **Copy all**, or **Clear all** options for quick selection.

> For example, `Does not have any of these values: English, French` → Matches if the field does not contain “English” or “French”.

<img src="https://mintcdn.com/storespark/ofsiv6B2ZU5fNLt1/images/essentials/condition-sets/languages.webp?fit=max&auto=format&n=ofsiv6B2ZU5fNLt1&q=85&s=ae78f46939a24093ce1ec077cbe1ad31" alt="Languages" width="776" height="426" data-path="images/essentials/condition-sets/languages.webp" />

## Billing Address

### Company

Used to compare the customer’s company name (The company name field on the checkout page) with one or more specific values, counts, or states, based on one of the following sub-conditions:

* **Contains** (Matches if the company name contains the specified value or partial value)
* **Does not contain** (Matches if the company name does not contain the specified value or partial value)
* **Is empty** (Matches if no company name is entered)
* **Is not empty** (Matches if any value is entered in the company name field)
* **Is** (Matches if the company name exactly matches the specified value)
* **Is not** (Matches if the company name is not exactly the specified value)
* **Has no of digits greater than or equals** (Matches if the total number of digits in the company name is greater than or equal to the specified number)
* **Has no of digits less than or equals** (Matches if the total number of digits in the company name is less than or equal to the specified number)
* **Has no of characters greater than or equals** (Matches if the total number of characters in the company name is greater than or equal to the specified number)
* **Has no of characters less than or equals** (Matches if the total number of characters in the company name is less than or equal to the specified number)
* **Has only** (Matches if the company name contains only the allowed character type from the dropdown)
* **Does not have only** (Matches if the company name contains characters other than the allowed character type from the dropdown)

For **Contains**, **Does not contain**, **Is**, and **Is not**, enter the value to match.

> For example, `Contains: Tech` → Matches if the company name contains the word “Tech”.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/essentials/condition-sets/company-contains.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=833658432a5fdaf681d85abc58b28b88" alt="Company Contains" width="1170" height="127" data-path="images/essentials/condition-sets/company-contains.webp" />

For **Has only** and **Does not have only**, select the character type from the dropdown:

* **English characters** (Allows only A–Z and a–z)
* **English characters + accent variants** (Allows A–Z, a–z, plus accented characters like é, ñ, ö)
  > For example, `Has only: English characters` → Matches if the company name contains English characters only.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/essentials/condition-sets/company-has-only.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=b7744754b5a307cdc76f6f57c65b09ed" alt="Company Has Only" width="1162" height="122" data-path="images/essentials/condition-sets/company-has-only.webp" />

For **Has no of digits/characters greater than or equals** or **less than or equals**, enter the threshold value.

> For example, `Has no of characters greater than or equals 10` → Matches if the company name contains 10 or more characters.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/essentials/condition-sets/company-greater-than.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=eba011562489ac99ad384a0465aa6967" alt="Company Greater Than" width="1168" height="127" data-path="images/essentials/condition-sets/company-greater-than.webp" />

For **Is empty** and **Is not empty**, no value entry is needed.

> For example, `Is empty` → Matches if the company name field is left blank.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/essentials/condition-sets/company-is-empty.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=c62dea874b4ae93d727911cdee2811f6" alt="Company Is Empty" width="1167" height="123" data-path="images/essentials/condition-sets/company-is-empty.webp" />

### Phone number

Used to compare the customer’s phone number (The phone number field on the checkout page) with one or more specific values, counts, or states, based on one of the following sub-conditions:

* **Contains** (Matches if the phone number contains the specified value or partial value)
* **Does not contain** (Matches if the phone number does not contain the specified value or partial value)
* **Is empty** (Matches if no phone number is entered)
* **Is not empty** (Matches if any value is entered in the phone number field)
* **Is** (Matches if the phone number exactly matches the specified value)
* **Is not** (Matches if the phone number is not exactly the specified value)
* **Has no of digits greater than or equals** (Matches if the total number of digits in the phone number is greater than or equal to the specified number)
* **Has no of digits less than or equals** (Matches if the total number of digits in the phone number is less than or equal to the specified number)

For **Contains**, **Does not contain**, **Is**, and **Is not**, enter the value to match.

> For example, `Contains: 123` → Matches if the phone number contains “123” anywhere.

<img src="https://mintcdn.com/storespark/LBBqRFszCrC9aDAu/images/essentials/condition-sets/phone-number-contains.webp?fit=max&auto=format&n=LBBqRFszCrC9aDAu&q=85&s=60e973dbfb090d2369408537e3484876" alt="Phone Number Contains" width="1168" height="129" data-path="images/essentials/condition-sets/phone-number-contains.webp" />

For **Has no of digits greater than or equals** or **Has no of digits less than or equals**, enter the threshold value.

> For example, `Has no of digits greater than or equals 10` → Matches if the phone number contains 10 or more digits.

<img src="https://mintcdn.com/storespark/LBBqRFszCrC9aDAu/images/essentials/condition-sets/phone-number-greater-than.webp?fit=max&auto=format&n=LBBqRFszCrC9aDAu&q=85&s=09d2db4e25c0bc976a6f2fddd15300d9" alt="Phone Number Greater Than" width="1171" height="130" data-path="images/essentials/condition-sets/phone-number-greater-than.webp" />

For **Is empty** and **Is not empty**, no value entry is needed.

> For example, `Is empty` → Matches if the phone number field is left blank.

<img src="https://mintcdn.com/storespark/LBBqRFszCrC9aDAu/images/essentials/condition-sets/phone-number-is-empty.webp?fit=max&auto=format&n=LBBqRFszCrC9aDAu&q=85&s=713226b65b4976f1927828b4b9972877" alt="Phone Number Is Empty" width="1172" height="130" data-path="images/essentials/condition-sets/phone-number-is-empty.webp" />

### City / Area

Used to compare the City / Area (The City/Area field on the checkout page) values with one or more specific values, counts, or states, based on one of the following sub-conditions:

* **Has any of these values** (Matches if the city field contains at least one of the listed values)

* **Does not have any of these values** (Matches if the city field does not contain any of the listed values)

* **Has any other value besides these values** (Matches if the city field contains values other than the listed ones)

* **Does not have any other value besides these values** (Matches if the city field contains only the listed values and no others)

* **Has number of digits greater than or equals** (Matches if the number of digits in the city field is greater than or equal to the specified number)

* **Has number of digits less than or equals** (Matches if the number of digits in the city field is less than or equal to the specified number)

* **Is empty** (Matches if the city field has no value)

* **Is not empty** (Matches if the city field contains any value)

For **Has any of these values**, **Does not have any of these values**, **Has any other value besides these values**, **Does not have any other value besides these values**, enter one or more values to match. Separate multiple values with commas.

<Note>
  Use \* wildcard to match partial city names. For example, Santo\* will match
  santo domingo, santodomngo etc.
</Note>

> For example, `Has any of these values: Lahore, Karachi` → Matches if the field contains either “Lahore” or “Karachi”.

<img src="https://mintcdn.com/storespark/LBBqRFszCrC9aDAu/images/essentials/condition-sets/multiple-cities.webp?fit=max&auto=format&n=LBBqRFszCrC9aDAu&q=85&s=e5ccb1627e7e04c6b715ae8caa0405f2" alt="Multiple Cities" width="949" height="208" data-path="images/essentials/condition-sets/multiple-cities.webp" />

For **Has number of digits greater than or equals** or **Has number of digits less than or equals**, enter the digit count threshold.

> For example, `Has number of digits greater than or equals 5` → Matches if the field’s value has five or more digits.

<img src="https://mintcdn.com/storespark/ofsiv6B2ZU5fNLt1/images/essentials/condition-sets/count-cities.webp?fit=max&auto=format&n=ofsiv6B2ZU5fNLt1&q=85&s=46819c75274de3cca47f68c25331bf6c" alt="Count Cities" width="940" height="107" data-path="images/essentials/condition-sets/count-cities.webp" />

For **Is empty** and **Is not empty**, no value entry is needed.

> For example, `Is empty` → Matches if no value is entered for the field.

<img src="https://mintcdn.com/storespark/lkY0mx0uZwe--5lB/images/essentials/condition-sets/city-available.webp?fit=max&auto=format&n=lkY0mx0uZwe--5lB&q=85&s=ea00f811134d990ce88643388f52923e" alt="City Available" width="937" height="110" data-path="images/essentials/condition-sets/city-available.webp" />

### Province code / State code

Used to compare the Province / State (The Province/State field on the checkout page) values with one or more specific values or states, based on one of the following sub-conditions:

* **Has any of these values** (Matches if the province field contains at least one of the listed values)

* **Does not have any of these values** (Matches if the province field does not contain any of the listed values)

* **Has any other value besides these values** (Matches if the province field contains values other than the listed ones)

* **Does not have any other value besides these values** (Matches if the province field contains only the listed values and no others)

* **Is empty** (Matches if the province field has no value)

* **Is not empty** (Matches if the province field contains any value)

For **Has any of these values**, **Does not have any of these values**, **Has any other value besides these values**, **Does not have any other value besides these values**, enter one or more values to match. Separate multiple values with commas.

<Note>
  Add 2 or 3 letter province/state code abbreviation in "ISO\_3166-2" format
  only.
</Note>

> For example, `Does not have any other value besides these values: CA, TX` → Matches if the field contains only “CA” or “TX” and no other values.

<img src="https://mintcdn.com/storespark/LBBqRFszCrC9aDAu/images/essentials/condition-sets/multiple-provinces.webp?fit=max&auto=format&n=LBBqRFszCrC9aDAu&q=85&s=11b3f6f87701d6eb5798c5d2663ccd1e" alt="Multiple Provinces or States" width="949" height="210" data-path="images/essentials/condition-sets/multiple-provinces.webp" />

For **Is empty** and **Is not empty**, no value entry is needed.

> For example, `Is not empty` → Matches if any value is entered for the field.

<img src="https://mintcdn.com/storespark/LBBqRFszCrC9aDAu/images/essentials/condition-sets/province-not-available.webp?fit=max&auto=format&n=LBBqRFszCrC9aDAu&q=85&s=ad2638c1a1a27083cf6bb2126a640d81" alt="Province or State Not Available" width="932" height="106" data-path="images/essentials/condition-sets/province-not-available.webp" />

### Country

Used to compare the Country (The Country field on the checkout page) values with one or more specific countries, based on one of the following sub-conditions:

* **Has any of these values** (Matches if the country field contains at least one of the selected countries)
* **Does not have any of these values** (Matches if the country field does not contain any of the selected countries)
* **Has any other value besides these values** (Matches if the country field contains countries other than the selected ones)
* **Does not have any other value besides these values** (Matches if the country field contains only the selected countries and no others)

For any of the above options, search and select one or more countries from the list. You can also use the **Paste**, **Copy all**, or **Clear all** options for quick selection.

> For example, `Does not have any other value besides these values: Portugal, Poland` → Matches if the field contains only “Portugal” or “Poland” and no other countries.

<img src="https://mintcdn.com/storespark/8qTRK-A8nfquzM_u/images/essentials/condition-sets/select-countries.webp?fit=max&auto=format&n=8qTRK-A8nfquzM_u&q=85&s=3af00c6e8983a5c5cdeabdd298024074" alt="Multiple Countries" width="795" height="422" data-path="images/essentials/condition-sets/select-countries.webp" />

### Zip code / Postal code

Used to compare the Zip code / Postal code (The Zip/Postal Code field on the checkout page) values with one or more specific zip or postal codes, based on one of the following sub-conditions:

* **Has any of these values** (Matches if the zip/postal code field contains at least one of the listed values)
* **Does not have any of these values** (Matches if the zip/postal code field does not contain any of the listed values)
* **Has value in between these values** (Matches if the zip/postal code field value falls within the specified range)
* **Does not have value in between these values** (Matches if the zip/postal code field value does not fall within the specified range)
* **Has any other value besides these values** (Matches if the zip/postal code field contains values other than the listed ones)
* **Does not have any other value besides these values** (Matches if the zip/postal code field contains only the listed values and no others)
* **Has only digits** (Matches if the zip/postal code field contains only numeric characters)
* **Does not have only digits** (Matches if the zip/postal code field contains any non-numeric characters)
* **Has number of digits in between** (Matches if the number of digits falls within the specified range)
* **Does not have number of digits in between** (Matches if the number of digits does not fall within the specified range)
* **Is empty** (Matches if the zip/postal code field has no value)
* **Is not empty** (Matches if the zip/postal code field contains any value)

Use **Has any of these values**, **Does not have any of these values**, **Has any other value besides these values**, or **Does not have any other value besides these values** to match against one or more specific zip/postal codes. Separate multiple values with commas.

<Note>
  Use \* wildcard to match multiple zip codes. For example, BT\* will match BT12,
  bt-590 etc. Use ? to match to any single character.
</Note>

> For example, `Has any of these values: BT*` → Matches all zip/postal codes starting with “BT”.

<img src="https://mintcdn.com/storespark/ofsiv6B2ZU5fNLt1/images/essentials/condition-sets/have-zipcodes.webp?fit=max&auto=format&n=ofsiv6B2ZU5fNLt1&q=85&s=062028034923601a16661a885810b4e6" alt="Have Zipcodes" width="1176" height="348" data-path="images/essentials/condition-sets/have-zipcodes.webp" />

> Another example, `Does not have any of these values: 12345, 67890` → Matches if the code is not “12345” or “67890”.

<img src="https://mintcdn.com/storespark/ofsiv6B2ZU5fNLt1/images/essentials/condition-sets/dont-have-zipcodes.webp?fit=max&auto=format&n=ofsiv6B2ZU5fNLt1&q=85&s=892d823a2b72ef6d1fbb37b38203e2df" alt="Dont Have Zipcodes" width="1178" height="247" data-path="images/essentials/condition-sets/dont-have-zipcodes.webp" />

Use **Has value in between these values** or **Does not have value in between these values** to match zip/postal codes within or outside a numeric range.

<Note>
  Enter numbers only. All values ranging in between starting value until the
  last value will be matched, including the starting and last value.
</Note>

> For example, `Has value in between these values: 10000 – 20000` → Matches if the code is between “10000” and “20000”.

<img src="https://mintcdn.com/storespark/ofsiv6B2ZU5fNLt1/images/essentials/condition-sets/in-between-value-zipcodes.webp?fit=max&auto=format&n=ofsiv6B2ZU5fNLt1&q=85&s=0459e450d10a5735928238582846fd66" alt="In Between Value Zipcodes" width="1175" height="212" data-path="images/essentials/condition-sets/in-between-value-zipcodes.webp" />

Use **Has only digits** or **Does not have only digits** to match zip/postal codes that contain only numeric characters (0–9) or those that include any non-numeric characters, such as letters, spaces, or symbols.

> For example, `Has only digits` → Matches digits only (0–9).

<img src="https://mintcdn.com/storespark/8qTRK-A8nfquzM_u/images/essentials/condition-sets/zipcode-no-field-digits.webp?fit=max&auto=format&n=8qTRK-A8nfquzM_u&q=85&s=fcf48248b7b7e325dfb2a6bdb493ac26" alt="Zipcode No Field Digits" width="1175" height="133" data-path="images/essentials/condition-sets/zipcode-no-field-digits.webp" />

Use **Has number of digits in between** or **Does not have number of digits in between** to match based on the count of digits in the code.

<Note>
  Enter numbers only. All values ranging in between given number of digits will
  be matched.
</Note>

> For example, `Has number of digits in between: 4 – 6` → Matches codes that contain between 4 and 6 digits.

<img src="https://mintcdn.com/storespark/ofsiv6B2ZU5fNLt1/images/essentials/condition-sets/in-between-digits-zipcodes.webp?fit=max&auto=format&n=ofsiv6B2ZU5fNLt1&q=85&s=79f2039b53e2982e2900cfd6e49c6766" alt="In Between Digits Zipcodes" width="1170" height="211" data-path="images/essentials/condition-sets/in-between-digits-zipcodes.webp" />

Use **Is empty** or **Is not empty** when you only need to check whether the field is filled in.

> For example, `Is not empty` → Matches if any value is entered in the field

<img src="https://mintcdn.com/storespark/8qTRK-A8nfquzM_u/images/essentials/condition-sets/zipcode-no-field.webp?fit=max&auto=format&n=8qTRK-A8nfquzM_u&q=85&s=90dfba6028983e854759c20b4f3d92b2" alt="Zipcode No Field" width="1173" height="132" data-path="images/essentials/condition-sets/zipcode-no-field.webp" />
