Skip to content

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.

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

equals on a destination field is exact-match against the code. contains is useful for postcode prefixes (e.g. all SW* London postcodes).

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

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 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.
  • Conditions — how conditions combine, negation, and the all-records-must-match toggle.
  • Hide shipping rates — see conditions used in context.