Condition fields
A condition reads a field from the cart, the customer, the destination, or the billing address. The available fields are organised by subject — what part of the checkout the field reads. Some subjects are collection subjects that hold multiple records, such as delivery options or payment methods. Fields are also scoped by surface: shipping operations show destination-address fields; payment operations show billing-address fields.
The operator menu in the condition form changes to match the field’s type. The table below lists every available field, the subject it reads, the type of value, and the operators it accepts.
Customer
Section titled “Customer”| Field | Type | Operators | Reads |
|---|---|---|---|
customer_tags |
String, multi-value | contains |
The tags assigned to the logged-in customer. The condition is true if any of the listed tags match. |
If the customer is not logged in, customer conditions are treated as not matching. Build a separate operation or add a negate if you want the rule to apply to guests.
Destination
Section titled “Destination”Destination fields read the customer’s delivery address. These fields are available on shipping operations.
| Field | Type | Operators | Reads |
|---|---|---|---|
destination_country_code |
String | equals, contains, starts_with, ends_with |
The shipping country as an ISO 3166-1 alpha-2 code (e.g. US, CA, GB, DE). |
destination_province_code |
String | equals, contains, starts_with, ends_with |
The shipping province / state as an ISO 3166-2 code (e.g. CA, NY, ON). |
destination_postal_code |
String | equals, contains, starts_with, ends_with |
The shipping postal / ZIP code as a string (e.g. 90210, SW1A 1AA). |
equalson a destination field is exact-match against the code.containsis useful for postcode prefixes (e.g. allSW*London postcodes).
Billing
Section titled “Billing”Billing fields read the customer’s billing address. These fields are available on payment operations.
| Field | Type | Operators | Reads |
|---|---|---|---|
billing_country_code |
String | equals, contains, starts_with, ends_with |
The billing country as an ISO 3166-1 alpha-2 code (e.g. US, CA, GB, DE). |
billing_province_code |
String | equals, contains, starts_with, ends_with |
The billing province / state as an ISO 3166-2 code (e.g. CA, NY, ON). |
billing_postal_code |
String | equals, contains, starts_with, ends_with |
The billing postal / ZIP code as a string (e.g. 90210, SW1A 1AA). |
Billing address fields behave the same as destination fields but apply only to payment operations (hide, rename, and sort payment methods). The system validates that billing fields are only used on payment operations, and destination fields are only used on shipping operations.
Delivery Option
Section titled “Delivery Option”Delivery option fields read details about each available delivery method. These fields are available on shipping operations.
| Field | Type | Operators | Reads |
|---|---|---|---|
delivery_option_code |
String | equals, contains, starts_with, ends_with |
The code of the delivery option (e.g. standard, express, pickup). |
delivery_option_handle |
String | equals, contains, starts_with, ends_with |
The Shopify handle of the delivery option. |
delivery_option_title |
String | equals, contains, starts_with, ends_with |
The display title of the delivery option (e.g. Standard Shipping, Express). |
delivery_option_cost |
Number with currency | equals, contains, between |
The cost of the delivery option in the shop’s currency. |
Delivery option conditions are evaluated against each available delivery method. The condition is true if at least one delivery option matches. Turn on all records must match to require every available delivery option to match.
Payment Method
Section titled “Payment Method”Payment method fields read details about each available payment method. These fields are available on payment operations.
| Field | Type | Operators | Reads |
|---|---|---|---|
payment_method_name |
String | equals, contains, starts_with, ends_with |
The name of the payment method (e.g. Credit Card, PayPal, Shop Pay). |
Payment method conditions are evaluated against each available payment method. The condition is true if at least one payment method matches. Turn on all records must match to require every available payment method to match.
Line item
Section titled “Line item”Line item fields read the quantity, value, and weight of the line items in the current scope. They are available on both shipping and payment operations.
| Field | Type | Operators | Reads |
|---|---|---|---|
line_item_value |
Number with currency | equals, contains, between |
The total value of the line items in the current scope, in the shop’s currency. |
line_item_weight |
Number with unit | equals, contains, between |
The total weight of the line items in the current scope, in the unit set on the condition. |
line_item_quantity |
Number (no unit) | equals, contains, between |
The total quantity of the line items in the current scope. |
The scope of a line item condition depends on the operation surface. On shipping operations it reads the line items of the delivery group being evaluated — the shipment — the items that would ship together in one parcel. On payment operations it reads the line items of the entire cart.
The unit on a weight condition is set when the condition is created and does not change if the shop’s default weight unit is updated later. The same applies to the currency on a value condition. To use a different unit or to update the value, edit the operation.
Cart fields read a property of the whole cart, independent of any one delivery group. They are available on both shipping and payment operations.
| Field | Type | Operators | Reads |
|---|---|---|---|
delivery_group_count |
Number (no unit) | between |
The number of delivery groups the cart is split into — the parcels that would ship separately. |
The count is always cart-wide. A checkout that ships everything in one parcel has a count of 1, no matter which delivery group’s context the condition is evaluated in.
Cart line
Section titled “Cart line”Cart line fields read details about each product in the cart. They are available on both shipping and payment operations.
| Field | Type | Operators | Reads |
|---|---|---|---|
product_tags |
String, multi-value | contains |
The tags on each product in the cart. The condition is true if any product in the cart has a tag matching one of the listed values. Use all records must match to require every product in the cart to match. |
product_vendor |
String | equals, contains, starts_with, ends_with |
The vendor of each product in the cart (Product.vendor). |
product_type |
String | equals, contains, starts_with, ends_with |
The product type of each product in the cart (Product.productType). |
product_sku |
String | equals, contains, starts_with, ends_with |
The SKU of the variant on each cart line (ProductVariant.sku). |
A cart-line condition is evaluated per product, not per cart. Use this when you want a rule that fires when a single matching product is in the cart, regardless of the rest of the cart’s contents.
Products with no vendor, product type, or SKU — and custom-product cart lines, which carry none of these fields — never match a positive condition and always match a negated one. For example, “vendor is not Acme” covers products with no vendor.
Filtering a condition’s records
Section titled “Filtering a condition’s records”Some conditions can narrow the records they evaluate before running: a parent condition with filters checks only the records that pass every filter. Filtering is available on shipping operations and requires the Pro plan. See Conditions for how filters work.
The parent fields that support filters and the child fields allowed inside them:
| Parent field | Filters | Allowed child fields |
|---|---|---|
product_tags |
Products in the cart | product_tags, product_vendor, product_type, product_sku |
line_item_value |
Products in the cart | product_tags, product_vendor, product_type, product_sku |
line_item_weight |
Products in the cart | product_tags, product_vendor, product_type, product_sku |
line_item_quantity |
Products in the cart | product_tags, product_vendor, product_type, product_sku |
product_vendor |
Products in the cart | product_tags, product_vendor, product_type, product_sku |
product_type |
Products in the cart | product_tags, product_vendor, product_type, product_sku |
product_sku |
Products in the cart | product_tags, product_vendor, product_type, product_sku |
delivery_option_title |
Delivery options | delivery_option_title, delivery_option_code, delivery_option_handle, delivery_option_cost |
delivery_option_code |
Delivery options | delivery_option_title, delivery_option_code, delivery_option_handle, delivery_option_cost |
delivery_option_handle |
Delivery options | delivery_option_title, delivery_option_code, delivery_option_handle, delivery_option_cost |
delivery_option_cost |
Delivery options | delivery_option_title, delivery_option_code, delivery_option_handle, delivery_option_cost |
A filter child condition reads its field the same way the field does at top level: the operators, value types, and units are identical. Filter conditions are evaluated per record, and a record is kept only when it passes every filter condition. When a line item field is filtered, its aggregate is recomputed from the surviving products. Filters are one level deep.
Operator reference
Section titled “Operator reference”| Operator | Works on | Behaviour |
|---|---|---|
equals |
String, Number | The field equals exactly one of the listed values. |
contains |
String, Number, Multi-value string | The field contains one of the listed values. For multi-value string fields (tags), it’s true if any of the values match. |
between |
Number | The field is in the inclusive range [start, end]. Either bound can be left blank for an open-ended range. |
starts_with |
String | The field starts with one of the listed values. |
ends_with |
String | The field ends with one of the listed values. |
See also
Section titled “See also”- Conditions — how conditions combine, negation, and the all-records-must-match toggle.
- Hide shipping rates — see conditions used in context.