Condiciones en Shopify Flow

Las condiciones hacen que un flujo de trabajo continúe cuando se cumplen ciertas reglas, como el inicio de una instrucción if-then. Cuando configuras una condición, eliges criterios de los campos de la GraphQL Admin API (por ejemplo, product.title), un operador lógico (por ejemplo, igual a) y un valor con el que comparar (por ejemplo, Blue jeans). Cuando un flujo de trabajo evalúa una condición, Flow compara el valor definido en el flujo de trabajo con el valor devuelto para la tienda y luego muestra los resultados en workflow run. Para entender mejor los campos y valores disponibles para definir condiciones, aprende a preview store data.

Más información sobre understanding the basics of conditions.

Tipos de datos que usa Flow

Cuando configuras una condición, eliges un criterio de los campos disponibles en la Admin API y Flow lo compara con el valor devuelto para la tienda.

Flow admite los siguientes tipos de datos:

  • Flotante: Los valores flotantes son números con decimales. Por ejemplo, 4,25.
  • Entero: Los valores enteros son números sin decimales. Por ejemplo, 42.
  • Fecha: Los valores de fecha son una representación numérica de la fecha. Por ejemplo, 01012021.
  • Cadena: Los valores de cadena son texto. Las comparaciones con valores de cadena no distinguen mayúsculas y minúsculas.
  • Booleano: Los valores booleanos son verdadero o falso.
  • Enumeración: Los valores de enumeración son conjuntos de datos que permiten que una variable tome uno de varios valores predefinidos.

Operadores lógicos

Los operadores lógicos definen cómo se aplica la condición. Las condiciones pueden verificar propiedades simples, como si el total de un pedido supera un determinado importe o si se aceptan comunicaciones de marketing. Los operadores lógicos también pueden verificar propiedades más complejas.

Los operadores pueden ser operadores a nivel de campo, como igual a o no es igual a, u operadores de lista, como al menos uno de o ninguno de.

Operadores a nivel de campo

Los operadores a nivel de campo se usan para comparar dos valores. Flow puede usar los siguientes operadores:

Lista de operadores a nivel de campo disponibles en Shopify Flow.
OperadorDescripciónEjemplo
Igual a Compara valores para verificar si son iguales. El valor de order.currentTotalDiscountsSet.shopMoney.amount se obtiene de los datos de tu tienda y se compara con el segundo valor, 50.

Si el total de los descuentos del pedido es exactamente 50, entonces la condición es verdadera.
No es igual a Compara valores para verificar que no sean iguales. El valor de order.currentTotalDiscountsSet.shopMoney.amount se obtiene de los datos de tu tienda y se compara con el segundo valor, 50.

Si el total de los descuentos del pedido no es exactamente 50, entonces la condición es verdadera.
Mayor que y Mayor o igual que Compara valores para verificar si el primer valor es mayor que, o mayor o igual que, el segundo valor. El valor de order.currentTotalDiscountsSet.shopMoney.amount se obtiene de los datos de tu tienda y se compara con el segundo valor, 50.

Si el valor del total de los descuentos del pedido es 137, entonces la condición es verdadera, porque 137 es mayor que 50.
Menor que y Menor o igual que Compara valores para verificar si el primer valor es menor que, o menor o igual que, el segundo valor. El valor de order.currentTotalDiscountsSet.shopMoney.amount se obtiene de los datos de tu tienda y se compara con el segundo valor, 50.

Si el total de los descuentos del pedido es 47, entonces la condición es verdadera, porque 47 es menor o igual a 50.
Al menos uno de Comprueba si el campo es igual a alguno de los valores de la lista proporcionada. Los valores deben introducirse individualmente y confirmarse con la tecla Enter (similar a las etiquetas). Usarlo con una lista vacía da como resultado una evaluación falsa. El valor de order.lineitem.product.title se compara con: pineapple, guava, kiwi.

Si el nombre del producto de la línea de artículo es guava, entonces la condición es verdadera, porque "guava" se incluye en la lista que proporcionaste.
Ninguno de Comprueba si el campo no es igual a ninguno de los valores de la lista proporcionada. El valor de order.lineitem.product.title se compara con: pineapple, guava, kiwi.

Si el nombre del producto de la línea de artículo es raspberry, entonces la condición es verdadera, porque "raspberry" no se incluye en la lista que proporcionaste.
Incluye Compara valores para verificar si el primer valor incluye los datos del segundo valor. El valor de order.lineitem.product.title se compara con: berry.

Si el nombre del producto de la línea de artículo es strawberry, entonces la condición es verdadera, porque "berry" se incluye en "strawberry".
No incluye Compara valores para verificar si el primer valor no incluye los datos del segundo valor. El valor de order.lineitem.product.title se compara con: berry.

Si el nombre del producto de la línea de artículo es apple, la condición es verdadera, porque "berry" no está incluido en "apple".
Empieza con Compara valores para verificar si el primer valor empieza con el contenido del segundo valor. El valor de order.shippingAddress.country se compara con: United.

Si el país de la dirección de envío del pedido es United Kingdom, la condición es verdadera, porque "United Kingdom" comienza con "United".
No empieza con Compara valores para verificar si el primer valor no empieza con el contenido del segundo valor. El valor de order.shippingAddress.country se compara con: United.

Si el país de la dirección de envío del pedido es Canada, la condición es verdadera, porque "United Kingdom" no comienza con "Canada".
Termina con Compara valores para verificar si el primer valor termina con el contenido del segundo valor. El valor de order.lineitems.product.title se compara con: pie.

Si el nombre del producto de la línea de artículo es key lime pie, la condición es verdadera, porque "key lime pie" termina con "pie".
No termina con Compara valores para verificar si el primer valor no termina con el contenido del segundo valor. El valor de order.lineitems.product.title se compara con: pie.

Si el nombre del producto de la línea de artículo es chocolate cake, la condición es verdadera, porque "chocolate cake" no termina con "pie".

Operadores para valores nulos o vacíos

Lista de operadores para valores nulos y vacíos en las condiciones de Shopify Flow.
OperadorDescripciónCondición de verdadero/falso
Vacío o no existeVerifica si un campo está vacío (no tiene valor) o no existe (es null). Devuelve true cuando el campo está vacío o es null, y false si está presente.
No está vacío y existeVerifica si un campo está presente y no está vacío ni es null. Devuelve true cuando el campo no está vacío y existe, y false cuando está vacío.

Operadores de lista

Los operadores de lista se combinan con operadores a nivel de campo para verificar condiciones sobre datos incluidos en listas.

Como en el ejemplo de "al menos uno", quizá quieras comprobar si un pedido contiene un producto específico (ubicado en order.lineItems) con una etiqueta específica (una lista en order.lineItems.product.tags). En ambos casos, el ejemplo usa el operador de lista al menos uno de.

Shopify Flow ofrece 3 operadores para trabajar con listas: Al menos uno de, Ninguno de y Todos.

Tabla de operadores de lista en las condiciones de Shopify Flow.
OperadorDescripciónEjemplo de uso
Al menos uno deComprueba si algún elemento de la lista coincide con la condición especificada.

Devuelve true si algún elemento de la lista coincide. Si la lista está vacía o ningún elemento coincide, devuelve false.
Verifica si un pedido contiene un producto con una etiqueta específica usando Al menos uno de order line items.product.tags es igual a tagname.
Ninguno deComprueba que ningún elemento de la lista coincida con la condición especificada.

Devuelve true si ninguno de los elementos coincide con la condición. Si la lista está vacía, devuelve true.
Comprueba si un producto no tiene la etiqueta presale usando Ninguna de las etiquetas de producto es igual a presale.

Un error común es intentar negar el operador usando no es igual a. El uso de esta doble negación, Ninguna de las etiquetas de producto no es igual a presale, hace que la condición sea difícil de entender y no sea válida.
TodosComprueba que todos los elementos de la lista coincidan con la condición especificada.

Devuelve true si cada elemento de la lista coincide con la condición.
Verifica si todos los elementos de un pedido tienen un proveedor de producto llamado Acme usando Todos los order line items tienen un product.vendor igual a Acme.

Orden de las condiciones

Puedes crear flujos de trabajo con varias condiciones, y cada una puede generar acciones distintas. El orden de las condiciones importa. La verificación de condiciones empieza al inicio del flujo de trabajo y avanza de forma sistemática por cada condición. Se detiene cuando se cumple una condición.

Este ejemplo usa varias condiciones para comprobar si un cliente reúne los requisitos para un programa de fidelización según el monto total que ha gastado en la tienda. Las condiciones se revisan en el orden en que se muestran:

  1. Si el precio total es mayor que 1.000 USD y el cliente acepta recibir marketing, agrega la etiqueta Gold.
  2. Si el precio total es menor que 1.000 USD, pero mayor que 500 USD, y el cliente acepta recibir marketing, agrega la etiqueta Silver.
  3. Si el precio total es menor que 500 USD, pero mayor que 200 USD, y el cliente acepta recibir marketing, agrega la etiqueta Bronze.

Ejemplo de un flujo de trabajo que verifica el gasto total de un cliente y agrega etiquetas

Combinar varios criterios en una sola condición

Cuando creas una condición, puedes definir varios criterios. Puedes elegir cómo combinar esos criterios para determinar si la condición general es verdadera o falsa.

Si se cumplen todos los criterios

Si seleccionas AND, el resultado solo será verdadero si todos los criterios que definiste son verdaderos.

Por ejemplo, creas un flujo de trabajo para etiquetar a clientes que se encuentran en Canadá y gastan más de 500 USD en un solo pedido.

Ejemplo de un flujo de trabajo que usa la condición Y

El flujo de trabajo etiqueta al cliente solo si se encuentra en Canadá y gasta más de 500 USD en el pedido. Si alguna de estas condiciones no se cumple, no se etiqueta al cliente.

Si se cumple algún criterio

Si seleccionas O, el resultado es verdadero si al menos uno de los criterios que configures es verdadero.

Por ejemplo, crea un flujo de trabajo para etiquetar los pedidos con una recomendación de riesgo de Cancelar o Investigar. Mientras se cumpla una de esas condiciones, se etiqueta el pedido.

Ejemplo de un flujo de trabajo que usa la condición O

Datos estáticos y dinámicos en las condiciones

Por lo general, el segundo valor de una condición es un valor estático ingresado manualmente (por ejemplo, product.title == "tu título"). Este valor se mantiene igual cada vez que se ejecuta el flujo de trabajo.

También puedes usar valores dinámicos si el campo del segundo valor muestra un ícono Editar código. Los valores dinámicos se toman de los datos de la tienda cada vez que se ejecuta el flujo de trabajo. Para usar un valor dinámico, haz clic en el ícono Editar código y selecciona el valor con el que quieres comparar. No todos los campos admiten valores dinámicos.

Por ejemplo, crea un flujo de trabajo que etiqueta un pedido si el país de la dirección de facturación del pedido coincide con el país de la dirección de envío.

Ejemplo de un flujo de trabajo que etiqueta un pedido usando datos RHS para verificar que el país de facturación y el de envío de un cliente sean iguales.

En este ejemplo, tanto el primer valor como el segundo se toman de los datos de la tienda, en lugar de especificar manualmente una cadena estática para comparar el segundo valor. Si el país de la dirección de facturación que proporcionó el cliente es el mismo que el país que proporcionó en la dirección de envío, la condición es verdadera y se etiqueta el pedido.

En ocasiones quizá necesites usar datos dinámicos que tengan un tipo incorrecto. Por ejemplo, podrías necesitar comparar un número almacenado como cadena con otro número. En ese caso, puedes usar la opción Run code para convertir los datos al tipo correcto.

Plantillas

La mayoría de las plantillas en la template library incluyen una condición.

Ejemplos de condiciones

Verificar si al menos un elemento de una lista cumple una condición

Este ejemplo muestra una condición típica que verifica si al menos un elemento de una lista coincide con un valor determinado.

En este caso, la condición verifica si uno de los productos de un pedido tiene la etiqueta presale. Para crear esta condición, debes elegir order / lineItems / product / tags. De forma predeterminada, Flow elige al menos uno de como operador lógico:

Ejemplo del panel de configuración de una condición que muestra una verificación de al menos una etiqueta de producto.

Las partes al menos uno de son list operators y se usan para gestionar las coincidencias en varios elementos de la lista. La parte es igual a es un field-level operator que determina si un único elemento de la lista coincide.

Verificar si ninguno de los elementos de una lista cumple una condición

Este ejemplo muestra una condición típica que verifica si ninguno de los elementos de una lista coincide con un valor determinado. Un problema común a considerar es que las listas pueden estar vacías. Cuando una lista está vacía, la condición se evalúa mediante el operador de lista (en este caso, ninguno de).

En este caso, la condición verifica si ninguna de las etiquetas de producto es igual a foo:

Ejemplo del panel de configuración de una condición que muestra una verificación de que ninguna etiqueta de producto coincide.

La condición devolverá true si (1) no hay etiquetas de producto o (2) ninguna de las etiquetas es foo. De lo contrario, devolverá false.

Verificar si un elemento de una lista cumple varios criterios

Este ejemplo muestra una condición típica que verifica si al menos un elemento de una lista cumple dos criterios distintos.

En este caso, la condición verifica si uno de los productos de un pedido tiene la etiqueta presale y si su productType es clothing.

Ejemplo del panel de configuración de una condición que muestra una verificación de al menos una etiqueta de producto y un productType.

Para crear esta condición, debes:

  1. Elige order / lineItems / product / tags para el primer criterio.
  2. Elige Agregar criterio para el mismo elemento en la lista lineItems. Nota: elegir el elemento de lista incorrecto aquí es un error común.
  3. Elige lineItems_item como objeto de nivel superior y luego product / productType` para el segundo criterio. Nota: elegir el objeto incorrecto aquí también es un error común.
  4. Elige Y para combinar los dos criterios.
  5. Ingresa los valores presale y clothing para los dos criterios.